如何在Azure DevOps流水线中排除Program.cs及指定文件夹的代码覆盖率
解决方案
你的问题出在错误使用了<Functions>节点——这个节点是用来排除特定函数/方法的,而非整个文件。要排除Program.cs和Migrations文件夹下的所有文件,需要改用<Sources>节点匹配源文件路径,结合通配符实现跨项目的通用排除规则。
修正后的CodeCoverage.runsettings文件
<?xml version="1.0" encoding="utf-8"?> <RunSettings> <DataCollectionRunSettings> <DataCollectors> <DataCollector friendlyName="XPlat Code Coverage"> <Configuration> <!-- 排除指定源文件 --> <Sources> <Exclude> <!-- 匹配任意目录下的Program.cs --> <Source>**/Program.cs</Source> <!-- 匹配任意目录下Migrations文件夹内的所有.cs文件 --> <Source>**/Migrations/**/*.cs</Source> </Exclude> </Sources> <!-- 若无需排除特定函数,可删除下方Functions节点 --> <!-- <Functions> <Exclude> <Function>.*\.Program\..*</Function> <Function>.*\.Migrations\.*\..*</Function> </Exclude> </Functions> --> </Configuration> </DataCollector> </DataCollectors> </DataCollectionRunSettings> </RunSettings>
关键说明
**/Program.cs:通配符**匹配任意层级目录,确保所有项目中的Program.cs都被排除,无需指定具体命名空间或路径。**/Migrations/**/*.cs:匹配任意目录下Migrations文件夹内的所有C#文件,覆盖所有项目的Migrations目录结构。- 你的Azure DevOps流水线配置无需修改,已正确通过
--settings CodeCoverage.runsettings参数加载配置文件。
内容的提问来源于stack exchange,提问作者deadheaddeveloper
相关产品推荐
相关产品推荐

