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

原生C++应用通过C++/CLI互操作使用EF Core 5加载报错求助

问题解答

可以在目标框架为.NET 5的原生C应用中,通过C/CLI互操作程序集使用EF Core 5.0,你遇到的System.IO.FileNotFoundException异常是运行时找不到EF Core依赖程序集导致的,属于配置问题,不存在架构层面的兼容性障碍。

修复步骤

  • 修改ManagedLibrary项目的csproj配置,在顶层<PropertyGroup>节点下添加配置项:
    <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
    
    该配置会强制将项目通过NuGet引入的所有依赖(包括EF Core相关的全部程序集)复制到当前项目的输出目录,解决NuGet依赖不自动复制的问题。
  • 统一所有关联项目的输出路径:将原生C启动项目、C/CLI互操作项目、ManagedLibrary托管项目的生成输出目录调整为同一个路径,避免不同项目的输出文件分散导致依赖查找失败。如果不方便统一输出路径,可以在C++/CLI项目和原生C++项目中添加生成后事件,将ManagedLibrary输出目录下的所有.dll、.json配置文件复制到原生应用的最终输出目录。
  • 确认.NET 5运行时配置文件存在:C++/CLI项目生成后会输出[项目名].deps.json和[项目名].runtimeconfig.json两个配置文件,这两个文件必须和原生C++的.exe文件放在同一目录,.NET运行时才能正确识别依赖加载路径,加载EF Core相关程序集。

问题排查

如果调整配置后仍然抛出程序集加载失败错误,可以使用程序集绑定日志查看器(fuslogvw.exe)捕获详细的绑定日志,确认运行时查找Microsoft.EntityFrameworkCore程序集的具体路径,核对对应路径下是否存在对应版本的dll文件即可定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 06:45:03