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

在Xamarin.Forms中使用StructureMap遇部署加载错误求助

解决Xamarin.Forms + StructureMap/EF Core SQLite部署时的System.Runtime.Loader.dll缺失问题

我之前在使用VS2017 15.x版本搭配Xamarin.Forms 3.x时,也碰到过完全一样的问题,核心原因是StructureMap 4.6.1和部分高版本EF Core依赖的System.Runtime.Loader库在旧版Xamarin.Android的运行环境下存在兼容性缺陷,下面是我亲测有效的解决方案:

1. 降级StructureMap版本到4.0.1

StructureMap 4.6.x系列对.NET Standard的依赖引入了System.Runtime.Loader,而这个库原本是为.NET Core设计的,旧版Xamarin.Android无法正确加载它。降级到4.0.1版本可以避开这个问题,该版本对Xamarin的支持更稳定:

  • 打开NuGet包管理器,卸载当前的StructureMap 4.6.1
  • 搜索并安装StructureMap,选择版本4.0.1

2. 升级共享项目到.NET Standard 2.0

如果你的Xamarin.Forms共享项目还是基于.NET Standard 1.x,建议升级到2.0:

  • 右键共享项目 → 属性 → 应用程序 → 目标框架,选择.NET Standard 2.0
  • 清理解决方案后重新还原NuGet包,这能大幅改善依赖解析的兼容性

3. 适配EF Core SQLite的版本

高版本EF Core同样会引入System.Runtime.Loader相关依赖,建议降级到2.1.x版本(比如2.1.14),这个版本和Xamarin.Forms 3.0的适配性最好:

  • 卸载当前的Microsoft.EntityFrameworkCore.Sqlite及相关EF Core包
  • 安装Microsoft.EntityFrameworkCore.Sqlite版本2.1.14

4. 彻底清理重建项目

做完上面的调整后,一定要彻底清理项目避免缓存问题:

  • 点击菜单「生成」→「清理解决方案」
  • 手动删除所有项目下的bin和obj文件夹
  • 右键解决方案 →「还原NuGet包」
  • 重新生成项目并部署

补充说明

旧版VS2017的Xamarin.Android工具链在处理.NET Standard依赖时,对System.Runtime.Loader这类.NET Core专属库的路径解析存在bug,导致部署时找不到对应的dll文件。通过调整依赖版本和目标框架,就能避开这个兼容性坑。

内容的提问来源于stack exchange,提问作者Rom Eh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:02:29