UWP .NET 本机问题

UWP .NET Native Issue

我将 Prism 6 用于 UWP 和 Microsoft.NetCore.Uwp 5.2.2。我在发布版本中遇到无法使用反射的问题。

我有IDictionary<string, ReadOnlyCollection<string>>这样的对象。如何在 default.rd.xml 中为他们添加策略?

我无法重现您的问题。我 运行 一个包含 IDictionary<string, ReadOnlyCollection<string>> 对象的发布模式下的项目,我没有遇到任何错误或异常。我的 OS 版本是 build 14393,我在本地机器上测试过它。

由于我不确定你遇到了什么错误或异常,你可以尝试将以下集合相关策略添加到default.rd.xml

<Assembly Name="*Application*" Dynamic="Required All" />    

<!--Add your application specific runtime directives here.--> 
<Namespace Name="System.Collections.ObjectModel" >
 <TypeInstantiation Name="ReadOnlyCollection" 
       Arguments="ContosoClient.DataModel.ProductGroup" Serialize="Public"/> 
 <TypeInstantiation Name="ObservableCollection"
       Arguments="ContosoClient.DataModel.ProductItem" Serialize="Public" />
 <TypeInstantiation Name="ReadOnlyObservableCollection"
       Arguments="ContosoClient.DataModel.ProductGroup" Serialize="Public" />     
</Namespace>

有关 rd.xml 配置文件的更多详细信息,请参考 this article. If you got the MissingMetadataException in some reflection scenarios you can follow this blog 以解决您的问题。

在我的项目中,我们最近遇到了与 IDictionary 类似的问题,请参阅 here。我不知道错误消息是否与您的类似,但我们的解决方案是在 .rd.xml 文件中添加类似于此的运行时指令:

<Type Name="System.Collections.Generic.IDictionary{System.String,System.Collections.ObjectModel.ReadOnlyCollection{System.String}}" MarshalStructure="Excluded" />