Hacking around I managed to both a) identify the problem plugins, and b) make the build tool immune to this crash.
我设法识别了问题插件,并使构建工具免受此崩溃的影响。
- Open C:\Program Files\Epic Games\UE_5.4\Engine\Source\Programs\UnrealBuildTool\UnrealBuildTool.sln in Visual Studio
 打开 Visual Studio 中的 C:\Program Files\Epic Games\UE_5.4\Engine\Source\Programs\UnrealBuildTool\UnrealBuildTool.sln
- Make Configuration/ModuleRules.cs writable
 设置 Configuration/ModuleRules.cs 可写
- Find the IsValidForTarget method
 找到 IsValidForTarget 方法
- Replace the first line of code with the code below.
 将第一行代码替换为以下代码。
- Compile with Build → Build Solution (make sure it completes ok and says it's updated the C:\Program Files\Epic Games\UE_5.4\Engine\Binaries\DotNET\UnrealBuildTool\UnrealBuildTool.dll file.
 编译时使用构建 → 构建解决方案(确保它完成并显示已更新 C:\Program Files\Epic Games\UE_5.4\Engine\Binaries\DotNET\UnrealBuildTool\UnrealBuildTool.dll 文件)。
- Attempt to build your project/plugin again
 尝试再次构建您的项目/插件
- Look in the "C:\Users_yourusername \AppData\Roaming\Unreal Engine\AutomationTool\Logs\C+Program+Files+Epic+Games+UE_5.4" or similar folder for the .txt file with the long name.
 查看"C:\Users_yourusername\AppData\Roaming\Unreal Engine\AutomationTool\Logs\C+Program+Files+Epic+Games+UE_5.4"或类似文件夹中的长名.txt 文件。
- In it search for "Does not support" and see if the new code has triggered. The start of the line will tell you the plugin.
 在搜索"不支持"并查看新代码是否已触发。行的开头会告诉你插件。
IEnumerable<TargetType> supportedTargetTypes = new TargetType[] { }; try{supportedTargetTypes = moduleType .GetCustomAttributes<SupportedTargetTypesAttribute>().SelectMany(x => x.TargetTypes).Distinct();}catch{string module_name = (moduleType != null) ? moduleType.Name : "<null>"; invalidReason = $"TargetType '{targetRules.Type}' : Failed to get SupportedTargetTypesAttribute from '{module_name}'"; return false;}