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

dotnet test指定已编译dll路径时不支持/p选项的问题问询

根因说明

  • 当dotnet test后跟项目/解决方案路径时,命令会走MSBuild执行流程,因此支持/p:前缀的MSBuild属性参数,你用--no-build走项目流程时参数有效的原因就在于此。
  • 当dotnet test直接跟已生成的测试dll路径时,命令会跳过MSBuild流程,直接调用VSTest执行器运行测试,此时不识别任何/p:前缀的MSBuild参数,因此会抛出参数无效的报错。

解决方案

针对你需要收集代码覆盖率的需求,直接替换参数为VSTest原生的覆盖率收集参数即可,命令如下:

dotnet test .\bin\Release\netcoreapp3.1\MyProject.dll --collect:"XPlat Code Coverage"

如果你的项目已经安装了coverlet.collector NuGet包,该命令的执行效果和/p:CollectCoverage=true完全一致,生成的覆盖率报告格式、输出路径都没有区别。

如果需要传递其他原本通过/p:设置的自定义参数,可以遵循VSTest运行参数的传递规则,将参数放在--之后,按照运行设置的层级传递即可,例如指定覆盖率输出格式为cobertura的命令:

dotnet test .\bin\Release\netcoreapp3.1\MyProject.dll --collect:"XPlat Code Coverage" -- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Format=cobertura

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 02:39:04