什么是“服务包含”在csproj文件中?

在C#解决scheme中,我添加了一个现有的项目。
之后,Visual Studio在其他.csproj文件中添加了以下条目:

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

这是用来干嘛的?
我可以删除它吗?

我有一个类似的情况,在这里添加:

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

如果你创build了一个NUnittesting项目,那么这个包含就会被VS2013专门生成,但忘了把它标记为testing项目,正如微软在这个答案中所描述的那样:

这种行为是有意的。

为了支持NUnit和XUnit等第三方testing框架,Visual Studio 2012在解决scheme打开时加载了testing浏览器,无论它是否包含testing项目。 这为所有用户启动和解决scheme打开scheme增加了几秒钟的延迟,其中大多数用户不使用testing。

在Visual Studio 2013中,我们对其进行了更改,以便仅在解决scheme包含一个或多个testing项目时加载testing浏览器软件包。 testing项目有两种不同的方式。 从内置的unit testing项目模板创build的项目使用项目typesGUID进行标识。 其他types的项目(如带有XUnit或NUnittesting的类库项目)在第一次testing发现期间由testing资源pipe理器标识,并使用<Service/>项标记。

我个人不喜欢这个服务添加到我的项目文件,我认为它更像是一个解决方法,而不是一个适当的解决scheme。 因此,将您的testing项目标记为testing项目对我来说似乎更加正确,可以通过将其添加到第一个PropertyGroup来实现:

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

{3AC096D0-A1C2-E12C-1390-A8335801FDAB}表示testing项目和{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} – C#。 对于其他项目types的GUID去这里

关于guid的好处是,它们非常独特,因此在Google中search非常容易。 我做了什么,发现这个和这个 ,以及其他有趣的命中。 看起来这是Microsoft SDK中的一个错误。