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

如何在TFS中跨多个团队项目共享公司范围的设置?,tfs,resharper,fxcop,stylecop,Tfs,Resharper,Fxcop,Stylecop,这是一个我们已经生活了一段时间的问题。假设我有三个文件: FxCop规则集,包含我们的基本代码分析规则 例如,具有公司定义的命名约定的Resharper.DotSettings文件 一个StyleCop.Settings文件,其中一些默认样式cop设置被禁用 如何在多个TFS团队项目中共享这些公司范围的设置文件 目前,我们将这些文件复制到每个项目的Resources文件夹中,但这是一个维护噩梦,因为当我们决定更新这些文件的一些规则时,我们必须在许多不同的地方更新它们 我见过的一种方法是创建一

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

  • FxCop规则集,包含我们的基本代码分析规则
  • 例如,具有公司定义的命名约定的Resharper.DotSettings文件
  • 一个StyleCop.Settings文件,其中一些默认样式cop设置被禁用
如何在多个TFS团队项目中共享这些公司范围的设置文件

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

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

我不喜欢这主要是因为它需要手动干预和硬编码路径。理想情况下,我希望采用一种不具有侵入性的方法,即开发人员从源代码管理获得项目,并且编译时没有任何问题。不需要单独映射到特定文件夹、设置环境变量等

同时,我希望保留这些文件的历史记录,因此如果它们仍然可以进行源代码控制就好了。因为它们是公司的核心,所以最好对它们拥有有限的权限,并且每个变更都有适当的文档记录(变更集提供了这一点)

我想到的另一个方法是通过公司内部nuget软件包共享这些设置。例如,假设我有这个
$/Core
项目,但是我没有使用工作区映射或在其他项目中分支它,而是发布一个包含配置文件的nuget包(甚至不止一个),并将这些包添加到每个需要它的项目中。然后,在引用包文件夹时,我可以使用它们的相对路径,这不需要开发人员手动干预

虽然使用nuget可能工作得很好,但这个解决方案对我来说似乎很奇怪,因为nuget包应该是特定于项目的,但这将是特定于“整个团队项目”的。同样,使用这种方法,我可能必须将包添加到每个团队项目中的一个解决方案中的一个项目中。这实际上与现在共享测试适配器的方式非常相似。例如,
NUnit
。我觉得如果我使用一个内部nuget包,我必须做一些非常类似的事情:每个解决方案都必须至少加载一次包


是否有其他方法可以在整个公司内共享这些内容,同时仍保持源代码控制?如果我放松了这个约束,接受了它们不需要进行源代码控制,会怎么样?它会打开其他选项来共享它们吗?

如果您选择NuGet路径,您可以为您的FXCOP和Resharper文件创建包,然后将它们存储在本地提要中

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