Coverlet MSBuild /p:Exclude无法排除第三方DLL求解决方案
解决coverlet.msbuild中/p:Exclude参数无效的问题
核心问题定位
你混用了coverlet两种集成方式的配置参数,导致Exclude规则不生效。coverlet.msbuild(MSBuild集成)仅支持/p:前缀的MSBuild参数配置,而你命令中混用的-e:前缀是coverlet.collector(VSTest集成)的环境变量配置方式,两者冲突会导致配置失效。
正确的单个程序集排除命令
以排除DocoptNet为例,修正后的命令如下:
dotnet test path.csproj /p:CollectCoverage=true /p:Exclude="[DocoptNet]*" /p:CoverletOutputFormat="cobertura,json,opencover,lcov" /p:CoverletOutput="TestResults"
排除多个第三方程序集的方法
用**分号;**分隔多个排除规则,将你需要排除的所有程序集规则依次加入:
dotnet test path.csproj /p:CollectCoverage=true /p:Exclude="[DocoptNet]*;[HtmlAgilityPack]*;[Metrics.InfluxDB]*;[Microsoft.Practices.ObjectBuilder2]*;[Microsoft.Practices.Unity.Configuration]*;[Microsoft.Practices.Unity]*;[Replicon.Cryptography.SCrypt]*" /p:CoverletOutputFormat="cobertura,json,opencover,lcov" /p:CoverletOutput="TestResults"
关键注意事项
- 规则格式:必须使用
[程序集名称]*的格式,程序集名称取你覆盖率报告中显示的名称(无需加.dll后缀),你提供的表格中的名称完全正确,可直接使用。 - 引号适配:在Windows Cmd中直接用双引号包裹规则;若使用PowerShell,需改用单引号包裹(如
/p:Exclude='[DocoptNet]*'),避免PowerShell解析括号导致规则异常。 - 配置统一:全程使用
/p:前缀的MSBuild参数,不要混合-e:环境变量参数,两者属于不同集成体系,无法兼容。
内容的提问来源于stack exchange,提问作者Tejas Patel
相关产品推荐
相关产品推荐

