You need to enable JavaScript to run this app. Azure流水线集成Cobertura覆盖率报告触发VanguardException异常
优惠活动
大模型
产品
解决方案
定价
更多

Azure流水线集成Cobertura覆盖率报告触发VanguardException异常

排查方向

  • 对比两个分支的CodeCoverage.runsettings配置差异:优先检查是否在runsettings中同时启用了微软原生代码覆盖率收集器和Coverlet的跨平台收集器,两者存在冲突会触发该报错。成功日志中存在.coverage格式的原生覆盖率文件,失败日志没有,说明冲突发生在原生收集器启动阶段。
  • 检查测试项目的NuGet依赖差异:执行dotnet list package命令对比两个分支的测试项目依赖,确认新分支是否额外引入了Microsoft.CodeCoverage包,该包会默认启动原生覆盖率收集,和Coverlet的XPlat Code Coverage采集逻辑冲突。
  • 临时移除--settings CodeCoverage.runsettings参数测试:如果去掉配置文件后运行正常,即可定位是runsettings的配置问题,可在配置文件中显式关闭微软原生收集器,只保留Coverlet的采集配置。
  • 开启测试诊断日志:在dotnet test的arguments参数后追加--diag coverage_diag.log,采集更详细的错误日志定位CodeCoverage.exe的具体崩溃原因。

可行解决方案

  1. 修复配置冲突:在CodeCoverage.runsettings中添加以下配置关闭原生覆盖率收集,仅保留Coverlet的采集逻辑:
<DataCollectionRunSettings>
  <DataCollectors>
    <!-- 禁用微软原生代码覆盖率收集器 -->
    <DataCollector friendlyName="Code Coverage" enabled="False" />
    <DataCollector friendlyName="XPlat Code Coverage" enabled="True">
      <Configuration>
        <Format>Cobertura</Format>
      </Configuration>
    </DataCollector>
  </DataCollectors>
</DataCollectionRunSettings>
  1. 临时兼容方案:从错误日志可见,即使任务报错,coverage.cobertura.xml文件已经成功生成,不影响后续ReportGenerator任务的执行,可在DotNetCoreCLI测试任务中添加continueOnError: true配置,只要覆盖率文件存在就继续执行后续步骤。
  2. 依赖版本升级:将Microsoft.NET.Test.SDK升级到16.11.x以上兼容.NET Core 3.1的版本,coverlet.collector升级到最新的3.x稳定版,该异常属于已知历史问题,新版本已修复相关冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 20:39:01