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;}