什么是csproj文件中的"服务包含"?

joe*_*joe 192 c# csproj visual-studio visual-studio-2013

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

<ItemGroup>
    <Service Include="{B4F97281-0DBD-4835-9ED8-7DFB966E87FF}" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

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

ava*_*sen 257

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

<ItemGroup>
  <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

如果你创建一个NUnit测试项目,那么这个包含结果是由VS2013故意生成的,但是忘记将它标记为测试项目,如微软的这个回答所述:

这种行为是故意的.

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

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

  • 它对VS 15.3+仍然有用吗? (7认同)
  • @JaanusVarus是的,这仍然发生在VS 15.4中(我试图理解这种行为,这导致我在这里).如果这是你的问题,我不确定是否应该重新考虑绩效决定. (5认同)
  • 可以确认已在 15.7 中修复。 (3认同)
  • 仍然发生在15.6 (2认同)
  • @Adrian*这就是你将它标记为测试项目的方式.VS基本上是这样说的,"看起来这可能是一个测试项目,所以我会继续为你做标记." 或者添加Vladimirs回答中提到的项目类型. (2认同)
  • 使用 Visual Studio 2017(版本 15.x),这个问题来了又消失了。有关历史记录,请参阅 [此线程](https://github.com/Microsoft/vstest/issues/472)。该线程还提到这将最终在 Visual Studio 15.7 中修复 (2认同)

Vla*_*irs 35

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

<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<TestProjectType>UnitTest</TestProjectType>
Run Code Online (Sandbox Code Playgroud)

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

  • ^我更喜欢`ProjectTypeGuids`但是如果你正在进行跨平台开发并使用MonoDevelop,你将无法打开`{3AC096D0-A1C2-E12C-1390-A8335801FDAB}`项目:"不支持此项目类型通过MonoDevelop".如果您只是删除测试项目类型GUID,两个IDE似乎都很高兴. (11认同)
  • 我想知道<TestProjectType>的其他可能类型是什么?找不到任何关于它的信息. (3认同)

Pol*_*fun 12

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

  • 现在,当我搜索它时,我得到了这个问题;-). (8认同)
  • 需要明确的是,T4 DSL 错误是服务标签 _B4F97281-0DBD-4835-9ED8-7DFB966E87FF_ 被添加到所有项目中,即使它们不使用 T4。该错误已在 Visual Studio 2008 中修复。服务标记仍添加到使用 T4 的项目中(尽管 GUID 不同)。VS2017中依然如此。 (2认同)

归档时间:

查看次数:

25430 次

最近记录:

7 年,11 月 前