Tfs Team Foundation Server:如何为共享程序集的两个应用程序配置工作区?

Tfs Team Foundation Server:如何为共享程序集的两个应用程序配置工作区?,tfs,dependencies,workspace,Tfs,Dependencies,Workspace,我有一个关于TFS上的工作区的问题。目前,我正在使用TFS 2008(尽管我很快将迁移到TFS 2010),我有两个工作区: 工作空间1 工作空间2 Workspace1和Workspace2各自包含不同的应用程序,它们具有不同的用途、不同的用户基础、使用它们的不同开发人员等。因此,决定这两个应用程序应驻留在各自的工作区中,以支持单独的生成管理、单独的权限等。但是,过去一些糟糕的规划造成了对工作空间1中的工作空间2的依赖。为了编译Workspace1中的应用程序,它需要引用Workspace

我有一个关于TFS上的工作区的问题。目前,我正在使用TFS 2008(尽管我很快将迁移到TFS 2010),我有两个工作区:

  • 工作空间1
  • 工作空间2
Workspace1和Workspace2各自包含不同的应用程序,它们具有不同的用途、不同的用户基础、使用它们的不同开发人员等。因此,决定这两个应用程序应驻留在各自的工作区中,以支持单独的生成管理、单独的权限等。但是,过去一些糟糕的规划造成了对工作空间1中的工作空间2的依赖。为了编译Workspace1中的应用程序,它需要引用Workspace2中的一些程序集。所以,今天看起来是这样的:

  • 工作空间1
    • 对工作空间1部件和工作空间2部件的引用
  • 工作空间2
    • 对工作空间2部件的引用
现在,我想看看是否有一种“最佳”方法来尝试实现以下目标:

  • 让每个工作区都包含代码包含的所有内容 为了编译和运行需要
  • 让两个工作区中的应用程序都引用共享 从中心位置集合
我知道这两个目标相互冲突,但我很难决定该怎么做。也许我的全部问题是我用错了工作空间。或者,也许我正确地使用了它们,但这个问题没有真正的答案。我不知道

所以,我的问题有三个方面:

  • 这对其他人有意义吗
  • 我做错了什么,导致我陷入这种情况
  • 如果你遇到这种情况,你会怎么做

  • 我认为这取决于工作区1对工作区2的引用类型。如果引用的程序集是“第三方”样式的,我的意思是,不经常更新,并且有一个相当不变的API,就像从internet上引用库一样。如果是这样的话,我会将工作区2中构建的二进制文件签入到工作区1中的一个文件夹中,在该文件夹中可以引用这些二进制文件。每当对Workspace 2二进制文件进行更新时,请签出Workspace 1中的文件,将构建的文件复制到顶部并签入

    如果Workspace 2程序集的代码和API经常更改,那么您有两个选择

  • 您可以尝试将2个工作区组合在一起(不确定这有多容易)
  • 您可以尝试将引用的二进制文件从工作区2分支到工作区1。有关于如何做到这一点的信息,但也有一些限制,例如,当工作区1具有带有工作区2的分支时,您不能分支工作区1(以进行发布/功能分支)
  • 将公共代码提取到它自己的项目中
  • 此新项目的自动生成将把生成的程序集部署到文件共享上的文件夹中
  • 两个现有项目都将引用共享中的通用代码

  • 二进制文件不是源代码,不应该被检查到源代码管理(IMHO)。

    很久以前,我花了很多时间在源代码管理中寻找最佳的文件结构,在阅读了《p&p指南》之后,它向我展示了我需要的所有东西,比如在源代码管理、分支和合并策略中构建项目和解决方案,管理VisualStudioTeamSystem中的源代码管理依赖项,以及许多其他有用的东西,您可以从codeplex下载它,单击以下链接

    您有多种选择,但都有权衡

  • 将“共享代码”拆分为单独的TFS项目。正如John所说,从共享项目构建的放置位置获取每个从属应用程序引用

  • 将“共享代码”放在项目中,它与开发/发布周期的顺序最为一致。我指的是与之共享公共开发团队、公共发布周期和公共工作项规范的项目。使其他依赖项目从此项目放置位置引用程序集

  • 将所有与公共库“共享”代码的项目与“共享代码”一起放在一个TFS项目中。如有必要,为每个VS解决方案创建单独的构建。如果有必要,甚至可以锁定签入共享解决方案/项目的功能


  • 这对我来说并不少见,在我的一些项目中,我想让两个不同的项目共享一个共同的代码子集。然而,我不确定微软对“工作空间”的定义是什么意思。尽管如此,我们计划明天与一家专门从事这类工作的公司会面,以确保我们的定义是正确的:谢谢,达维肖。在我的例子中,工作空间2中引用的代码经常被更改。而且,我不确定您描述的选项2是否适用于我,如果我以后不能分支Workspace1,但我将查看您引用的资源。关于选项1,是否可以这样合并工作区?如果是这样的话,可以在不丢失历史等的情况下完成吗?另外,如果不是太多的问题,如果你在明天的咨询后学到了什么新东西,你能在这里给我们一个更新吗?我知道我会很感激,而且我可能不是唯一一个。我不知道选项1是否可行,抱歉,但如果两者紧密结合,“我认为”源代码应该在一起。我为我们查看了选项2,当我试用它时,我无法再创建工作区1的分支,除非我删除了到工作区2的链接。如果明天我学到了什么,我将在这里更新(我们有许多项目彼此之间的依赖程度不同)。“二进制文件不是源代码,不应该签入源代码管理(IMHO)”。。。我想这可能是我问题的症结所在。我在处理二进制文件