2013-09-04 7 views
138

In einer C# -Lösung habe ich ein vorhandenes Projekt hinzugefügt.
Danach hat Visual Studio den folgenden Eintrag in anderen CSPROJ Dateien hinzugefügt:Was ist "Service Include" in einer csproj-Datei?

<ItemGroup> 
    <Service Include="{B4F97281-0DBD-4835-9ED8-7DFB966E87FF}" /> 
</ItemGroup> 

Was ist das?
Kann ich es löschen?

+0

Die Lösung kompiliert erfolgreich nach dem Löschen - aber ist die Frage: Was passiert zur Laufzeit? Ich muss wissen, was es macht. – joe

Antwort

203

Ich hatte einen ähnlichen Fall, wo dies wurde hinzugefügt:

<ItemGroup> 
    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" /> 
</ItemGroup> 

Diese Aufnahme stellt sich heraus, absichtlich erzeugt werden durch VS2013, wenn Sie ein NUnit Testprojekt erstellen, aber vergessen Sie es als Testprojekt zu markieren, wie in diesem answer von Microsoft beschrieben:

Dieses Verhalten ist beabsichtigt.

Um Testframeworks von Drittanbietern wie NUnit und XUnit zu unterstützen, hat Visual Studio 2012 den Test Explorer bei geöffneter Lösung geladen, unabhängig davon, ob es Testprojekte enthielt. Dies führte zu verzögerten Start- und Lösungsszenarien für alle Benutzer, von denen die Mehrheit keine Tests verwendet.

In Visual Studio 2013 haben wir es so geändert, dass das Test Explorer-Paket nur geladen wird, wenn die Lösung ein oder mehrere Testprojekte enthält. Testprojekte werden auf zwei verschiedene Arten identifiziert. Projekte, die aus einer der Vorlagen für das integrierte Einheitentestprojekt erstellt wurden, werden mithilfe von Projekttyp-GUIDs identifiziert. Andere Projekttypen, z. B. ein Klassenbibliotheksprojekt mit XUnit- oder NUnit-Tests, werden vom Test-Explorer während der ersten Testentdeckung identifiziert und mit dem Element <Service/> "markiert".

+3

Ist es immer noch nützlich für VS 15.3+? –

+4

@JaanusVarus Ja, das passiert immer noch in VS 15.4 (Ich habe versucht, das Verhalten zu verstehen, und das hat mich hierher geführt). Ich bin mir nicht sicher, ob die Performance-Entscheidung noch einmal überprüft werden sollte, wenn das Ihre Frage war. –

10

Das Gute an GUIDs ist, dass sie ziemlich einzigartig sind und daher sehr einfach in Google zu suchen sind. Was ich getan habe, und gefunden: this und this, sowie andere interessante Treffer.
Es sieht so aus, als wäre dies ein bekannter Fehler im T4-DSL-Tool, das mit dem SDK geliefert wird. Und zum Glück ist es leicht genug, um einige Registrierungsschlüssel zu ändern.

+4

Und jetzt, wenn ich es suche, bekomme ich diese SO Frage ;-). – binki

+2

Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz zur Verfügung zu stellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. - [Aus Bewertung] (/ review/low-quality-posts/19034960) –

23

Persönlich mag ich nicht diesen Service zu meinen Projektdateien hinzugefügt und ich denke, es ist eher wie ein Workaround und nicht eine richtige Lösung. So Markieren Sie Ihre Testprojekte wie Testprojekte mir mehr richtig scheint und dies kann durch das Hinzufügen dieser zu dem ersten PropertyGroup erreicht werden:

<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> 
<TestProjectType>UnitTest</TestProjectType> 

{3AC096D0-A1C2-E12C-1390-A8335801FDAB} bedeutet Testprojekt und {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - C#. Für andere Projekttyp-Guids gehen here

+7

^Ich ziehe 'ProjectTypeGuids' auch, aber wenn Sie plattformübergreifende Entwicklung tun und MonoDevelop verwenden Sie nicht' zu öffnen der Lage sein, {3AC096D0-A1C2-E12c-1390-A8335801FDAB} 'Projekte:„Dieser Projekttyp ist nicht von MonoDevelop“unterstützt. Beide IDEs scheint glücklich, wenn Sie einfach den Testprojekttyp GUID entfernen. – WynandB

+2

Ich frage mich, was sind andere mögliche Typen für das ? Kann keine Informationen darüber finden. –

Verwandte Themen