206 votes

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 les autres fichiers .csproj :

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

C'est pour quoi faire ?
Je peux l'effacer ?

267voto

avandeursen Points 1597

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

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

Cette inclusion s'avère être générée volontairement par VS2013 si vous créez un projet de test NUnit, mais que vous oubliez de le baliser comme projet de test, comme décrit dans ce document réponse de Microsoft :

Ce comportement est intentionnel.

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

Dans Visual Studio 2013, nous l'avons modifié de façon à ce que le package Test Explorer soit chargé uniquement lorsque la solution contient un ou plusieurs projets de test. Les projets de test sont identifiés de deux manières différentes. Les projets créés à partir de l'un des modèles de projet de test unitaire 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 classe avec des tests XUnit ou NUnit, sont identifiés par Test Explorer lors de la découverte du premier test et sont "marqués" avec le GUID <Service/> article.

37voto

Vladimirs Points 520

Personnellement, je n'aime pas que ce service soit ajouté à mes fichiers de projet et je pense qu'il s'agit plus d'une solution de contournement que d'une véritable solution. Ainsi, marquer vos projets de test comme projets de test me semble plus correct et cela 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 projet d'essai et {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - C#. Pour d'autres guides de type de projet, voir aquí

13voto

ShellShock Points 4268

La bonne chose à propos de connu / constant GUIDs est qu'ils sont pratiquement uniques et donc très faciles à rechercher dans Google. Ce que j'ai fait, et j'ai trouvé : este y este ainsi que d'autres résultats intéressants.
Il semble qu'il s'agisse en fait d'un bogue connu dans l'outil T4 DSL fourni avec le SDK. Et heureusement, il est assez facile à résoudre en modifiant certaines clés de registre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X