本文告诉大家,如果发现在自己的工程文件出现了一个新的 ItemGroup 里面是 Service 加 GUID 是在做什么。

如果在你看到工程文件多了下面代码,里面的 GUID 可能不相同,那么就是 VisualStudio 添加了 UNIT 等单元测试

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

微软:这是故意添加的,为了支持第三方的单元测试框架,如NUnit、XUnit,VisualStudio 2012 会在工程打开的时候加载测试项目,不管这时用户有没有单元测试框架,所以 VisualStudio 2012 的启动速度就会很慢。在VisualStudio 2013,微软改变了加载的算法,只有用户存在最少一个单元测试框架才会加载测试项目。但是这样就很难知道哪个项目就是单元测试项目,于是使用两个方法去定义测试项目,其中一个就是添加<Service/>和GUID。另一个方法是使用单元测试项目模板创建使用项目类型的GUID判断是否单元测试。

参见:https://stackoverflow.com/q/18614342/6116637

Automatic Project Check Outs After Installing Visual Studio SDK


本文会经常更新,请阅读原文: https://lindexi.gitee.io/lindexi/post/VisualStudio-csproj-%E6%B7%BB%E5%8A%A0-ItemGroup-%E7%9A%84-Service.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

知识共享许可协议 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接: https://lindexi.gitee.io ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系