“LinkAssemblies”任务意外失败。 xamarinandroidException:错误 XA2006:无法解析引用

Posted

技术标签:

【中文标题】“LinkAssemblies”任务意外失败。 xamarinandroidException:错误 XA2006:无法解析引用【英文标题】:The "LinkAssemblies" task failed unexpectedly. xamarinandroidException: error XA2006: could not resolve reference 【发布时间】:2020-11-28 02:02:05 【问题描述】:

我是 Xamarin 的新手,从无法归档 APK for MyApplication.android 项目的存储库中提取了一个项目。如果链接器设置为“无”,它会成功构建,甚至会创建 APK 文件。但是当我尝试在我的设备上安装时,我收到错误“未安装应用程序”

当我将链接器设置为“仅 SDK 程序集”或“SDK 和用户程序集”时,在发布模式下构建时出现以下错误。

无法解析对IAppInformationFinder 的引用,这是在同一解决方案的另一个项目中定义的接口。是的,它已在 .android 项目中被引用。

Error       The "LinkAssemblies" task failed unexpectedly.
Java.Interop.Tools.Diagnostics.XamarinAndroidException: error XA2006: Could not resolve reference to 'StevensPINApplication.Interfaces.IAppInformationFinder' (defined in assembly 'StevensPINApplication, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null') with scope 'StevensPINApplication, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. When the scope is different from the defining assembly, it usually means that the type is forwarded. ---> Mono.Cecil.ResolutionException: Failed to resolve StevensPINApplication.Interfaces.IAppInformationFinder
   at Mono.Linker.Steps.MarkStep.HandleUnresolvedType(TypeReference reference)
   at Mono.Linker.Steps.MarkStep.MarkType(TypeReference reference)
   at MonoDroid.Tuner.MonoDroidMarkStep.MarkType(TypeReference reference)
   at Mono.Linker.Steps.MarkStep.MarkInterfaceImplementation(TypeDefinition type, InterfaceImplementation iface)
   at Mono.Linker.Steps.MarkStep.MarkType(TypeReference reference)
   at MonoDroid.Tuner.MonoDroidMarkStep.MarkType(TypeReference reference)
   at Mono.Linker.Steps.MarkStep.InitializeType(TypeDefinition type)
   at Mono.Linker.Steps.MarkStep.InitializeAssembly(AssemblyDefinition assembly)
   at Mono.Linker.Steps.MarkStep.Initialize()
   at MonoDroid.Tuner.MonoDroidMarkStep.Process(LinkContext context)
   at Mono.Linker.Pipeline.Process(LinkContext context)
   at MonoDroid.Tuner.Linker.Process(LinkerOptions options, ILogger logger, LinkContext& context)
   at Xamarin.Android.Tasks.LinkAssemblies.Execute(DirectoryAssemblyResolver res)
   --- End of inner exception stack trace ---
   at Java.Interop.Tools.Diagnostics.Diagnostic.Error(Int32 code, Exception innerException, String message, Object[] args)
   at Xamarin.Android.Tasks.LinkAssemblies.Execute(DirectoryAssemblyResolver res)
   at Xamarin.Android.Tasks.LinkAssemblies.Execute()
   at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
   at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext()         

这个问题被多次提出并出现不同的错误,我已经尝试了几乎所有在线提出的可能解决方案,但没有奏效。

将目标框架设置为系统上的最新版本。

这太烦人了,在达到实际需求之前,我一开始就被困在构建过程中。

我正在使用 VS2017。只是在这里添加我已经尝试在 VisualStudio 2015 和 2019 上无法加载开始。这与MSBUILD问题有关。

【问题讨论】:

【参考方案1】:

Android 构建错误 - LinkAssemblies 任务意外失败

在构建使用 Forms 的 Xamarin.Android 项目时,您可能会看到错误消息“LinkAssemblies”任务意外失败。

当链接器处于活动状态时会发生这种情况(通常在发布版本上以减小应用程序包的大小);发生这种情况是因为 Android 目标未更新到最新框架。

(更多信息:Platform Support

重要提示

    您可以通过使用以编程方式获取有关程序集的信息 反射。有关详细信息,请参阅反射 (C#) 或反射 (Visual 基本)。

    您可以使用 MetadataLoadContext 加载程序集来检查它 .NET Core 中的类和 Assembly.ReflectionOnlyLoad 或 Assembly.ReflectionOnlyLoadFrom .NET Core 和 .NET Framework 中的方法。

补充说明

Inspecting application state with the SOS debugging tools

【讨论】:

是的,我在某处读到了与您的建议相同的内容,尝试将其设置为 Android 9.0 (Pie) 并得到相同的结果。当链接器设置为无时,它会成功创建 APK。但是在安装时,我的设备上出现“未安装应用程序”错误。 我很欣赏你把事情做好的勇气。我很乐意帮助您为您找到解决方法。如果您提供完整的环境详细信息,例如(操作系统、版本、架构、设备信息和您认为会或可以提供帮助的其他信息)。 Windows 10、VS2017 Community v15.9.25、.Net 2.0、三星s10+ 在故障排除过程中,您是否有机会查看此参考资料。 docs.microsoft.com/en-us/xamarin/xamarin-forms/troubleshooting/…. docs.microsoft.com/en-us/xamarin/android/get-started/…

以上是关于“LinkAssemblies”任务意外失败。 xamarinandroidException:错误 XA2006:无法解析引用的主要内容,如果未能解决你的问题,请参考以下文章

Monodroid Google Maps v2 - “LinkAssemblies”任务意外失败

“LinkAssemblies”任务意外失败 - SB4018: System.IO.FileNotFoundException

链接程序集任务意外失败Xamarin表单

Xamarin Android LinkAssemblies 任务失败

“CopyAndConvertResources”任务意外失败(只读资源)

“XamlCTask”任务意外失败