UWP .NET Native Issue

Я использую Prism 6 для UWP и Microsoft.NetCore.Uwp 5.2.2. Я столкнулся с проблемой в версии выпуска, что я не могу использовать отражение.

У меня есть такие предметы как IDictionary<string, ReadOnlyCollection<string>>, Как добавить политику в default.rd.xml для них?

2 ответа

Решение

В моем проекте у нас недавно была похожая проблема с IDictionaryсмотрите здесь. Я не знаю, похоже ли сообщение об ошибке на ваше, но решение в нашем случае заключалось в добавлении директив времени выполнения в файл .rd.xml, подобный этому:

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

Я не могу воспроизвести вашу проблему. Я запускаю проект в режиме релиза, который содержит IDictionary<string, ReadOnlyCollection<string>> объекты, и я не встречаю никаких ошибок или исключений. Моя версия ОС - сборка 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 файл конфигурации, пожалуйста, обратитесь к этой статье. Если вы получили MissingMetadataException в некоторых сценариях рефлексии вы можете следить за этим блогом, чтобы решить вашу проблему.

Другие вопросы по тегам