UWP和net native引发FileNotFoundException
我正在开发一个UWP,它在调试模式下工作得非常完美,当我在发布模式下编译它时,它编译时没有错误,但是当我运行应用程序时,我有一个进程使用.Net标准2.0库中的函数,该库抛出System.IO.FileNotFoundException System.Security。找不到此程序集的元数据 这是我的rd.xmlUWP和net native引发FileNotFoundException,uwp,filenotfoundexception,.net-standard,.net-native,Uwp,Filenotfoundexception,.net Standard,.net Native,我正在开发一个UWP,它在调试模式下工作得非常完美,当我在发布模式下编译它时,它编译时没有错误,但是当我运行应用程序时,我有一个进程使用.Net标准2.0库中的函数,该库抛出System.IO.FileNotFoundException System.Security。找不到此程序集的元数据 这是我的rd.xml <Directives xmlns="http://schemas.microsoft.com/netfx/2013/01/metadata"> <Applica
<Directives xmlns="http://schemas.microsoft.com/netfx/2013/01/metadata">
<Application>
<!--
An Assembly element with Name="*Application*" applies to all assemblies in
the application package. The asterisks are not wildcards.
-->
<Assembly Name="*Application*" Dynamic="Required All" />
<!-- Add your application specific runtime directives here. -->
<Assembly Name="System.Runtime" Dynamic="Required All" />
<Assembly Name="System.Security" Dynamic="Required All" />
<Type Name="Windows.Foundation.TypedEventHandler{Microsoft.UI.Xaml.Controls.NavigationView,Microsoft.UI.Xaml.Controls.NavigationViewItemInvokedEventArgs}" MarshalObject="Public" />
<Type Name="Microsoft.UI.Xaml.Controls.NavigationView">
<Event Name="ItemInvoked" Dynamic="Required"/>
</Type>
<Type Name="System.Configuration.AppSettingsSection" Serialize="Required Public" />
</Application>
</Directives>
尽管这个很好用
Assembly cripXmlAssembly = Assembly.Load("System.Security.Cryptography.Xml");
我读过关于向RD.xml文件添加指令的内容,但我认为这适用于UWP,在本例中,网络标准dll引发了异常。有人能解释一下吗
这是一份复印件
通过讨论,我们发现CoreRT中不支持程序集的动态加载(这是使用.NET本机工具链在发行版中编译应用程序时使用的运行时): 我们知道,在发布模式下构建时,.NET native用于UWP应用程序。 由此: 将CoreRT与UTC编译器结合使用,以 为UWP应用程序提供本机编译. 由此: 不支持的功能:(例如,Assembly.LoadFile), (例如,系统反射、发射), (例如,COM、WinRT) 还提到目前这在CoreRT中是不可能的
事实上,唯一可以“加载”的程序集是那些静态链接到运行的本机进程中的程序集。通过讨论,我们发现CoreRT中不支持动态加载程序集(这是使用.NET本机工具链在发行版中编译应用程序时使用的运行时): 我们知道,在发布模式下构建时,.NET native用于UWP应用程序。 由此: 将CoreRT与UTC编译器结合使用,以 为UWP应用程序提供本机编译. 由此: 不支持的功能:(例如,Assembly.LoadFile), (例如,系统反射、发射), (例如,COM、WinRT) 还提到目前这在CoreRT中是不可能的
事实上,唯一可以“加载”的程序集是那些静态链接到正在运行的本机进程中的程序集。是的,这正是您需要测试.NETNative生成和编辑rd.xml的原因。当你不显示任何内容时,你无法得到具体的建议。感谢你的回答,我更新了问题。当我添加行
Assembly.Load(“System.Security,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”)时,我创建了一个空白的UWP项目和一个类库(.Net Standard 2.0)代码>在类库中并调用它,它工作得很好。那么您使用的是什么体系结构呢?如果您创建一个空白应用程序来使用它,是否会发生相同的错误?你能提供一个可以复制的简单样品吗?我附上一个复制这个问题的样品。你试过用realese模式吗?我使用x64作为目标。是的,这正是您需要测试.NETNative构建和编辑rd.xml的原因。当你不显示任何内容时,你无法得到具体的建议。感谢你的回答,我更新了问题。当我添加行Assembly.Load(“System.Security,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”)时,我创建了一个空白的UWP项目和一个类库(.Net Standard 2.0)代码>在类库中并调用它,它工作得很好。那么您使用的是什么体系结构呢?如果您创建一个空白应用程序来使用它,是否会发生相同的错误?你能提供一个可以复制的简单样品吗?我附上一个复制这个问题的样品。你试过用realese模式吗?我使用x64作为目标。非常感谢您澄清此问题。虽然对我来说很奇怪,它在一种模式下工作,而在另一种模式下不工作。这是一个可能的解决办法,但我不确定它是否能满足你的需要。例如,如果不需要浏览Microsoft应用商店,可以部署调试包或禁用.NET本机的包。这对大多数人都没有帮助,但对于利基部署来说,它可以帮助缩小差距。非常感谢你澄清这个问题。虽然对我来说很奇怪,它在一种模式下工作,而在另一种模式下不工作。这是一个可能的解决办法,但我不确定它是否能满足你的需要。例如,如果不需要浏览Microsoft应用商店,可以部署调试包或禁用.NET本机的包。这对大多数人都没有帮助,但对于利基部署来说,它可以帮助缩小差距。
Assembly cripXmlAssembly = Assembly.Load("System.Security.Cryptography.Xml");