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

TFS构建中启用代码覆盖率‘Profile’选项的方法咨询

在Azure TFS构建中用VSPerfCmd实现代码覆盖率检测

核心思路

放弃依赖MSBuild的Profile参数(该选项仅在Visual Studio IDE内生效,MSBuild默认不会触发VSInstr插桩),改为在TFS构建流程中手动调用VSInstr插桩目标程序集,再通过VSPerfCmd收集覆盖率数据,最后生成报告。

具体步骤

1. 构建后执行VSInstr插桩

在TFS构建的MSBuild步骤之后添加一个命令行任务,调用VS2019的VSInstr工具对目标项目的程序集进行插桩:

:: 替换为VS2019 Enterprise的实际安装路径,注意x86/x64架构匹配
set VSInstrPath=C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Team Tools\Performance Tools\x64\VSInstr.exe

:: 对目标程序集执行覆盖率插桩,替换为你的程序集路径
"%VSInstrPath%" /coverage "$(Build.BinariesDirectory)\YourProject\bin\Release\YourProject.dll"
  • 确保构建代理已安装VS2019 Enterprise版(性能工具仅Enterprise包含)
  • 若目标程序集是x86架构,需切换到x86目录下的VSInstr.exe

2. 启动VSPerfCmd覆盖率监控

在测试执行步骤之前添加命令行任务,启动覆盖率收集:

:: 替换为VS2019的VSPerfCmd路径
set VSPerfCmdPath=C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Team Tools\Performance Tools\x64\VSPerfCmd.exe

:: 启动覆盖率收集,指定输出文件到构建工件目录
"%VSPerfCmdPath%" /start:coverage /output:"$(Build.ArtifactStagingDirectory)\coverage.vsp"

3. 执行测试任务

正常运行你的测试步骤(如VSTest任务),确保测试逻辑会调用到插桩后的程序集。

4. 停止收集并生成覆盖率报告

测试完成后,添加两个命令行任务:

停止覆盖率监控

"%VSPerfCmdPath%" /shutdown

生成可读报告

:: 替换为VS2019的VSPerfReport路径
set VSPerfReportPath=C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Team Tools\Performance Tools\x64\VSPerfReport.exe

:: 生成XML格式报告(也可替换为/html生成网页报告)
"%VSPerfReportPath%" "$(Build.ArtifactStagingDirectory)\coverage.vsp" /output:"$(Build.ArtifactStagingDirectory)\coverage" /xml

5. 发布覆盖率报告

添加发布构建工件任务,将$(Build.ArtifactStagingDirectory)\coverage.*发布为构建工件,方便后续查看。

关键注意事项

  • 插桩后的程序集必须替换构建输出中的原程序集,否则测试会调用未插桩的版本
  • 确保构建代理有足够权限访问VS工具目录和构建输出路径
  • 若测试目标是Web应用,需将插桩后的程序集部署到测试环境后再执行测试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 02:06:27