Visual Studio .runsettings排除了太多的程序集

时间:2014-11-25 10:17:12

标签: regex visual-studio-2012 code-coverage runsettings

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

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

  • MyCompany.MyProject1.Tests.dll
  • ...
  • MyCompany.AnyProjectName.Tests.dll
  • TFSBuildExtensions.XXX.dll

2 个答案:

答案 0 :(得分:1)

好的,我发现问题出在这里:https://stackoverflow.com/a/15961727/283787

正则表达式正在寻找一个路径,而不仅仅是模块名称,你需要在模块前面使用。*来忽略它 - 也就是说,你想在任何给定的文件路径上忽略它。

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

<ModulePaths>
  <Exclude>
    <ModulePath>.*tests\.dll$</ModulePath>
    <ModulePath>.*tfsbuildextensions\..*\.dll$</ModulePath>
  </Exclude>
</ModulePaths>

答案 1 :(得分:0)

这应该做你想要的:

<!-- Match assembly file paths: -->
<ModulePaths>
  <Include />
  <Exclude>
    <ModulePath>^.*Tests\.dll$</ModulePath>
    <ModulePath>^tfsbuildextensions\..*\.dll$</ModulePath>
  </Exclude>
</ModulePaths>