UE(虚幻)学习(六)插件打包在UE5.3.2下Value cannot be null的错误

自己写的插件打包出现了Unhandled exception: System.ArgumentNullException: Value cannot be null.的错误,发现只有UE5.3会报出。

cpp 复制代码
D:\UE_5.3\Engine\Build\BatchFiles>Runuat.bat BuildPlugin -Plugin=F:\UEProjects\DQSDK5_3\Plugins\DQSDK\DQSDK.uplugin -Package=D:\1 -Rocket
Running AutomationTool...
Using bundled DotNet SDK version: 6.0.302
Starting AutomationTool...
Parsing command line: BuildPlugin -Plugin=F:\UEProjects\DQSDK5_3\Plugins\DQSDK\DQSDK.uplugin -Package=D:\1 -Rocket
Initializing script modules...
Total script module initialization time: 0.14 s.
Executing commands...
Copying 35 file(s) using max 64 thread(s)
Reading plugin from D:\1\HostProject\Plugins\DQSDK\DQSDK.uplugin...
Building plugin for host platforms: Win64
Running: D:\UE_5.3\Engine\Binaries\ThirdParty\DotNet\6.0.302\windows\dotnet.exe "D:\UE_5.3\Engine\Binaries\DotNET\UnrealBuildTool\UnrealBuildTool.dll" UnrealEditor Win64 Development -Project="D:\1\HostProject\HostProject.uproject" -plugin="D:\1\HostProject\Plugins\DQSDK\DQSDK.uplugin" -noubtmakefiles -manifest="D:\1\HostProject\Saved\Manifest-UnrealEditor-Win64-Development.xml" -nohotreload -log="C:\Users\Administrator\AppData\Roaming\Unreal Engine\AutomationTool\Logs\D+UE_5.3\UBT-UnrealEditor-Win64-Development.txt"
Log file: C:\Users\Administrator\AppData\Roaming\Unreal Engine\AutomationTool\Logs\D+UE_5.3\UBT-UnrealEditor-Win64-Development.txt
Total execution time: 2.18 seconds
Unhandled exception: System.ArgumentNullException: Value cannot be null. (Parameter 'element')
   at System.Attribute.GetCustomAttributes(MemberInfo element, Type attributeType, Boolean inherit)
   at System.Reflection.CustomAttributeExtensions.GetCustomAttributes[T](MemberInfo element)
   at UnrealBuildTool.ModuleRules.IsValidForTarget(Type ModuleType, ReadOnlyTargetRules TargetRules, String& InvalidReason) in D:\UE_5.3\Engine\Source\Programs\UnrealBuildTool\Configuration\ModuleRules.cs:line 1623
   at UnrealBuildTool.UEBuildTarget.AddAllValidModulesToTarget(ILogger Logger) in D:\UE_5.3\Engine\Source\Programs\UnrealBuildTool\Configuration\UEBuildTarget.cs:line 3886
   at UnrealBuildTool.UEBuildTarget.PreBuildSetup(ILogger Logger) in D:\UE_5.3\Engine\Source\Programs\UnrealBuildTool\Configuration\UEBuildTarget.cs:line 3354
   at UnrealBuildTool.UEBuildTarget.Create(TargetDescriptor Descriptor, Boolean bSkipRulesCompile, Boolean bForceRulesCompile, Boolean bUsePrecompiled, UnrealIntermediateEnvironment IntermediateEnvironment, ILogger Logger) in D:\UE_5.3\Engine\Source\Programs\UnrealBuildTool\Configuration\UEBuildTarget.cs:line 1366
   at UnrealBuildTool.BuildMode.CreateMakefileAsync(BuildConfiguration BuildConfiguration, TargetDescriptor TargetDescriptor, ISourceFileWorkingSet WorkingSet, ILogger Logger) in D:\UE_5.3\Engine\Source\Programs\UnrealBuildTool\Modes\BuildMode.cs:line 1114
   at UnrealBuildTool.BuildMode.BuildAsync(List`1 TargetDescriptors, BuildConfiguration BuildConfiguration, ISourceFileWorkingSet WorkingSet, BuildOptions Options, FileReference WriteOutdatedActionsFile, ILogger Logger, Boolean bSkipPreBuildTargets) in D:\UE_5.3\Engine\Source\Programs\UnrealBuildTool\Modes\BuildMode.cs:line 396
   at UnrealBuildTool.BuildMode.ExecuteAsync(CommandLineArguments Arguments, ILogger Logger) in D:\UE_5.3\Engine\Source\Programs\UnrealBuildTool\Modes\BuildMode.cs:line 252
   at UnrealBuildTool.UnrealBuildTool.Main(String[] ArgumentsArray) in D:\UE_5.3\Engine\Source\Programs\UnrealBuildTool\UnrealBuildTool.cs:line 659
Took 2.33s to run dotnet.exe, ExitCode=6
UnrealBuildTool failed. See log for more details. (C:\Users\Administrator\AppData\Roaming\Unreal Engine\AutomationTool\Logs\D+UE_5.3\UBT-UnrealEditor-Win64-Development.txt)
AutomationTool executed for 0h 0m 3s
AutomationTool exiting with ExitCode=6 (6)
BUILD FAILED

解决办法:

在 Visual Studio 中打开 C:\Program Files\Epic Games\UE_5.4\Engine\Source\Programs\UnrealBuildTool\UnrealBuildTool.sln

使 Configuration/ModuleRules.cs 可写

找到 IsValidForTarget 方法

将第一行代码替换为下面的代码。

cpp 复制代码
IEnumerable<TargetType> SupportedTargetTypes = new TargetType[] { };
	InvalidReason = string.Empty;

	try
	{
		SupportedTargetTypes = ModuleType
			.GetCustomAttributes<SupportedTargetTypesAttribute>()
			.SelectMany(x => x.TargetTypes)
			.Distinct();
	}
	catch
	{
		string moduleName = (ModuleType != null) ? ModuleType.Name : "<null>";
		InvalidReason = $"TargetType '{TargetRules.Type}' : Failed to get SupportedTargetTypesAttribute from '{moduleName}'";
		return false;
	}

参考
https://forums.unrealengine.com/t/ubt-bug-no-longer-able-to-compile-plugins-in-standalone-since-5-3/1318659/17

相关推荐
黑科技研究僧几秒前
蘑兔AI的12轨分轨功能:编曲师深度测评
人工智能·经验分享·vscode·学习·新媒体运营·音视频
踏着七彩祥云的小丑9 分钟前
Go 学习第6天:结构体 + 切片 + range遍历
开发语言·学习·golang·go
咸甜适中39 分钟前
rust语言学习笔记Trait(十七)Send、Sync(线程间数据所有权)
笔记·学习·rust
H__Rick43 分钟前
C51学习-DAY7
单片机·嵌入式硬件·学习·51单片机
dtq04241 小时前
C语言刷题函数1-判断素数(分支语句,函数两种方法)
c语言·开发语言·学习
尘汐筠竹1 小时前
Day1-2 学习笔记:在 AMD 云环境上部署 Gemma 4 大模型
笔记·学习·datawhale·amdev
Litluecat1 小时前
配合多角色提示语4,学习AI漫剧(刚开始学)
人工智能·学习·计算机视觉
AOwhisky1 小时前
学习自测与解析:Redis系列第一期与第二期核心知识点详解
运维·数据库·redis·学习·云计算
zhangrelay1 小时前
个体智能大模型使用的主观数据复盘-节选-2026-
笔记·学习·课程设计
lunzi_08261 小时前
【学习笔记】《Python编程 从入门到实践》第9章:类、继承、组合与面向对象编程
笔记·python·学习