¿Para qué es "Service Include" en un archivo csproj?


En una solución de C#, agregué un proyecto existente.
Después de eso, Visual Studio ha agregado la siguiente entrada en otros .archivos csproj:

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

¿Para qué es esto?
¿Puedo borrarlo?

Author: GregC, 2013-09-04

3 answers

Tuve un caso similar, donde se agregó esto:

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

Esta inclusión resulta ser generada a propósito por VS2013 si crea un proyecto de prueba NUnit, pero olvida etiquetarlo como proyecto de prueba, como se describe en esta respuesta de Microsoft:

Este comportamiento es intencional.

Para soportar marcos de prueba de terceros, como NUnit y xUnit, Visual Studio 2012 cargó el Explorador de pruebas en la solución abierta, independientemente de si contenía proyectos de prueba. Este se han añadido segundos de retraso en los escenarios abiertos de inicio y solución para todos los usuarios, la mayoría de los cuales no utilizan pruebas.

En Visual Studio 2013, lo cambiamos para que el paquete Explorador de pruebas se cargue solo cuando la solución contenga uno o más proyectos de prueba. Los proyectos de prueba se identifican de dos maneras diferentes. Los proyectos creados a partir de una de las plantillas de proyecto de prueba unitaria integradas se identifican mediante GUID de tipo de proyecto. Otros tipos de proyectos, como el proyecto de biblioteca de clases con xUnit o Las pruebas NUnit, son identificadas por el Explorador de pruebas durante el primer descubrimiento de pruebas y "etiquetadas" con el elemento <Service/>.

 250
Author: avandeursen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-07 16:24:17

Personalmente no me gusta este servicio agregado a mis archivos de proyecto y creo que tenerlo es más como una solución alternativa en lugar de una solución adecuada. Así que marcar sus proyectos de prueba como proyectos de prueba me parece más correcto y esto se puede lograr agregando esto a la primera PropertyGroup:

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

{3AC096D0-A1C2-E12C-1390-A8335801FDAB} means Test Project y {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - C#. Para otros guid de tipo de proyecto vaya aquí

 32
Author: Vladimirs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-29 12:28:09

Lo bueno de los GUID bien conocidos / constantes es que son bastante únicos y, por lo tanto, muy fáciles de buscar en Google. Lo cual hice, y encontré: this and this, así como otros éxitos interesantes.
Parece que esto es en realidad un error conocido en la herramienta T4 DSL que viene con el SDK. Y afortunadamente es bastante fácil de resolver cambiando algunas claves de registro.

 12
Author: Polyfun,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-24 00:12:48