.Net Native编译错误:由于缺少方法,Type.method将始终抛出异常

时间:2017-09-28 03:07:57

标签: .net native

我正在尝试编译一个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

问题:

  • 我可以告诉.NET native只是忽略一个特定的类型或方法 rd.xml文件?如果没有,我可以提供有关如何处理该方法的.NET Native提示吗?
  • 这是NetworkCRC.ReinitializeScriptCRCs还是TypeExtensions.GetMethod?
  • 的问题?
  • 我的VS Project中的rd.xml中的修复是否适用于nuget包中的程序集,或者我是否需要根据此线程How to properly include an rd.xml file in a NuGet package?
  • 将这些修复应用于程序包内的xml文件

我知道Unity在编译时会做很多奇怪的事情来组装程序集,但是由于反射等原因,Unity是否可能缺少对另一个程序集的引用?

PS:我知道删除:

<Assembly Name="*Application*" Dynamic="Required All" />
来自Default.rd.xml的

将修复编译问题。我想知道如何应用更有针对性的方法。

0 个答案:

没有答案
相关问题