У нас есть приложение, которое отлично компилируется без цепочки инструментов .NET Native, но когда мы устанавливаем этот флажок, мы получаем следующие ошибки компиляции (отладка или выпуск):
*Severity Code Description Project File Line Suppression State
Error at SerializationAssemblyGenerator.Program.GenerateDataContractSerializerHelper(IEnumerable`1 contracts, IEnumerable`1 jsonContracts, GeneratorSettings settings, String intermediateAssembly, IEnumerable`1 wcfSerializers) Adapt.Presentation.Helpdesk.UWP C:\Users\chris\.nuget\packages\microsoft.net.native.compiler\1.6.2\tools\Microsoft.NetNative.targets 691
Error at SerializationAssemblyGenerator.Program.Main(String[] args) Adapt.Presentation.Helpdesk.UWP C:\Users\chris\.nuget\packages\microsoft.net.native.compiler\1.6.2\tools\Microsoft.NetNative.targets 691
Error ILT0032: Failed to compile serialization code. See the build log for error details. Adapt.Presentation.Helpdesk.UWP C:\Users\chris\.nuget\packages\microsoft.net.native.compiler\1.6.2\tools\Microsoft.NetNative.targets 691
Error at SerializationAssemblyGenerator.Program.GenerateDataContractSerializerHelperCode(IEnumerable`1 contracts, IEnumerable`1 jsonContracts, IEnumerable`1 wcfSerializers) Adapt.Presentation.Helpdesk.UWP C:\Users\chris\.nuget\packages\microsoft.net.native.compiler\1.6.2\tools\Microsoft.NetNative.targets 691
Error at SerializationAssemblyGenerator.Program.AddKnownContractsLists(McgCodeTypeDeclaration container, ContractTables tables) Adapt.Presentation.Helpdesk.UWP C:\Users\chris\.nuget\packages\microsoft.net.native.compiler\1.6.2\tools\Microsoft.NetNative.targets 691
Error at System.Collections.Generic.Dictionary`2.get_Item(TKey key) Adapt.Presentation.Helpdesk.UWP C:\Users\chris\.nuget\packages\microsoft.net.native.compiler\1.6.2\tools\Microsoft.NetNative.targets 691
Error System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary. Adapt.Presentation.Helpdesk.UWP C:\Users\chris\.nuget\packages\microsoft.net.native.compiler\1.6.2\tools\Microsoft.NetNative.targets 691*
В окне вывода много ошибок. Здесь слишком много для публикации, но вот пара подсказок:
*1> C:\AdaptSource\Xivic\Adapt.Presentation.Helpdesk.UWP\obj\x86\Debug\ilc\in\System.Reflection.Extensions.dll
1> The assembly 'System.Reflection.Metadata.dll' is found in more than one folder.
1> file:///C:/AdaptSource/Xivic/Adapt.Presentation.Helpdesk.UWP/obj/x86/Debug/ilc/in/System.Reflection.Metadata.dll*
Я подумал, что, возможно, вокруг плавают библиотеки DLL, и он не понимал, какую из них использовать, но это все равно происходило даже после полной очистки Git.
Это Default.rd.xml
<Directives xmlns="http://schemas.microsoft.com/netfx/2013/01/metadata">
<Application>
<!--
An Assembly element with Name="*Application*" applies to all assemblies in
the application package. The asterisks are not wildcards.
-->
<Assembly Name="*Application*" Dynamic="Required All" />
<!-- Add your application specific runtime directives here. -->
</Application>
</Directives>
Насколько я понял, это должно включать все типы в нашем решении. Верно ли это предположение?
У меня такое ощущение, что это как-то связано с указанием метаданных для типов, которые существуют в нашем проекте. Здесь есть статья, которая намекает на это: https://docs.microsoft.com/en-us/dotnet/framework/net-native/getting-started-with-net-native. Но я действительно не понимаю, что он просит меня сделать, поэтому я застрял.