Xamarin.Forms Android项目编译遇System.IO.FileNotFoundException错误求助
解决Xamarin.Forms Android项目编译失败(找不到Xamarin.iOS程序集)的方案
嘿,我帮你梳理下这个问题的解决思路!你遇到的错误其实很明确:Android项目里意外引入了只属于iOS的Xamarin.iOS程序集,而Mono for Android(Android项目的运行环境)根本不包含这个组件,所以编译直接报错。iOS项目能正常跑是因为它本身就依赖这个程序集,完全没问题。咱一步步来解决:
1. 检查并移除Android项目中的Xamarin.iOS引用
- 右键你的Android项目 → 选择「管理NuGet程序包」,切换到「已安装」标签,看看有没有
Xamarin.iOS相关的包,有的话直接卸载。 - 或者右键项目 → 「引用」,在列表里找到
Xamarin.iOS的条目,右键删除它。 - 注意:有些第三方NuGet包可能会附带平台专属的依赖,要确保你给Android项目安装的是支持Android的版本,别不小心装了iOS专属的包。
2. 检查共享代码中的条件编译
如果你的共享项目(比如.NET Standard/PCL)里有依赖Xamarin.iOS的代码,一定要用条件编译指令把这些代码包裹起来,避免Android编译时读取到:
#if __IOS__ // 这里写只有iOS才会执行的代码,比如引用Xamarin.iOS的API using Xamarin.iOS; // 示例代码 var iOSSpecificObject = new UIViewController(); #endif
如果没有加条件编译,Android项目编译时会尝试解析这些iOS专属的代码,自然会报错找不到程序集。
3. 彻底清理并重新生成解决方案
之前你只删了Packages和Bin文件夹,别忘了还有Obj文件夹(编译缓存都存在这里):
- 右键解决方案 → 「清理解决方案」。
- 手动删除每个项目(尤其是Android项目)下的
Bin和Obj文件夹。 - 最后右键解决方案 → 「重新生成解决方案」。
4. 手动检查项目文件(终极方案)
如果以上步骤都没用,直接打开Android项目的.csproj文件(用记事本或者VS的「编辑项目文件」选项),搜索Xamarin.iOS,找到类似下面的标签,直接删除:
<Reference Include="Xamarin.iOS, Version=0.0.0.0, Culture=neutral, PublicKeyToken=84e04ff9cfb79065"> <HintPath>..\packages\Xamarin.iOS...\lib\Xamarin.iOS.dll</HintPath> </Reference>
保存文件后重新加载项目,再尝试编译。
内容的提问来源于stack exchange,提问作者Developer
相关产品推荐
相关产品推荐

