You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Xamarin Forms安卓项目构建错误:无法加载PInvoke程序集

解决Mono.Android中System.Runtime.InteropServices.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缓存与项目输出
    老旧的缓存经常会引发奇怪的依赖问题,你可以按以下步骤操作:

    1. 完全关闭Visual Studio
    2. 删除项目目录下的binobj文件夹
    3. 删除VS的组件缓存目录(路径示例:C:\Users\[你的用户名]\AppData\Local\Microsoft\VisualStudio\15.0_xxxx\ComponentModelCache
    4. 重新打开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

火山引擎 最新活动