使用 TFS 上的项目引用使用多个解决方案

Posted

技术标签:

【中文标题】使用 TFS 上的项目引用使用多个解决方案【英文标题】:Working with multiple solutions with projects references on TFS 【发布时间】:2019-04-16 04:17:11 【问题描述】:

我们最近转移到在 TFS 服务器上管理的所有解决方案上的项目引用,并且我们正在使用 Visual Studio 2013。我们的开发解决方案树看起来像这样 -

- Main Solution A(Solution)
   Core1 Client Library(Project reference)
   Core2 Client Library(Project reference)
   Core3 Client Library(Project reference)
   .... 
- Main Solution B(Solution)
   Core2 Client Library(Project reference)
   Core3 Client Library(Project reference)
   Core4 Client Library(Project reference)
   .... 
- Core1 Project (Solution)
   Client Library (Project that references all other projects in this solution)
   Project1 (Project)
   Project2 (Project)
   Project3 (Project)
- Core2 Project (Solution)
   Client Library (Project that references all other projects in this solution)
   Project1 (Project)
   Project2 (Project)
   Project3 (Project)
 ...

每当我们想要开始对某些核心功能进行重大更新时,我们有两个选择:要么在每个解决方案的开发分支上工作并冒着破坏它的风险,要么分支每个将要更改的解决方案,更改每个分支解决方案中的所有引用以与其他分支项目一起使用

例如,向主解决方案 B 添加功能需要分支主解决方案 B,分支 Core2 + Core3 + Core4 并将这些新分支中的所有项目引用更改为其他新分支。

为每个工作项执行此操作非常耗时,我们觉得有一种更聪明的做事方式,但无法弄清楚。有什么想法吗?

【问题讨论】:

【参考方案1】:

如果它们紧密耦合到您所描述的程度,则应将它们分支并合并为一个单元。

另一种选择,尽管它代表了对您的工作流程和开发实践的更大改变:

将应用程序之间共享的任何内容分解为 NuGet 包,并将共享引用作为 NuGet 包而不是项目引用进行管理。

【讨论】:

我和一些团队成员谈过(我不太熟悉 NuGet 的工作原理),我们同意切换到 NuGet 包可能会有所帮助,但仍然无法解决在分支之间切换引用的潜在问题,因为我们它们之间仍然会有紧密的耦合。如果我们无法获得更多关于如何解决此问题的建议,我们可能会考虑减少解决方案之间的耦合和/或迁移到 NuGet 包。 @T.Bogdan 如果您使用 NuGet 包,则不要使用项目引用——您使用包引用。

以上是关于使用 TFS 上的项目引用使用多个解决方案的主要内容,如果未能解决你的问题,请参考以下文章

通过 TFS Build 部署一个多个数据库项目的问题

TFS Team Build - 如果 app_code 引用解决方案中的另一个项目,则构建失败

问题与解决怎么删除TFS云端上的项目

使用 TFS 中的 Web 部署在不同的网站上部署多个 Web 应用程序

为一个解决方案发布多个项目

TFS/VSTS:按组引用自定义变量