2016-10-05 3 views
0

두 개의 UWP 프로젝트가있는 솔루션이 있습니다. 하나는 공유 코드가있는 라이브러리이고 다른 하나는 라이브러리를 참조하는 일반 UWP 앱입니다.네이티브 네이티브 툴체인이 System.Collections.Generic.ISet을 해결할 수 없습니다.

디버그 모드에서 실행중인 앱을 성공적으로 개발했습니다. 이제는 상점에 포장해야합니다. NET에서 문제가 발생했습니다. 내가 릴리스 모드에서 컴파일 할 때

나는 그것이 참조하는 자연 그래서 내가 ISET 많이 사용 다음과 같은 오류를

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'은 실버 라이트 앱에 사용되는 네임 스페이스이므로 UWP에서는 사용할 수 없습니다. 왜 이것을 사용하고 싶습니까? –

+0

디버그 빌드에서 작동하므로 UWP에 있습니다. –

+0

내 의견을 좀 더 자세히 설명합니다. 몇 년 전 나는 NHibernate에 의해 명시 적 구현이 아닌 인터페이스로서 모든 것을 선언하도록 강력하게 유도되었다. 그래서 저는 인터페이스를 매개 변수 나 속성으로 요구하는 경향이 있습니다. 나는 그것이 유용하다는 것을 알았고, 추상화가 프레임 워크에 존재하기 때문에 나는 유일한 것이 아닐 것이다. –

답변

0

그래서 나는 마침내 작동하게 만들었습니다. 그것은 다른 라이브러리를 시작하고 원본에서 코드를 옮기는 작업이었습니다. util 문제가있는 클래스를 잡았습니다. Net Native가 매우 지루해서 너무 슬퍼합니다.

그리고 범인이었다

private async Task Serialize(ISet<Server> data) 

이 작은 기능 MemoryStream을하고 DataContractJsonSerializer를 사용하여 기본 모음을 직렬화. 내가

private async Task Serialize(HashSet<Server> data) 

에 서명을 변경

마법처럼 일했다.

앞으로 도움이되기를 바랍니다.