2016-10-05 2 views
0

nicht auflösen Ich habe eine Lösung mit zwei UWP-Projekten. Eine ist eine Bibliothek mit gemeinsamem Code und die andere ist eine reguläre UWP-App, die auf die Bibliothek verweist.Net native Toolchain kann Typ System.Collections.Generic.ISet

Ich habe erfolgreich die App im Debug-Modus entwickelt. Jetzt muss ich es in den Laden packen, da hat NET mir Ärger gemacht.

Als ich es im Release-Modus kompilieren bekomme ich folgende Fehler

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) 

Ich benutze ISet viel, so dass es natürlich ist es referenziert wird. Ich habe das Microsoft.NETCore.UniversalWindowsPlatform-Paket Version 5.2.2 installiert, daher nehme ich an, dass es hier verfügbar ist. Ich habe versucht, auf Version 5.1 herunterzustufen, aber ich bekomme den gleichen Fehler. Gleiches, wenn ich das System.Collections-Paket installiere.

+0

'System.Collections.Generic.ISet' ist ein Namespace, der für die Silverlight-App verwendet wird und in UWP nicht verwendet werden kann. Warum willst du das benutzen? –

+0

Es funktioniert auf Debug-Builds, so dass es in UWP –

+0

existiert Um meinen Kommentar zu vertiefen. Vor Jahren wurde ich stark von NHibernate dazu veranlasst, alles als Schnittstelle zu deklarieren, nicht die explizite Implementierung. Daher tendiere ich dazu, eine Schnittstelle als Parameter, Eigenschaft oder was auch immer zu benötigen. Ich fand es nützlich, und ich muss nicht der einzige sein, da die Abstraktionen im Rahmen existieren. –

Antwort

0

Also, ich habe es endlich geschafft. Es beinhaltete das Starten einer anderen Bibliothek und das Verschieben von Code aus dem Original, util ich fing die problematische Klasse. Sehr langweilig wie Net Native ist soooooooooooooo.

Und der Schuldige war:

private async Task Serialize(ISet<Server> data) 

diese kleine Funktion eine Vorlieben Sammlung mit einem Memorystream und DataContractJsonSerializer serialisiert.

Wenn ich die Signatur

verändert wie ein Zauber
private async Task Serialize(HashSet<Server> data) 

gearbeitet.

Hoffe das hilft jemand in der Zukunft.