2016-04-26 15 views
1

Ich habe einen Build, der auf Visual Studio Team Services (früher Visual Studio Online) ausgeführt wird. Ich möchte einige Assemblies von Code Coverage-Berechnungen ausschließen. Basierend auf einem Format habe ich gelesen frommanysources. Ich habe eine .runsettings Datei wie folgt erstellt:Assemblys aus Codeabdeckung in Visual Studio-Teamdienste ausschließen

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

Aber das erzeugt den folgenden Fehler:

Testausführung starten, bitte warten ... Fehler: System.InvalidOperationException: Kann nicht synchronen und asynchronen Betrieb mischen auf Prozessstrom. bei System.Diagnostics.Process.get_StandardError() bei Microsoft.VisualStudio.Coverage.Vanguard.Wait() bei Microsoft.VisualStudio.Coverage.Vanguard.Start (String output, DataCollectionContext context) bei Microsoft.VisualStudio.Coverage. DynamicCoverageDataCollectorImpl.StartVanguard (DataCollectionContext context) bei Microsoft.VisualStudio.Coverage.UnitTestDataCollector.SessionStart (Object sender, SessionStartEventArgs e) bei Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector.SessionStart (Object sender, SessionStartEventArgs e) bei System.EventHandler`1 .Invoke (Object Sender, TEventArgs e) bei WEX.TestExecution.TaefDataCollectionEvents.OnSessionStart (SessionStartEventArgs e) bei WEX.TestExecution.Dat aCollectorTestMode.Initialize (ITestModeSettings-Einstellungen, ICallbackRegistrar callbackRegistrar) Information: Darüber hinaus können Sie versuchen, '/ UseVsixExtensions' Befehl anzugeben, wenn der Testentdecker & Executor auf dem Computer als VSIX-Erweiterungen installiert ist und Ihre Installation VSIX-Erweiterungen unterstützt. Beispiel: vstest.console.exe myTests.dll/UseVsixExtensions: true VSTest Testlauf mit Exitcode fehlgeschlagen: 1

Ja, einige der Tests verwenden async/await. Die gleiche .runsettings-Datei funktioniert in Visual Studio 2015 einwandfrei. Wenn ich so vorgehe und die folgende Option hinzufüge: /UseVsixExtensions:true, ist das Ergebnis dasselbe. Wie kann ich das beheben?

+1

Und mit der Runsettings-Datei, die Sie zur Verfügung gestellt, sollte kein Test gefunden werden. Das Format sollte ". * AWSSDK. *" sein. –

+0

Können Sie die Variable "system.debug" auf "true" setzen, wenn Sie den Build in eine Warteschlange stellen und dann die gesamten Protokolle freigeben? –

+0

Überraschenderweise hat das Ändern des Inhalts von 'ModulePath' nach Ihrer Empfehlung das Problem gelöst. Stört mich, dass die "InvalidOperationException" ist irreführend, vielleicht sogar einige schlechte Ausnahmebehandlung? [Hier sind die Protokolle] (https://onedrive.live.com/redir?resid=47707C5E85187AB1!450&authkey=!AHgwV59SruF7j3Q&heint=file%2czip) mit system.debug = true für einen Build, wo ModulePath "* AWSSDK *' (und schlägt fehl). – Snixtor

Antwort

2

Die runsettings Datei Verwendung Regex Ausdrücke nach den Dateien entsprechen:

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

mit Ihrem ursprünglichen Pfad, werden alle Dateien, da Sie haben nur „*“ im Pfad ausgeschlossen. Details finden Sie unter diesem Link: Regular Expressions in Visual Studio.

Für die schlechte Ausnahme, entsprechend den Protokollen, die Sie zur Verfügung stellen, führen Sie den Build mit Hosted Build Agent aus. Ich habe einen kurzen Test mit Hosted Build Agent durchgeführt und kann dieses Problem auch reproduzieren. Dieses Problem tritt jedoch nicht auf, wenn ich es mit meinem eigenen Build-Agent versuche. Ich vermute, dass einige Einstellungen/Konfigurationen auf Hosted Build Agent dieses Problem verursachen, und ich helfe Ihnen, ein Feedback zu Microsoft Connect Page zu senden. Sie können diesen Link für die Verfolgung überprüfen: Invalid exception when run testing from Hosted Build Agent

+0

Schöne Eddie.Perfekte Erklärung und über den Anruf hinausgehen, indem Sie sofort einen Fehlerbericht erstellen. – Snixtor