2016-05-03 12 views
0

Kurz gesagt, die Verwendung einer .runsetting-Unit-Testdatei in einem Build-Schritt auf TFS 2015 führt zu einer 503 Service Nicht verfügbar-Ausnahme.TFS2015 503-Dienst nicht verfügbar mit .runsetting-Unit-Testdatei

Nach umfangreichen Suchen und Testen auf einer neuen TFS 2015-Installation (wie auch in TFS2015 new install, 503 Service Unavailable beschrieben), habe ich möglicherweise das Problem gefunden.

Wir verwenden .runsettings Dateien wie auf https://msdn.microsoft.com/en-us/library/jj159530.aspx beschrieben, in einem ‚Visual Studio Test‘ Build-Schritt auf unserer neuen TFS2015 Installation, sobald die VSTest.console.exe aufgerufen wird, die nächsten drei Anwendungspools auf dem TFS Server zum Absturz bringen, in einem nicht verfügbar Fehler 503 Service resultierende:

  1. DefaultAppPool
  2. Microsoft Team Foundation Server Application Pool
  3. Microsoft Team Foundation Server Message Queueu Application Pool

Zuerst meine .runsetting Datei war irgendwie groß, aber ich habe die nächsten Versuch (ich glaube, so klein wie möglich):

<?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> 

Wenn diese eine Verwendung, die App-Pools abstürzt. Selbst wenn ich das Teil vollständig entferne, wird es nicht funktionieren.

Sobald die nächste Zeile aufgerufen wird (aus den Protokollzeilen des Erstellungsschritts), stürzen die App-Pools ab.

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 

Wenn Sie den Datacollector-Tag in der Datei .runsettings schauen, sehen Sie die Version 14.0.0.0 gesetzt. Wenn Sie die Seite von Miscrosoft betrachten, geben sie an, dass es 11.0.0.0 sein sollte, aber diese Version funktioniert auch nicht. Ich dachte, es könnte sein, dass Version 11.0.0.0 falsch war, also habe ich die DLL mit Telerik JustDecompile geöffnet und sah, dass die 'echte' Version 14.0.0.0 war, also habe ich diese Version in die runsetting-Datei geschrieben. Aber kein Glück.

Also für jetzt bin ich nur entfernen Sie die runsetting Datei von der Definition des Build, die leider in einem falschen Code Deckung Prozentsatz führt. Also hoffentlich könnte jemand die Antwort dafür haben.

+0

Ich habe versucht, einen Test mit der Datei runsettings auszuführen, die Sie angegeben haben, aber es wurde kein Problem festgestellt. Wie lautet die Version Ihres TFS-Servers? Nur TFS2015 ohne Update? –

Antwort

0

Dieses Problem ist auf die spezifische runsettings-Datei beschränkt, wenn sie mit einem Build-Agent verwendet wird, der auf demselben Computer ausgeführt wird, auf dem der IIS-Server TFS hostet. Es ist ein Workaround verfügbar. Innerhalb DataCollectors-> Configuration-> Testabdeckung Tag in runsettings Datei können Sie mit vorgegebenen Werten folgende XML-Tags hinzufügen:

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

Dies sollte das Problem lösen, und auch seine empfohlen, dass in Zukunft, wenn Sie runsettings verwenden Datei mit Code Abdeckung in Data Collector dann diese Tags hinzugefügt werden.