Ubuntu 18.04运行C# Azure自定义视觉ONNX模型API报WinRT DLL加载失败
异常根因
最内层异常为System.DllNotFoundException,报错缺失的api-ms-win-core-com-l1-1-0.dll是Windows COM运行时的核心组件。
触发报错的直接代码位置是项目中调用的Windows.Storage.StorageFile.GetFileFromPathAsync接口——这套接口属于Windows专属的WinRT框架能力,Windows环境下系统原生预置对应依赖,因此代码可正常运行;Ubuntu 18.04没有内置WinRT运行时,初始化模块时就会触发dll加载失败。
可落地修复方案
- 替换跨平台不兼容的文件操作逻辑:将代码中所有调用WinRT
StorageFile接口读取本地ONNX模型的逻辑,替换为.NET 基础类库自带的跨平台IO接口,例如通过File.OpenRead()、File.ReadAllBytes()直接读取本地模型文件的二进制流,这类逻辑不依赖WinRT运行时,可在Windows、Ubuntu环境无差异运行。 - 排查并移除WinRT专属依赖:检查项目NuGet引用列表,若引用了桌面专属的Azure自定义视觉推理SDK,替换为支持跨平台部署的版本,避免代码在隐式初始化阶段自动拉起WinRT运行时模块。
- 规避无效调试路径:不要尝试在Ubuntu环境中手动拷贝Windows系统的对应dll做兼容垫片,WinRT组件深度绑定Windows内核调用逻辑,这类操作会在后续COM初始化环节触发新的依赖加载错误,无法从根本解决问题。
内容的提问来源于stack exchange,提问作者Dimpal Solanki
相关产品推荐
相关产品推荐

