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

EntityFramework与Xamarin Forms .NET Standard 2.0程序集加载异常问题

解决Xamarin.Android中EF Core 2.0.1的System.Runtime.CompilerServices.Unsafe异常问题

我之前做Xamarin Forms项目时碰到过一模一样的情况——UWP端跑起来完全正常,Android一启动就因为找不到System.Runtime.CompilerServices.Unsafe崩溃,折腾了好一阵才搞定,给你几个实用的解决思路:

核心原因

EF Core 2.0.1依赖的System.Runtime.CompilerServices.Unsafe程序集,在Android 7.1(API25)及以下的Mono运行环境中,默认的程序集加载逻辑没法正确匹配到适配版本;而Android 8.0(API26)的运行环境对这个程序集的支持做了优化,所以切换目标版本后能正常运行。

具体解决方案

1. 配置程序集绑定重定向(无需升级目标版本)

这是我最推荐的方法,不用改动项目的Android版本要求,就能解决依赖问题:

  • 在Android项目的Assets文件夹下新建bindingRedirects.xml文件,粘贴以下内容:
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.4.1" newVersion="4.0.4.1" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>
  • 右键这个文件选择属性,把生成操作设置为AndroidAsset,应用运行时会自动读取配置处理程序集版本重定向。

2. 仅升级目标Android版本(兼容低版本设备)

如果你不想改配置,可以保留最低支持版本为7.1,只调整目标版本:

  • 右键Android项目 → 属性 → Android Manifest,在目标Android版本下拉框选择Android 8.0 (API level 26),同时把最低Android版本设回你需要的版本(比如7.1),这样既解决异常,又不影响旧设备兼容性。

3. 更新EF Core及依赖包版本

EF Core 2.0.x对Xamarin Android的兼容性确实存在不少问题,升级到2.1.x及以上版本能从根源上解决这类依赖冲突:

  • 在NuGet包管理器中,把Microsoft.EntityFrameworkCore及其相关包(比如Microsoft.EntityFrameworkCore.Sqlite等)升级到2.1.x或更高版本,同时确保System.Runtime.CompilerServices.Unsafe包也更新到对应兼容版本。

额外排查技巧

  • 检查Android项目的NuGet包列表,确认System.Runtime.CompilerServices.Unsafe已正确安装,无版本冲突警告;
  • 清理整个解决方案,手动删除项目的bin和obj文件夹后重新生成,避免旧缓存程序集干扰加载逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:56:52