我正在使用 .runsettings 文件来管理生成代码覆盖率结果的程序集。
通过 .runsettings 文件中的以下部分,我得到了所有程序集,包括我的测试项目一些不需要的 TFSBuildExtensions 程序集:
<!-- Match assembly file paths: -->
<ModulePaths>
<Include />
<Exclude />
</ModulePaths>
所以我修改了它以排除我的测试项目,这些项目都命名为MyCompany.MyProject1.Tests.dll
<!-- Match assembly file paths: -->
<ModulePaths>
<Include />
<Exclude>
<ModulePath>.*Tests.*</ModulePath>
</Exclude>
</ModulePaths>
但是,现在我的所有程序集都被排除在外,我只剩下 TFSBuildExtensions 程序集。
我应该在排除部分中指定什么来排除以下程序集?
- 我的
- 公司.我的项目1.测试.dll
- 。
- MyCompany.AnyProjectName.Tests.dll
- TFSBuildExtensions.XXX.dll
所以我在这里找到了问题所在:https://stackoverflow.com/a/15961727/283787
正则表达式正在寻找一个路径,而不仅仅是一个模块名称,你需要模块前面的 .* 来忽略它——也就是说,你想在任何给定的文件路径上忽略它。
因此,当我将其更改为以下时,它工作正常:
<ModulePaths>
<Exclude>
<ModulePath>.*tests.dll$</ModulePath>
<ModulePath>.*tfsbuildextensions..*.dll$</ModulePath>
</Exclude>
</ModulePaths>
这应该可以做你想要的:
<!-- Match assembly file paths: -->
<ModulePaths>
<Include />
<Exclude>
<ModulePath>^.*Tests.dll$</ModulePath>
<ModulePath>^tfsbuildextensions..*.dll$</ModulePath>
</Exclude>
</ModulePaths>