我正在尝试编译一个UWP应用程序,该应用程序从VS 2017中的Nuget包引用Unity(针对WSA / UWP的Unity构建)。一切都编译好,而不使用“使用.NET Native工具链编译”。但是当我启用.NET Native时,我遇到了这些错误:
1> C:\ Users \ user.nuget \ packages \ microsoft.net.native.compiler \ 1.6.3 \ tools \ Microsoft.NetNative.targets(700,5):警告:ILTransform:警告ILT0003:方法' NetworkCRC.ReinitializeScriptCRCs(Assembly)'将始终抛出异常,因为缺少方法'TypeExtensions.GetMethod(Type,string,BindingFlags)'。可能缺少装配。 1> C:\ Users \ user.nuget \ packages \ microsoft.net.native.compiler \ 1.6.3 \ tools \ Microsoft.NetNative.targets(700,5):错误:内部编译器错误:对象引用未设置为对象的实例。 1> C:\ Users \ user.nuget \ packages \ microsoft.net.native.compiler \ 1.6.3 \ tools \ Microsoft.NetNative.targets(700,5):错误:方法'NetworkCRC.ReinitializeScriptCRCs(Assembly)'将由于缺少方法'TypeExtensions.GetMethod(Type,string,BindingFlags)',总是抛出异常。可能有一个组装缺失。
NetworkCRC.ReinitializeScriptCRCs()来自UnityEngine.Networking.dll。我没有在我的代码中使用NetworkCRC.ReinitializeScriptCRCs()。
从这里的答案: UWP - .NET Native tool chain compilation error
编译器在编译时遍历整个应用程序,以便为它认为你要调用的所有内容生成本机代码。
这解释了这是怎么回事。我发现了其他类似的问题: https://social.msdn.microsoft.com/Forums/sqlserver/en-US/20d3040a-c85c-4549-85a5-972d8686cc7a/uwpcant-compile-uwp-app-with-net-native-in-release-mode?forum=wpdevelop
我还找到了rd.xml文件的帮助:https://docs.microsoft.com/en-us/dotnet/framework/net-native/runtime-directives-rd-xml-configuration-file-reference
问题:
我知道Unity在编译时会做很多奇怪的事情来组装程序集,但是由于反射等原因,Unity是否可能缺少对另一个程序集的引用?
PS:我知道删除:
<Assembly Name="*Application*" Dynamic="Required All" />
来自Default.rd.xml的将修复编译问题。我想知道如何应用更有针对性的方法。