使用 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 Team Build - 如果 app_code 引用解决方案中的另一个项目,则构建失败