簡體   English   中英

使用.runsetting單元測試文件的TFS2015 503服務不可用

[英]TFS2015 503 service unavailable using .runsetting unit test file

簡而言之,在TFS 2015的構建步驟中使用.runsetting單元測試文件會導致503 Service Unavailable異常。

在對新的TFS 2015安裝進行廣泛搜索和測試之后(也如TFS2015的新安裝503 Service Unavailable中所述 ),我可能發現了問題。

就像VSTest一樣,我們將在https://msdn.microsoft.com/zh-cn/library/jj159530.aspx中描述的.runsettings文件中,在新的TFS2015安裝的“ Visual Studio Test”構建步驟中使用。調用console.exe時,TFS服務器上的下三個應用程序池崩潰,從而導致503 Service Unavailable錯誤:

  1. DefaultAppPool
  2. Microsoft Team Foundation Server應用程序池
  3. Microsoft Team Foundation SErver Message Queueu應用程序池

首先,我的.runsetting文件有點大,但我確實嘗試了下一個(我認為盡可能小):

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <!-- Configurations for data collectors -->
  <DataCollectionRunSettings>
    <DataCollectors>
      <DataCollector friendlyName="Code Coverage" uri="datacollector://Microsoft/CodeCoverage/2.0" assemblyQualifiedName="Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, Microsoft.VisualStudio.TraceCollector, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
        <Configuration>
          <CodeCoverage>
             <!-- Match assembly file paths: -->
             <ModulePaths>
                <Include>
                   <ModulePath>.*\.dll$</ModulePath>
                   <ModulePath>.*\.exe$</ModulePath>
                </Include>
              <Exclude>
                <ModulePath>.*CPPUnitTestFramework.*</ModulePath>
                <ModulePath>.*fluentassertions.*</ModulePath>
                <ModulePath>.*\.test\.dll$</ModulePath>
              </Exclude>
            </ModulePaths>
          </CodeCoverage>
        </Configuration>
      </DataCollector>
    </DataCollectors>
  </DataCollectionRunSettings>
</RunSettings>

使用此版本時,應用程序池崩潰。 即使我完全刪除了該部分,也無法使用。

一旦調用下一行(取自構建步驟的日志行),應用程序池就會崩潰。

Executing C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe "D:\TfsAgents\Agent1\_work\2\s\[...]\Release\Microsoft.QualityTools.Testing.Fakes.dll" "D:\TfsAgents\Agent1\_work\2\s\[...]\Release\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll" "D:\TfsAgents\Agent1\_work\2\s\[...]\Release\MyClassLib.dll"  /Settings:"D:\TfsAgents\Agent1\_work\2\s\[...]\test.runsettings" /EnableCodeCoverage /logger:trx

如果查看.runsettings文件中的DataCollector標記,則會看到版本設置為14.0.0.0。 如果您查看Miscrosoft的頁面,他們指出它應該是11.0.0.0,但是此版本不起作用。 我以為11.0.0.0版本可能是錯誤的,所以我用Telerik JustDecompile打開了dll,然后看到“真實”版本是14.0.0.0,因此我將該版本放入了runsetting-file。 但是沒有運氣。

因此,現在我只是從構建的定義中刪除運行設置文件,不幸的是,這將導致錯誤的代碼覆蓋率。.因此,希望有人可能對此有答案。

與在IIS服務器托管TFS的同一台計算機上運行的生成代理一起使用時,此問題僅限於特定的運行設置文件。 有一種解決方法。 在runsettings文件的DataCollectors-> Configuration-> CodeCoverage標記內,您可以添加以下具有給定值的xml標記:

        <UseVerifiableInstrumentation>True</UseVerifiableInstrumentation>
        <AllowLowIntegrityProcesses>True</AllowLowIntegrityProcesses>
        <CollectFromChildProcesses>True</CollectFromChildProcesses>
        <CollectAspDotNet>false</CollectAspDotNet>

這應該可以解決該問題,並且還建議如果將來在Data Collector中使用代碼覆蓋率的runsettings文件,則應添加這些標簽。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM