You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Visual Studio 16.11.1后Xamarin.Forms编译Android项目报XALNS7028错误

错误

我正在构建一个Xamarin.Form项目,编译Android项目时出现了该错误,讽刺的是这是一个与iOS相关的错误。

问题触发过程

前一天晚上项目运行完全正常,今日早晨我将Visual Studio升级到16.11.1版本后开始编译项目,编译Android项目时触发了该错误,其他项目(例如Forms项目)编译均正常。

已尝试的解决方案

我已在互联网搜索相关解决方案(多数为旧方案,但我均逐一尝试),具体操作如下:

  • 重启电脑
  • 关闭Visual Studio,删除所有项目下的obj、bin和.vs文件夹后重启Visual Studio
  • 清空并重新下载NuGet包后重新编译项目
  • 升级Xamarin到最新版本,同时将所有NuGet包更新到最新版
  • 通过github拉取前一晚的旧版本项目代码尝试编译

以上所有操作均未解决问题

参考信息

以下是完整的错误日志原文:

Severity Code Description Project File Line Suppression State
Error XALNS7028: System.IO.FileNotFoundException: Could not load assembly 'Xamarin.iOS, Version=0.0.0.0, Culture=neutral, PublicKeyToken=84e04ff9cfb79065'. Perhaps it doesn't exist in the Mono for Android profile?
File name: 'Xamarin.iOS.dll'
at Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve(AssemblyNameReference reference, ReaderParameters parameters) in /Users/builder/azdo/_work/1/s/xamarin-android/external/Java.Interop/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil/DirectoryAssemblyResolver.cs:line 221
at Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve(AssemblyNameReference reference) in /Users/builder/azdo/_work/1/s/xamarin-android/external/Java.Interop/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil/DirectoryAssemblyResolver.cs:line 191
at Mono.Cecil.MetadataResolver.Resolve(TypeReference type) in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/external/cecil/Mono.Cecil/MetadataResolver.cs:line 110
at Mono.Cecil.TypeReference.Resolve() in /Users/builder/jenkins/workspace/archive-mono/2020-02/android/release/external/cecil/Mono.Cecil/TypeReference.cs:line 276
at Java.Interop.Tools.Cecil.TypeDefinitionCache.Resolve(TypeReference typeReference) in /Users/builder/azdo/work/1/s/xamarin-android/external/Java.Interop/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil/TypeDefinitionCache.cs:line 20
at Java.Interop.Tools.Cecil.TypeDefinitionRocks.<GetTypeAndBaseTypes>d_5.MoveNext() in /Users/builder/azdo/_work/1/s/xamarin-android/external/Java.Interop/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil/TypeDefinitionRocks.cs:line 40
at Java.Interop.Tools.Cecil.TypeDefinitionRocks.IsSubclassOf(TypeDefinition type, String typeName, IMetadataResolver resolver) in /Users/builder/azdo/_work/1/s/xamarin-android/external/Java.Interop/src/Java.Interop.Tools.Cecil/Java.Interop.Tools.Cecil/TypeDefinitionRocks.cs:line 94
at MonoDroid.Tuner.FixAbstractMethodsStep.FixAbstractMethodsUnconditional(AssemblyDefinition assembly)
at Xamarin.Android.Tasks.LinkAssembliesNoShrink.RunTask()
at Microsoft.Android.Build.Tasks.AndroidTask.Execute() in /Users/builder/azdo/_work/1/s/xamarin-android/external/xamarin-android-tools/src/Microsoft.Android.Build.BaseTasks/AndroidTask.cs:line 17 0

解决方案

根因说明

这是Visual Studio 16.11.1版本的已知兼容性bug,升级后Xamarin Android构建任务逻辑异常,会错误尝试加载iOS相关程序集,和项目本身的代码配置无关。

修复步骤

  • 调整链接器配置:打开Android项目属性,进入「Android选项」页面,将链接器的链接行为修改为「链接所有程序集」,重新编译项目。如果该配置会导致业务代码被误裁剪,编译成功后可以切回原本的链接配置,后续编译通常不会再触发该错误。
  • 清理Android项目引用:右键Android项目选择「编辑项目文件」,手动删除所有包含Xamarin.iOS的引用节点,保存后重新加载项目再编译即可。
  • 回退Visual Studio版本:如果以上方法都不生效,可将Visual Studio降级到16.10.x稳定版,该版本不存在这个构建bug,可以正常编译Xamarin Android项目,等待微软发布对应修复补丁后再升级即可。

内容的提问来源于stack exchange,提问作者user1034912

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 00:30:00