Xamarin Forms安卓项目构建错误:无法加载PInvoke程序集
我明白你被这个加载错误困扰了这么久有多头疼,针对Mono.Android环境下的这个程序集缺失问题,我整理了几个针对性的排查和修复步骤,你可以逐一尝试:
检查并修复NuGet包依赖
先打开NuGet包管理器,搜索System.Runtime.InteropServices.PInvoke包,确认它已经安装到你的项目中,并且版本和你使用的.NET 4.7框架兼容(优先选择4.0.0版本或官方标注兼容.NET 4.7的稳定版)。如果之前没安装,安装完成后清理项目并重新生成。添加程序集绑定重定向
有时候Mono.Android的配置文件没有正确关联这个程序集,你可以在项目的app.config文件中添加以下绑定重定向配置:<configuration> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Runtime.InteropServices.PInvoke" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> </dependentAssembly> </assemblyBinding> </runtime> </configuration>保存文件后重新构建项目。
清理Visual Studio缓存与项目输出
老旧的缓存经常会引发奇怪的依赖问题,你可以按以下步骤操作:- 完全关闭Visual Studio
- 删除项目目录下的
bin和obj文件夹 - 删除VS的组件缓存目录(路径示例:
C:\Users\[你的用户名]\AppData\Local\Microsoft\VisualStudio\15.0_xxxx\ComponentModelCache) - 重新打开VS,执行“清理解决方案”后再“重新生成解决方案”
更新Mono.Android组件
你使用的VS2017 15.6.1版本相对老旧,可能存在Mono.Android组件的兼容性问题。打开VS的“工具”→“获取工具和功能”,检查Mono.Android相关组件的更新,安装最新可用版本后再尝试构建。验证项目框架与Mono.Android版本兼容性
确认你的项目目标框架(.NET 4.7)和当前安装的Mono.Android版本是否匹配。如果兼容性存疑,可以暂时将项目目标框架降级到.NET 4.6.2,测试是否能解决加载问题。
你的错误信息如下:
加载程序集时发生异常:System.IO.FileNotFoundException: 无法加载程序集'System.Runtime.InteropServices.PInvoke, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'。该程序集可能不存在于Mono for Android配置文件中?
内容的提问来源于stack exchange,提问作者Andrew Cherep




