我有两个答案:我们做什么以及我对你的建议。
对我们来说,我们有一套 Web 应用程序,它们都有许多共享组件。因此,尽管这是大约 50 个不同的程序集(VS 项目)和 5-10 个解决方案(取决于您如何看待它),但它们之间存在非常显着的重叠,这意味着我们希望使用 TFS per-dev 合并而不是而不是分支和合并那些重叠的资源。因此,我们实际上将所有这些都保存在一个 TFS 项目中。以下是我们的设置方式(更改名称以对您有意义):
"Official Projects" (Collection)
"Production Applications" (Project)
"Technology Proof of Concepts" (Project)
"Reference Projects" (Project) - this is a simple solution/projects using our architecture to make our architecture easier to understand as people join our team. Other reference apps will go here in the future.
"TFS Configuration" (Project)
"Playground" (Collection)
"John Doe" (Project)
"Jane Doe" (Project)
"Security Team" (Project)
"Production Test" (Project)
在我们的设置中,我们有一个存放官方公司代码的地方。此外,我们还为人们提供了一个区域,让人们可以在不担心搞砸任何事情的情况下胡闹,同时能够利用各种与 TFS 相关的好处。
但是,在您的情况下,如果我在字里行间正确阅读,我会建议一些不同的东西。我的假设:
- 每个项目除了有一些通用程序集(我认为日志记录、安全性和其他在公司范围内共享的实用程序程序集)之外,都是不相关的项目。
- 共享/公共程序集不会定期更改,因此您可以使用 DLL 引用而不是项目引用,因为您始终使用最新/最新版本的代码。
- (我还在学习基于 TFS 的假设)您可以从同一个集合跨项目分支,但不能跨集合分支。
- 除了上述共享程序集之外,没有其他代码在团队之间共享。
所以有了这些假设,我会选择这样的东西:
"Common Resources" (Collection)
"Source" (Project) - everything goes here such as logging assemblies, security assemblies, etc.
"Version 1" (Project) - Branch as you "rev" your common assemblies so people have access to older versions.
"Version 2" (Project)
"Version 3" (Project"
etc.
"Team 1" (Collection)
"Project 1"
"Project 2"
"Project 3"
"Project 4"
"Project 5"
"Team 2" (Collection)
"Project 1"
"Project 2"
"Project 3"
"Team 3" (Collection)
"Project 1"
"Project 2"
etc.
这样做,您可以通过 DLL 引用来引用公共程序集。作为特定项目的团队或开发人员,您可以决定何时开始使用较新版本的通用程序集。为此,您只需获取该版本分支的最新信息,然后添加对它的引用。如果我的假设 #3 是错误的,那么希望你能做的比这更好。否则,每个项目都有自己的空间(可以包含多个 VS 解决方案/项目,这是一个好主意),并且您的团队拥有自己的集合,以与其他团队保持距离。
只是我的 0.02 美元价值...