UWP和net native引发FileNotFoundException

UWP和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

我正在开发一个UWP,它在调试模式下工作得非常完美,当我在发布模式下编译它时,它编译时没有错误,但是当我运行应用程序时,我有一个进程使用.Net标准2.0库中的函数,该库抛出System.IO.FileNotFoundException System.Security。找不到此程序集的元数据

这是我的rd.xml

<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");