c# - “LinkAssemblies”任务意外失败。xamarinandroidException:错误 XA2006:无法解析引用
问题描述
我是 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 问题有关。
解决方案
Android 构建错误 – LinkAssemblies 任务意外失败
生成使用 Forms 的 Xamarin.Android 项目时,您可能会看到错误消息“LinkAssemblies”任务意外失败。
当链接器处于活动状态时会发生这种情况(通常在发布版本上以减小应用程序包的大小);发生这种情况是因为 Android 目标没有更新到最新的框架。
(更多信息:平台支持
重要的提示
您可以使用反射以编程方式获取有关程序集的信息。有关详细信息,请参阅反射 (C#) 或反射 (Visual Basic)。
您可以使用 .NET Core 中的 MetadataLoadContext 类以及 .NET Core 和 .NET Framework 中的 Assembly.ReflectionOnlyLoad 或 Assembly.ReflectionOnlyLoadFrom 方法加载程序集以检查它。
附加说明
推荐阅读
- c# - 使用 GroupBy 从 List 中创建 SubLists,其中 GroupBy 值为 List
- node.js - 两个日期之间的 MongoDB 聚合字段
- statsmodels - stats-models 包中的 Ridge、Lasso 和 Ridge
- commit - pygithub如何获取特定分支的最新提交
- php - 只删除一次重复值,然后对数组求和
- c# - C# Coinbase Pro API 如何解决响应问题。401
- postgresql - 找不到食谱的厨师食谱
- python - 如何将项目从一个窗口中的 QListWidget 传输到另一个窗口中的另一个 QListWidget?
- node.js - 输入和制表符不在 req.body 中
- xaml - iOS 和 Android 中不同的 StaticResource 风格