如何在TFS中跨多个团队项目共享公司范围的设置?

时间:2014-10-15 15:21:28

标签: tfs resharper fxcop stylecop

这是我们已经存在了一段时间的问题。假设我有三个文件:

  • 一个FxCop规则集,包含我们的基本代码分析规则
  • 一个Resharper .DotSettings文件,例如公司定义的命名约定
  • 一个StyleCop.Settings文件,禁用了一些默认样式警察设置

如何在多个TFS团队项目中共享这些公司范围的设置文件?

目前,我们已将这些复制到每个项目的Resources文件夹中,但这是一个非常难以维护的噩梦,因为当我们决定更新这些文件的一些规则时,我们必须更新他们在很多不同的地方。

我看到的一种方法是创建一个专门用于在TFS上存储这些文件的团队项目,例如$/Core,并通过某种方式以这种方式共享文件,使用工作区映射或分支投射到其他项目中。

我不喜欢这样,主要是因为它需要人工干预和硬编码路径。理想情况下,我喜欢一种非侵入性的方法,即开发人员从源代码​​控制中获取项目并编译没有任何问题。不需要单独映射到特定的forlders,设置环境变量,等等。

与此同时,我想保留这些文件的历史记录,如果它们仍然可以被源代码控制,那就太好了。由于它们是公司的核心,因此理想的是对它们拥有有限的权限,并且每个更改都得到了适当的记录(变更集提供了这些)。

我想到的另一种方法是通过公司内部nuget包分享这些设置。比如我确实有这个$/Core项目,但是我没有使用工作空间映射或将其分支到其他项目中,而是发布了一个包含配置文件的nuget包(或者多个偶数),并添加这些包到需要它的每个项目。然后,我可以在引用它们时使用包文件夹的相对路径,并且不需要对开发人员部分进行手动干预。

尽管使用nuget可能会运行良好,但这个解决方案对我来说似乎很奇怪,因为nuget包是针对项目特定的,但这将是"整个团队项目"具体而言。同样,使用这种方法,我可能不得不将软件包添加到每个团队项目内的一个解决方案中的一个项目中。这实际上与现在共享测试适配器的方式非常相似。例如,NUnit already support this approach。如果我使用内部nuget包,我觉得我必须做一些非常类似的事情:每个解决方案都必须至少加载一次包。

还有其他方法可以在整个公司中分享这些类型的东西,同时仍然保持它们的源代码管理吗?如果我放松了这个约束,并接受他们不需要源控制怎么办?它会开放其他选项来分享它们吗?

1 个答案:

答案 0 :(得分:0)

如果沿着NuGet路线走下去,可以为FXCOP和Resharper文件创建包,然后将它们存储在本地Feed中。

对于Stylecop,您可以使用现有的NuGet包StyleCop.MSBuild,然后使用您自己的设置文件重新打包它。