1

我正在使用 .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 程序集了。

我应该在排除部分指定什么来排除以下程序集?

  • 我的公司.MyProject1.Tests.dll
  • ...
  • MyCompany.AnyProjectName.Tests.dll
  • TFSBuildExtensions.XXX.dll
4

2 回答 2

1

好的,所以我发现了问题所在:https ://stackoverflow.com/a/15961727/283787

正则表达式正在寻找一个路径,而不仅仅是一个模块名称,您需要模块前面的 .* 来忽略它——也就是说,您希望在任何给定的文件路径处忽略它。

因此,当我将其更改为以下时,它工作正常:

<ModulePaths>
  <Exclude>
    <ModulePath>.*tests\.dll$</ModulePath>
    <ModulePath>.*tfsbuildextensions\..*\.dll$</ModulePath>
  </Exclude>
</ModulePaths>
于 2014-12-01T13:07:12.067 回答
0

这应该做你想要的:

<!-- Match assembly file paths: -->
<ModulePaths>
  <Include />
  <Exclude>
    <ModulePath>^.*Tests\.dll$</ModulePath>
    <ModulePath>^tfsbuildextensions\..*\.dll$</ModulePath>
  </Exclude>
</ModulePaths>
于 2014-11-25T11:27:56.133 回答