在 TFS 中的解决方案之间共享代码 [关闭]

Posted

技术标签:

【中文标题】在 TFS 中的解决方案之间共享代码 [关闭]【英文标题】:Sharing code between solutions in TFS [closed] 【发布时间】:2012-06-19 06:11:54 【问题描述】:

我有几个不同的应用程序需要在它们之间共享代码以减少维护。我试图阅读很多关于 *** 和一般网络的内容,这是一个相当普遍的问题;我还没有找到我喜欢的答案。

我们的 TFS 分支结构是这样的。我们有三个分支开发,主要和生产。在 Development 分支上,所有活动的开发都完成了,当我们完成新功能的开发时,我们将它与 Main 合并,然后再到生产中。生产分支始终是在服务器上运行的代码。如果我们检测到必须在下一次迭代之前修复的错误。更改主要完成,并在我们部署时与生产合并。需要共享代码的应用程序不共享公共分支层次结构或公共迭代计划。事实上,其中一个应用程序每年只进行一次 1 个月的迭代。 (我知道这与传统的做法略有不同。

在我的研究过程中,我发现了一些不同的解决方案,但我都遇到了问题。

二进制共享: 我发现的一种常见方法是将编译后的二进制文件分支到开发分支下的 a 文件夹中。我的问题是,如果我们在哪里检测必须快速修复的共享代码中的错误,那么有问题的代码就会被编译。如果我们在哪里修复错误,我们将对共享代码库进行所有更改。

项目分享: 我的主要问题是如何以可接受的方式完成。我最初的想法是当新的迭代开始时,将主分支的更改与共享代码合并以更新它。将主分支与开发分支合并,以使用错误修复导致的更改来更新开发分支。并将共享代码的新更新版本分支到开发分支中。但据我了解,这不受 TFS 支持,因为我会创建嵌套分支。

我的问题是: 我如何在解决方案之间共享一些常见项目,同时保持它们隔离,并能够修复主分支上的错误,而不用担心常见项目已更改并因此引入新错误。但仍然能够修复公共项目中的错误并将这些修复合并回共享的公共项目中。

【问题讨论】:

对不起 - 我的英语不好 :( :( 但是 what 是你的问题?你想问什么?你解释了很多关于 TFS 的结构(?)和分支,我在中间的某个地方失去了你...... 对不起,我有点走神了,我现在附上了这个问题的简短版本。 您将什么作为服务共享/SOA 可能是更好的方法。如果您正在共享代码库,那么也许可以尝试创建 NuGet 包,从而“共享”二进制程序集。 我不是在谈论与外部用户共享代码,而是在我们正在开发的不同应用程序之间共享代码,以减少维护、代码重复,并创建一个通用框架来构建不同的应用程序。跨度> TFS 2010 Branch Across Team Projects - Best Practices的可能重复 【参考方案1】:

我所做的是您所谓的“二进制共享”的一个版本。如果您可以将共享代码视为第 3 方项目,那么您可以应用与运行良好的第 3 方项目相同的开发规则。这意味着您应该专门对共享代码进行版本控制(使用semVer 或类似的东西)并尽可能保持向后兼容性。

是的,你是对的,这意味着如果你在共享代码中发现了一个bug,你需要发布另一个版本,然后重新编译依赖这个代码的项目。

但是,这也意味着如果依赖共享代码的两个项目中只有一个需要修复错误,则只有该项目需要采用新版本。

另一个好处是由项目何时进行更新。因此,您可以更有信心地管理错误修复过程。

所以,要明确一点,我的建议是为共享代码创建一个新的 TFS 项目,将你对第 3 方项目(它自己的构建、NuGet 等)表现出的所有爱都给予它,然后采取将构建程序集放入要使用它的项目的库文件夹中。

希望这会有所帮助。

【讨论】:

【参考方案2】:

感谢大家的帮助,因为你们中的一些人为我的最终解决方案做出了贡献,我选择在这里发布我最终所做的事情。

我最终做的是二进制共享和代码共享

对于经常更新且迭代速度相对较快的项目,我参考了我需要的共享项目并创建了项目指南,以确保代码在特定时间内向后兼容。

对于更新频率较低的项目,我在编译后的二进制文件中进行了分支。我还创建了共享项目的版本并创建了指南,以确保任何向后兼容冲突的代码都会导致版本号的主要组成部分增加。

【讨论】:

通过您的代码共享,您是如何解决嵌套分支问题的? @Carl 同上 - 由于 TFS 不能嵌套分支,这如何工作?如果我能弄清楚,这将是我的首选解决方案。

以上是关于在 TFS 中的解决方案之间共享代码 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

TFS Build 2013 避免代码分析

如何配置 tfs build 以在发布构建完成时复制 dll

TFS代码变更和工作项关联,为系统变更提供完美的跟踪轨迹

将新项目添加到 TFS 中的现有解决方案

如何在解决方案中的项目之间共享单个配置?

c# 中的解决方案架构,其中 winforms 和 asp.mvc 共享业务逻辑和数据访问 [关闭]