TFS中在多个团队项目之间共享代码的最佳分支策略是什么?

TFS中在多个团队项目之间共享代码的最佳分支策略是什么?,tfs,branching-and-merging,release-management,Tfs,Branching And Merging,Release Management,这是一个关于分支的理论问题,而不是关于代码体系结构或层 我有一个团队项目“SuperLibs”,包含25个.NET项目(它们是类库)。 团队项目的结构如下: Main(当前正在开发的稳定版本) Dev(从Main分支-开发中的不稳定代码) 发行版\发行版1.0 发行版\发行版2.0 发布\etc 我还有另一个团队项目“SuperLogic”,它包含一个应用程序逻辑,只依赖于SuperLibs中的5个项目。 团队项目的结构如下: Main(当前正在开发的稳定版本) Dev(从Main分支-开

这是一个关于分支的理论问题,而不是关于代码体系结构或层

我有一个团队项目“SuperLibs”,包含25个.NET项目(它们是类库)。 团队项目的结构如下:

  • Main(当前正在开发的稳定版本)
  • Dev(从Main分支-开发中的不稳定代码)
  • 发行版\发行版1.0
  • 发行版\发行版2.0
  • 发布\etc
我还有另一个团队项目“SuperLogic”,它包含一个应用程序逻辑,只依赖于SuperLibs中的5个项目。 团队项目的结构如下:

  • Main(当前正在开发的稳定版本)
  • Dev(从Main分支-开发中的不稳定代码)
  • 共享\SuperLibs\1.0版(从SuperLibs的1.0版分支)
  • 共享\SuperLibs\release2.0(从SuperLibs的release2.0分支)
  • 发行版\发行版1.0
  • 发行版\发行版2.0
  • 发布\etc
最后,我还有第三个团队项目“SuperApp”,它依赖于“SuperLibs”和“SuperLogic”。 团队项目的结构如下:

  • Main(当前正在开发的稳定版本)
  • Dev(从Main分支-开发中的不稳定代码)
  • 共享\SuperLibs\1.0版(从SuperLibs的1.0版分支)
  • 共享\SuperLibs\release2.0(从SuperLibs的release2.0分支)
  • Shared\SuperLogic\1.0版(从SuperLogic的1.0版分支)
  • Shared\SuperLogic\Release 2.0(从SuperLogic的Release 2.0分支)
  • 发行版\发行版1.0
  • 发行版\发行版2.0
  • 发布\etc
没有使用二进制引用。仅使用项目引用

现在情况是这样的:

  • 当我构建“SuperLibs”时,一切都正常
  • 当我构建“SuperLogic”时,一切仍然正常,因为SuperLogic引用的是文件夹“Shared\SuperLibs\Release x.y”中SuperLibs的项目
  • 但当我尝试构建“SuperApp”时,它失败了,因为它能够引用“共享”文件夹中的SuperLogic和SuperLibs,但“共享”文件夹中的“SuperLogic”不能引用“SuperLibs”


虽然我不想玩弄分支项目的参考路径,但可能有人有类似项目分支的经验,或者可以提供更好的分支策略?

我只是想完全从等式中删除分支。您将这三件事分开进行分支,这意味着您将分别对它们进行版本控制。如果要分别对它们进行版本控制,请将所有内容都转换为NuGet包,并通过NuGet引用二进制文件

我只是从方程中完全去掉分支。您将这三件事分开进行分支,这意味着您将分别对它们进行版本控制。如果要分别对它们进行版本控制,请将所有内容都转换为NuGet包,并通过NuGet引用二进制文件

我只是从方程中完全去掉分支。您将这三件事分开进行分支,这意味着您将分别对它们进行版本控制。如果要分别对它们进行版本控制,请将所有内容都转换为NuGet包,并通过NuGet引用二进制文件

我只是从方程中完全去掉分支。您将这三件事分开进行分支,这意味着您将分别对它们进行版本控制。如果要分别对它们进行版本控制,请将所有内容都转换为NuGet包,并通过NuGet引用二进制文件

我使用Team Foundation Server 2012。为什么它们是独立的团队项目?您是否需要为每个应用程序提供不同的安全性?不同的流程模板?非常不同的释放节奏?如果在同一个团队项目中有三棵不同的树,这会容易得多。然后,您可以将库项目作为项目引用添加到需要它们的解决方案中。基本上,我会选择一个团队项目,但因为我不能——我必须用几个团队项目来解决:)这看起来像是一个巨大的反模式,完全是过度设计的。依赖项应该通过nuget构建和引用。即使你能想出一个分支策略来支持你要做的事情,维护它也将是一场噩梦。NuGet是一个工具(顺便说一句,它在很多情况下都会失败,需要手动维护)。我们不想依赖工具。到目前为止,我们能够做到这一点。不管怎样,你知道有什么好的模式吗?我使用Team Foundation Server 2012。为什么他们是独立的团队项目?您是否需要为每个应用程序提供不同的安全性?不同的流程模板?非常不同的释放节奏?如果在同一个团队项目中有三棵不同的树,这会容易得多。然后,您可以将库项目作为项目引用添加到需要它们的解决方案中。基本上,我会选择一个团队项目,但因为我不能——我必须用几个团队项目来解决:)这看起来像是一个巨大的反模式,完全是过度设计的。依赖项应该通过nuget构建和引用。即使你能想出一个分支策略来支持你要做的事情,维护它也将是一场噩梦。NuGet是一个工具(顺便说一句,它在很多情况下都会失败,需要手动维护)。我们不想依赖工具。到目前为止,我们能够做到这一点。不管怎样,你知道有什么好的模式吗?我使用Team Foundation Server 2012。为什么他们是独立的团队项目?您是否需要为每个应用程序提供不同的安全性?不同的流程模板?非常不同的释放节奏?如果在同一个团队项目中有三棵不同的树,这会容易得多。然后,您可以将库项目作为项目引用添加到需要它们的解决方案中。基本上我会选择一个团队项目,但因为我不能——我必须用几个团队项目来解决:)这看起来像