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

Microsoft.CodeCoverage.Console.exe无法获取调用C++的C#项目代码覆盖率

解决思路
  • 确保C#项目启用覆盖率 instrumentation
    在C#项目的.csproj文件中添加MSBuild属性,显式开启代码覆盖率支持:

    <PropertyGroup>
      <EnableCodeCoverage>true</EnableCodeCoverage>
    </PropertyGroup>
    

    或者在Visual Studio项目属性的「调试」选项卡中勾选「启用代码覆盖率」,确保C#代码被正确标记以收集覆盖率数据。

  • 调整Microsoft.CodeCoverage.Console命令参数
    默认命令可能仅针对原生C++模块收集覆盖率,需显式指定要包含的C#程序集。示例命令:

    Microsoft.CodeCoverage.Console.exe collect --include "YourCSharpApp.exe,YourCSharpLib.dll" --results combined.coverage dotnet test YourSolution.sln
    

    --include参数用于指定需要收集覆盖率的托管程序集,确保路径或名称准确。

  • 使用dotnet test集成覆盖率收集
    直接通过dotnet test命令集成覆盖率收集,无需单独调用Microsoft.CodeCoverage.Console,该方式会自动处理托管与原生代码的覆盖率收集:

    dotnet test YourSolution.sln --collect:"Code Coverage" --results-directory ./coverage-output
    

    生成的.coverage文件会包含C#和C++的全部覆盖率数据,可通过Visual Studio查看,或用reportgenerator工具转换为HTML等易读格式。

  • 配置C++/CLI项目的覆盖率支持
    作为中间层的C++/CLI项目也需开启代码覆盖率支持,在其项目属性的「测试」选项卡中勾选「启用代码覆盖率」,或添加MSBuild属性:

    <PropertyGroup>
      <EnableCodeCoverage>true</EnableCodeCoverage>
    </PropertyGroup>
    

    确保中间层不会阻断C#代码的覆盖率数据收集。

  • 合并分离的覆盖率结果
    如果已分别收集了C#和C++的覆盖率文件,可使用merge命令合并为统一报告:

    Microsoft.CodeCoverage.Console.exe merge --input csharp-coverage.coverage,cpp-coverage.coverage --output final-combined.coverage
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 22:32:33