web-dev-qa-db-fra.com

A quoi sert "Service Include" dans un fichier csproj?

Dans une solution C #, j'ai ajouté un projet existant.
Après cela, Visual Studio a ajouté l'entrée suivante dans d'autres fichiers .csproj:

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

C'est pour quoi?
Puis-je le supprimer?

189
joe

J'ai eu un cas similaire, où cela a été ajouté:

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

Si vous créez un projet de test NUnit mais que vous oubliez de le baliser en tant que projet de test, VS2013 génère cette inclusion volontairement, comme décrit dans le présent réponse de Microsoft:

Ce comportement est intentionnel.

Pour prendre en charge les infrastructures de test tierces, telles que NUnit et XUnit, Visual Studio 2012 a chargé Test Explorer à l'ouverture de la solution, qu'il contienne ou non des projets de test. Cela a ajouté quelques secondes de retard au démarrage et aux scénarios d'ouverture de solution pour tous les utilisateurs, dont la majorité n'utilise pas de tests.

Dans Visual Studio 2013, nous l'avons modifié pour que le package Test Explorer ne soit chargé que lorsque la solution contient un ou plusieurs projets de test. Les projets tests sont identifiés de deux manières différentes. Les projets créés à partir de l'un des modèles de projet de test d'unité intégrés sont identifiés à l'aide de GUID de type de projet. D'autres types de projets, tels que les projets de bibliothèque de classes avec des tests XUnit ou NUnit, sont identifiés par Test Explorer lors de la découverte du premier test et "étiquetés" avec le <Service/> article.

255
avandeursen

Personnellement, je n'aime pas ce service ajouté à mes fichiers de projet et je pense que le faire s'apparente davantage à une solution de contournement qu'à une solution appropriée. Donc, marquer vos projets de test comme des projets de test me semble plus correct et ceci peut être réalisé en ajoutant ceci au premier PropertyGroup:

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

{3AC096D0-A1C2-E12C-1390-A8335801FDAB} signifie Test Project et {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - C #. Pour les autres types de projets, allez ici

33
Vladimirs

La bonne chose à propos des GUID connus/constants est qu’ils sont plutôt uniques et donc très faciles à rechercher dans Google. Ce que j'ai fait et trouvé: this et this , ainsi que d'autres hits intéressants.
Il semble qu’il s’agisse d’un bogue connu de l’outil T4 DSL fourni avec le SDK. Et heureusement, il est assez facile à résoudre en modifiant certaines clés de registre.

12
Polyfun