2014-11-25 73 views
1

我正在使用.runsettings文件來管理生成代碼覆蓋率結果的程序集。Visual Studio .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爲只剩semblies。

我應該在排除部分指定什麼來排除下列組件?

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

你可以試試這個:'^(TFSBuildExtensions \ .. * \ DLL)| *測試\ .dll文件$' – 2014-11-25 11:10:05

+0

OK ,所以我嘗試了這一點,但現在只有TFSBuildExtensions的仍然存在。例如。 tfsbuildextensions.activities.dll。另外,我應該根據默認的MS模板使用單獨的節點嗎? – openshac 2014-11-25 15:32:52

+0

正則表達式區分大小寫,除非另有說明。 如果要排除tfsbuildextensions.activities.dll你應該重寫上面的表達式如下: ^(tfsbuildextensions \ .. * \ DLL)| *測試\ $ .dll文件 還可以使用不同的ModulePath進行似乎是一個不錯給我的想法:它會幫助你保持清晰的代碼。 – 2014-11-26 08:10:30

回答

1

好吧,我發現問題出在這裏:https://stackoverflow.com/a/15961727/283787

正則表達式正在尋找一個路徑,而不僅僅是一個模塊名稱,您需要在模塊前面的。*忽略它 - 也就是說,您希望在任何給定的文件路徑中忽略它。

所以,當我把它改成下面的它工作得很好:

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

這應該做你想要什麼:

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

我試過這個,但我仍然在結果中得到10個tfsbuildextension.xxx.dll程序集。 – openshac 2014-11-27 08:49:07

相關問題