首页 > 解决方案 > 升级 MsBuild 版本后 Xamarin Forms Android Linker 问题

问题描述

我们最近将构建版本从 MsBuild 15(来自 Visual Studio 2017)更新到 MsBuild 16(来自 Visual Studio 2019)。

更改后,我们的 Xamarin.Forms.Android 应用程序的发布版本停止构建,而调试和测试版本仍然可以正常构建和运行。罪魁祸首似乎是链接器,它在发布中设置为“仅 SDK”,在其他配置中设置为关闭,链接器设置为关闭发布版本也可以工作,但 apk 大小翻倍。

这是我在详细设置为诊断时收到的错误消息,它基本上说重复的键被插入到字典中,但没有别的

C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(2056,5): error XALNK7004: System.ArgumentException: Ein Element mit dem gleichen Schlssel wurde bereits hinzugefuegt. [C:\Projekte\AuditDb\AuditApp\AuditApp.Android\AuditApp.Android.csproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(2056,5): error XALNK7004:    bei System.ThrowHelper.ThrowArgumentException(ExceptionResource resource) [C:\Projekte\AuditDb\AuditApp\AuditApp.Android\AuditApp.Android.csproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(2056,5): error XALNK7004:    bei System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add) [C:\Projekte\AuditDb\AuditApp\AuditApp.Android\AuditApp.Android.csproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(2056,5): error XALNK7004:    bei System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable`1 source, Func`2 keySelector, Func`2 elementSelector, IEqualityComparer`1 comparer) [C:\Projekte\AuditDb\AuditApp\AuditApp.Android\AuditApp.Android.csproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(2056,5): error XALNK7004:    bei MonoDroid.Tuner.MarkJavaObjects.GetTypesInModule(ModuleDefinition module) [C:\Projekte\AuditDb\AuditApp\AuditApp.Android\AuditApp.Android.csproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(2056,5): error XALNK7004:    bei MonoDroid.Tuner.MarkJavaObjects.FindType(TypeDefinition type, String fullname) [C:\Projekte\AuditDb\AuditApp\AuditApp.Android\AuditApp.Android.csproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(2056,5): error XALNK7004:    bei MonoDroid.Tuner.MarkJavaObjects.GetHelperType(TypeDefinition type, String suffix) [C:\Projekte\AuditDb\AuditApp\AuditApp.Android\AuditApp.Android.csproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(2056,5): error XALNK7004:    bei MonoDroid.Tuner.MarkJavaObjects.PreserveAdapter(TypeDefinition type) [C:\Projekte\AuditDb\AuditApp\AuditApp.Android\AuditApp.Android.csproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(2056,5): error XALNK7004:    bei MonoDroid.Tuner.MarkJavaObjects.PreserveJavaObjectImplementation(TypeDefinition type) [C:\Projekte\AuditDb\AuditApp\AuditApp.Android\AuditApp.Android.csproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(2056,5): error XALNK7004:    bei MonoDroid.Tuner.MarkJavaObjects.ProcessType(TypeDefinition type) [C:\Projekte\AuditDb\AuditApp\AuditApp.Android\AuditApp.Android.csproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(2056,5): error XALNK7004:    bei Mono.Tuner.SubStepDispatcher.DispatchType(TypeDefinition type) [C:\Projekte\AuditDb\AuditApp\AuditApp.Android\AuditApp.Android.csproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(2056,5): error XALNK7004:    bei Mono.Tuner.SubStepDispatcher.BrowseTypes(ICollection types) [C:\Projekte\AuditDb\AuditApp\AuditApp.Android\AuditApp.Android.csproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(2056,5): error XALNK7004:    bei Mono.Tuner.SubStepDispatcher.BrowseAssemblies(IEnumerable`1 assemblies) [C:\Projekte\AuditDb\AuditApp\AuditApp.Android\AuditApp.Android.csproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(2056,5): error XALNK7004:    bei Mono.Tuner.SubStepDispatcher.Process(LinkContext context) [C:\Projekte\AuditDb\AuditApp\AuditApp.Android\AuditApp.Android.csproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(2056,5): error XALNK7004:    bei Mono.Linker.Pipeline.ProcessStep(LinkContext context, IStep step) [C:\Projekte\AuditDb\AuditApp\AuditApp.Android\AuditApp.Android.csproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(2056,5): error XALNK7004:    bei Mono.Linker.Pipeline.Process(LinkContext context) [C:\Projekte\AuditDb\AuditApp\AuditApp.Android\AuditApp.Android.csproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(2056,5): error XALNK7004:    bei MonoDroid.Tuner.Linker.Process(LinkerOptions options, ILogger logger, LinkContext& context) [C:\Projekte\AuditDb\AuditApp\AuditApp.Android\AuditApp.Android.csproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(2056,5): error XALNK7004:    bei Xamarin.Android.Tasks.LinkAssemblies.Execute(DirectoryAssemblyResolver res) [C:\Projekte\AuditDb\AuditApp\AuditApp.Android\AuditApp.Android.csproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(2056,5): error XALNK7004:    bei Xamarin.Android.Tasks.LinkAssemblies.RunTask() [C:\Projekte\AuditDb\AuditApp\AuditApp.Android\AuditApp.Android.csproj]
C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(2056,5): error XALNK7004:    bei Xamarin.Android.Tasks.AndroidTask.Execute() [C:\Projekte\AuditDb\AuditApp\AuditApp.Android\AuditApp.Android.csproj]

任何有关如何进一步调查该问题的提示将不胜感激。

标签: c#androidxamarin.formsmsbuild

解决方案


推荐阅读