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

NET6控制台应用无法调用最简C++/CLR库的问题排查

解决.NET 6应用调用C++/CLR库时的FileNotFoundException问题

问题根源

.NET Core/.NET 6+ 与.NET Framework的依赖复制逻辑不同,默认情况下C++/CLR库的构建输出不会自动同步到.NET 6控制台应用的输出目录,这是导致运行时找不到程序集的核心原因。

具体解决步骤

1. 确认C++/CLR库编译配置

  • 右键TestClrLibrary.NetCore项目 → 属性 → 常规:
    • 验证目标框架为net6.0,平台工具集为v143(VS2022对应版本)
    • 确认输出目录路径清晰(建议保留默认的$(SolutionDir)$(Platform)\$(Configuration)\)
  • 右键项目 → 属性 → C/C++ → 所有选项:
    • 确保公共语言运行时支持设置为/clr:netcore(必须选择netcore分支,而非默认的/clr)

2. 手动配置依赖文件复制

.NET 6项目不会自动复制C++/CLR库文件,需手动配置:

图形化操作方式

  • 右键TestConsole.NetCore项目 → 添加 → 现有项,导航到C++/CLR项目的输出目录(如x64/Debug),选中TestClrLibrary.NetCore.dll和TestClrLibrary.NetCore.pdb
  • 选中添加后的两个文件,在右侧属性窗口设置:
    • 复制到输出目录:选择如果较新则复制
    • 生成操作:设置为内容

项目文件手动配置方式

打开TestConsole.NetCore.csproj,添加以下XML节点(替换路径为你的C++/CLR项目实际输出路径):

<ItemGroup>
  <Content Include="..\TestClrLibrary.NetCore\x64\$(Configuration)\TestClrLibrary.NetCore.dll">
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  </Content>
  <Content Include="..\TestClrLibrary.NetCore\x64\$(Configuration)\TestClrLibrary.NetCore.pdb">
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  </Content>
</ItemGroup>

3. 验证平台一致性

  • 右键解决方案 → 属性 → 配置属性:
    • 设置活动解决方案平台为x64
    • 确保两个项目的平台均为x64(C++/CLR库不支持Any CPU,必须指定具体平台)

4. 核对程序集信息匹配

打开C++/CLR项目的AssemblyInfo.cpp(若不存在,右键项目 → 添加 → 新建项 → 选择“Assembly Information File”),确认程序集名称和版本与错误日志中的一致:

[assembly:AssemblyNameAttribute("TestClrLibrary.NetCore")];
[assembly:AssemblyVersionAttribute("1.0.8252.18682")];

若版本不匹配,修改后重新构建项目。

5. 清理并重新构建

  • 点击菜单 → 生成 → 清理解决方案
  • 重新生成所有项目,确保控制台应用的输出目录下同时存在TestConsole.NetCore.exe和TestClrLibrary.NetCore.dll

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 11:16:01