2016-04-26 57 views
1

我有一個在Visual Studio Team Services(以前稱爲Visual Studio Online)上運行的構建。我想從代碼覆蓋率計算中排除一些程序集。基於我已閱讀的格式frommanysources。我創建了一個.runsettings文件,如下所示:從Visual Studio團隊服務中排除代碼覆蓋的程序集

<?xml version="1.0" encoding="utf-8"?> 
<RunSettings> 
    <DataCollectionRunSettings> 
    <DataCollectors> 
     <DataCollector friendlyName="Code Coverage" 
      uri="datacollector://Microsoft/CodeCoverage/2.0" 
      assemblyQualifiedName="Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, Microsoft.VisualStudio.TraceCollector, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> 
     <Configuration> 
      <CodeCoverage> 
      <ModulePaths> 
       <Exclude> 
       <ModulePath>*AWSSDK*</ModulePath> 
       </Exclude> 
      </ModulePaths> 
      </CodeCoverage> 
     </Configuration> 
     </DataCollector> 
    </DataCollectors> 
    </DataCollectionRunSettings> 
</RunSettings> 

但是,這會產生以下錯誤:

開始測試執行,請稍候... 錯誤信息:System.InvalidOperationException:不能混用同步和異步操作在流程上。 在System.Diagnostics.Process.get_StandardError() 在Microsoft.VisualStudio.Coverage.Vanguard.Wait() 在Microsoft.VisualStudio.Coverage.Vanguard.Start(字符串outputName,DataCollectionContext上下文) 在Microsoft.VisualStudio.Coverage。 DynamicCoverageDataCollectorImpl.StartVanguard(DataCollectionContext上下文) 在Microsoft.VisualStudio.Coverage.UnitTestDataCollector.SessionStart(對象發件人,SessionStartEventArgs E) 在Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector.SessionStart(對象發件人,SessionStartEventArgs E) 在System.EventHandler`1 。調用(Object sender,TEventArgs e) at WEX.TestExecution.TaefDataCollectionEvents.OnSessionStart(SessionStartEventArgs e) at WEX.TestExecution.Dat aCollectorTestMode.Initialize(ITestModeSettings設置,ICallbackRegistrar callbackRegistrar) 信息:另外,如果測試發現者&執行程序作爲vsix擴展安裝在計算機上並且您的安裝支持vsix擴展,您可以嘗試指定'/ UseVsixExtensions'命令。示例:vstest.console.exe myTests.dll/UseVsixExtensions:true VSTest測試運行失敗,退出代碼爲:1

是的,有些測試使用async/await。在Visual Studio 2015中,相同的.runsettings文件可以正常工作。如果按照建議操作,請添加以下選項:/UseVsixExtensions:true,結果相同。我怎樣才能解決這個問題?

+1

並且您提供的runsettings文件不應該被發現。格式應該像「。* AWSSDK。*」。 –

+0

當你構建隊列並共享整個日誌時,你可以將「system.debug」變量設置爲「true」嗎? –

+0

令人驚訝的是,根據您的建議更改「ModulePath」的內容解決了問題。讓我覺得'InvalidOperationException'是誤導性的,甚至可能是一些不好的異常處理? [這裏是日誌](https://onedrive.live.com/redir?resid=47707C5E85187AB1!450&authkey=!AHgwV59SruF7j3Q&ithint=file%2czip)with system.debug = true對於ModulePath爲'* AWSSDK *'(和失敗)。 – Snixtor

回答

2

的runsettings文件,請使用以下的正則表達式則表達式匹配的文件:

Regular expressions Include and exclude nodes use regular expressions. For more information, see Using Regular Expressions in Visual Studio. Regular expressions are not the same as wildcards. In particular:

.* matches a string of any characters

. matches a dot ".")

() matches parentheses "()"

\ matches a file path delimiter "\"

^ matches the start of the string

$ matches the end of the string

有了您的原始路徑,所有的文件將在路徑中排除,因爲你只有「*」。有關詳細信息,請參閱此鏈接:Regular Expressions in Visual Studio

對於不好的例外,根據您提供的日誌,您正在使用託管構建代理運行構建。我用Hosted Build Agent做了一個快速測試,可以重現這個問題。但是,當我嘗試使用自己的構建代理時,不會發生此問題。我懷疑Hosted Build Agent上有一些設置/配置會導致此問題,並且我幫助您在Microsoft Connect Page上提交反饋。您可以查看以下鏈接進行跟蹤:Invalid exception when run testing from Hosted Build Agent

+0

不錯的一個埃迪。完美的解釋,並立即創建一個錯誤報告,超越呼叫。 – Snixtor

相關問題