在Xamarin应用中正确加载Microsoft.ML模型时报错如何解决?
异常根因
你提供的加载逻辑本身没有错误,触发TypeLoadException的核心原因是依赖包版本不兼容:
- 你训练蜜蜂识别模型时使用的ML.NET版本,绑定的依赖是TensorFlow.NET v0.20.1,当前Xamarin项目中安装的TensorFlow.NET版本与该版本不匹配,无法加载对应版本下的
Tensorflow.TensorShape类 - 相比普通桌面C#项目,Xamarin平台对原生绑定类库的兼容性要求更高,版本不匹配时会直接触发类型加载失败,不会自动向上/向下兼容
修复步骤
- 首先卸载Xamarin项目中所有已安装的
Microsoft.ML、Microsoft.ML.TensorFlow、TensorFlow.NET相关NuGet包,避免多版本冲突 - 重新安装对应版本的依赖包:
- 安装
TensorFlow.NET的0.20.1版本,禁止选择更高或更低版本 - 安装和你原训练模型项目完全相同版本的
Microsoft.ML、Microsoft.ML.TensorFlow包 - 若你的Xamarin项目目标为Android,额外安装
TensorFlow.NET.Android的0.20.1版本;若目标为iOS,额外安装TensorFlow.NET.iOS的0.20.1版本
- 安装
- 完全清理项目:删除项目根目录下的
bin、obj文件夹后重新编译,清除旧依赖缓存 - 可选优化:建议将
trainedModel.zip作为嵌入式资源打包到App内部(Android放入Assets文件夹、iOS放入Resource文件夹),直接读取App内部路径加载模型,避免外置存储权限、路径错误引发的额外问题。
若执行完上述步骤仍加载失败,可将原训练模型项目的ML.NET版本降级到1.4/1.5版本重新导出模型,这两个版本对Xamarin+TensorFlow.NET 0.20.1的适配性最优。
内容的提问来源于stack exchange,提问作者Omar Moodie
相关产品推荐
相关产品推荐

