运行Xamarin.iOS项目报Mono.Android加载失败异常求助
Xamarin.iOS 运行时 Mono.Android 程序集加载异常解决
异常详情
运行Xamarin.iOS项目时触发
System.IO.FileNotFoundException异常:Could not load file or assembly 'Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=84e04ff9cfb79065' or one of its dependencies.含义:无法加载文件或程序集“Mono.Android, Version=0.0.0.0, Culture=neutral, PublicKeyToken=84e04ff9cfb79065”或其某一依赖项。
排查与解决步骤
- 排查错误引用:
Mono.Android是Xamarin.Android平台专属程序集,iOS运行环境不存在该文件。首先检查iOS主项目、以及iOS项目引用的所有共享类库、第三方NuGet包、绑定库,确认没有误引用Android专属的依赖包。 - 校验条件编译逻辑:如果使用Shared Project共享跨平台代码,所有调用Android系统API、引用Android命名空间的代码段,必须包裹在
#if __ANDROID__条件编译块内,避免iOS编译阶段误打包Android专属代码。 - 清理全量编译缓存:关闭Visual Studio,手动删除解决方案根目录、iOS项目目录下的所有
bin、obj文件夹,重启IDE后先执行「清理解决方案」,再执行「重新生成解决方案」,排除历史编译残留导致的引用错乱。 - 对齐NuGet包版本:检查解决方案内所有Xamarin相关包(包括Xamarin.Forms、Xamarin.Essentials及各类第三方插件)的版本号,确保所有项目引用的版本完全一致;如果发现有NuGet包自动给iOS项目引入了Mono.Android依赖,卸载该包后重新安装适配iOS平台的正确版本。
- 校验自定义类库适配性:如果项目引用了自行开发的类库,确认该类库是.NET Standard/.NET 跨平台类库,而非仅面向Xamarin.Android平台的专属类库;如果类库做了多平台分支实现,确认iOS分支代码没有引入Android相关依赖。
定位问题技巧
如果上述步骤没有快速定位问题,可以新建一个空白Xamarin.iOS项目,逐批迁移现有项目的代码、引用,每迁移一批就编译运行一次,很快就能定位到引入错误依赖的具体模块,针对性移除即可。
内容的提问来源于stack exchange,提问作者F.F
相关产品推荐
相关产品推荐

