2016-10-05 3 views
0

У меня есть решение с двумя проектами UWP. Одна из них - это библиотека с общим кодом, а другая - обычное приложение UWP, которое ссылается на библиотеку.Чистая собственная инструментальная цепочка не может решить тип System.Collections.Generic.ISet

Я успешно разработал приложение, запускающее его в режиме отладки. Теперь я должен упаковать его в магазин, вот в чем проблема NET.

Когда я скомпилировать его в режиме выпуска, я получаю следующую ошибку

C:\Program Files (x86)\MSBuild\Microsoft\.NetNative\x64\ilc\IlcInternals.targets(936,5): error : 
System.TypeLoadException: Could not resolve type 'System.Collections.Generic.ISet`1'. 
in System.TypeNameParser.ResolveType(Assembly assembly, String[] names, Func`4 typeResolver, Boolean throwOnError, Boolean ignoreCase, StackCrawlMark& stackMark) 
in System.TypeNameParser.ConstructType(Func`2 assemblyResolver, Func`4 typeResolver, Boolean throwOnError, Boolean ignoreCase, StackCrawlMark& stackMark) 
in System.TypeNameParser.GetType(String typeName, Func`2 assemblyResolver, Func`4 typeResolver, Boolean throwOnError, Boolean ignoreCase, StackCrawlMark& stackMark) 
in System.Type.GetType(String typeName, Func`2 assemblyResolver, Func`4 typeResolver, Boolean throwOnError) 
in System.Reflection.Adds.TypeNameParser.ParseTypeName(ITypeUniverse universe, Module module, String input, Boolean throwOnError) 
in Microsoft.MetadataReader.MetadataExtensionsPolicy20.TryTypeForwardResolution(MetadataOnlyAssembly assembly, String fullname, Boolean ignoreCase) 
in Microsoft.MetadataReader.MetadataOnlyAssembly.GetType(String name, Boolean throwOnError, Boolean ignoreCase) 
in Microsoft.MetadataReader.MetadataOnlyAssembly.GetType(String name, Boolean throwOnError) 
in SerializationAssemblyGenerator.Program.TraverseTypes(GeneratorSettings settings, Dictionary`2& dataContracts, Dictionary`2& jsonDataContracts, List`1& xmlSerializerTypes) 
in SerializationAssemblyGenerator.Program.Main(String[] args) 

Я использую Исеть много, так что естественно она ссылается. У меня установлен пакет Microsoft.NETCore.UniversalWindowsPlatform версии 5.2.2, поэтому я предполагаю, что он доступен здесь. Я попытался понизить до версии 5.1, но я получаю ту же ошибку. То же самое, если я устанавливаю пакет System.Collections.

+0

'System.Collections.Generic.ISet' - пространство имен, используемое для приложения silverlight, оно не может использоваться в UWP. Почему вы хотите использовать это? –

+0

Он работает над сборками Debug, поэтому он существует в UWP –

+0

Чтобы подробно описать мой комментарий. Несколько лет назад я был сильно вызван NHibernate, чтобы объявить все как интерфейс, а не явную реализацию. Поэтому я предпочитаю использовать интерфейс как параметр, или свойство, или что-то еще. Я нашел это полезным, и я должен быть не единственным, поскольку абстракции существуют в рамках. –

ответ

0

Итак, я наконец-то заработал. Это включало запуск другой библиотеки и перемещение кода с оригинала, использование я поймал проблематичный класс. Очень скучно, поскольку Net Native является soooooo slooooow.

И преступник был:

private async Task Serialize(ISet<Server> data) 

эта небольшая функция сериализовать коллекцию настроек с помощью MemoryStream и DataContractJsonSerializer.

Когда я изменил подпись

private async Task Serialize(HashSet<Server> data) 

работал как шарм.

Надеюсь, что это поможет кому-то в будущем.