TFS 工作区包括公共代码

TFS Workspaces including common code

我们正在努力更好地利用我们的 TFS/TFVC 服务器并从 TFS 工作项中受益,我已负责弄清楚如何做到这一点。

我们有很多项目,其中大部分都使用公共代码库。我们实现新功能的方式是仅包含对代码的引用并在需要更改时将其全部构建在一起,而不是为库引用 DLL。

我的问题围绕着设置工作区,这些工作区在更新公共库中的代码以及正在处理的主要项目时最终不会造成麻烦。

在简短地处理这个问题时,我为我们正在开发的每个产品创建了多个团队项目,看起来每个开发人员都必须确保在连接到单个项目的所有工作区之间移动并签入代码对于他们每个人。我觉得这很笨拙,必须有更好的方法来完成它。

结构可能与此类似:

ROOT
|- Common Code
|- Team projects (each having their own backlog and referencing "Common Code"
|--- Product one
|--- Product two
|--- Product three

更好的方法是在单个工作区上工作,只创建团队并为每个团队积压工作,还是有一种干净的方法允许开发人员利用来自各个团队项目的公共代码库?

在设置团队项目时需要考虑很多因素。分离到不同项目的最重要原因是安全性。如果您需要确保不同的项目无法看到其他项目的元数据,那么单个团队项目不是一个好主意。

如果您的团队在他们遵循的过程中存在重大差异,他们可能还需要不同的团队项目,因为过程只能在项目级别定义,并且同一团队项目下的所有团队都必须遵循相同的流程(Scrum、CMMI、敏捷或自定义流程)。尽管将您的团队转移到相同的过程模板可能是值得的,但 Scrum 和敏捷之间并没有太多区别,因此除非您依赖 CMMI 或大量自定义模板,否则您可以在任何一个中练习 Scrum 和其他类型的敏捷有点幻想的模板。

在所有其他情况下,考虑 creating a single Team Project and using Team Backlogs to represent your projects 可能很有价值。这种方法通常称为 "One project to rule them all" 设置。

至于您的 "common code" 项目,我个人会考虑使用 Visual Studio Team Services 的包管理功能来生成对公共代码所做更改的 NuGet 包。 The ALM Rangers have written some guidance on setting this up in the past, it's not updated to the latest version of VS and TFS, but it does give a nice outline of the process. 然后将这些公共库作为 NuGet 包引用包含到您的其他项目中。这使您可以更好地控制特定项目何时升级到公共库的特定版本,并且可以很好地分离使用公共库的不同项目。完成此操作后,设置诸如持续集成、门控签入等内容也变得更加容易。使用复杂的工作区会使设置变得更加困难,您会发现这一点。

所以它看起来像:

+- YourAccount.visualstudio.com
  +- CompanyProject (Team Project)
     +- TFVC Repository (Can only be one)
       +- Common (folder)
       +- Project 1 (folder)
       +- Project 2 (folder)
       +- Project 3 (folder)
     +- Package Management nuget repository
       +- Common
     +- Teams
       +- Root / Company
          +- Project 1
          +- Project 2
          +- Project 3

如果您将项目移动到 Git,它也会变得更容易一些,因为您可以在同一个项目下拥有多个 Git 个存储库。