203

In a C# solution, I added a existing project.
After that, Visual Studio has added the following entry in other .csproj files:

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

What's this for?
Can I delete it?

4

3 回答 3

264

我有一个类似的案例,添加了这个:

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

如果您创建 NUnit 测试项目,但忘记将其标记为测试项目,则此包含结果是 VS2013 故意生成的,如Microsoft的此答案中所述:

这种行为是故意的。

为了支持第三方测试框架,如 NUnit 和 XUnit,Visual Studio 2012 在打开的解决方案时加载了测试资源管理器,无论它是否包含测试项目。这增加了所有用户的启动和解决方案打开场景的延迟,其中大多数用户不使用测试。

在 Visual Studio 2013 中,我们对其进行了更改,以便仅在解决方案包含一个或多个测试项目时才加载测试资源管理器包。测试项目以两种不同的方式标识。从内置单元测试项目模板之一创建的项目使用项目类型 GUID 进行标识。其他类型的项目,例如带有 XUnit 或 NUnit 测试的类库项目,在第一次测试发现期间由测试资源管理器识别并用<Service/>项目“标记”。

于 2014-04-07T16:24:17.077 回答
37

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

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

{3AC096D0-A1C2-E12C-1390-A8335801FDAB}表示测试项目和{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}- C#。对于其他项目类型指南,请转到此处

于 2015-10-29T12:28:09.447 回答
13

众所周知/常量GUID的好处是它们非常独特,因此很容易在 Google 中搜索。我做了,发现: thisthis,以及其他有趣的热门歌曲。
看起来这实际上是 SDK 附带的 T4 DSL 工具中的一个已知错误。幸运的是,通过更改一些注册表项很容易解决。

于 2013-09-04T12:58:35.020 回答