具有多个Visual Studio解决方案的TFS项目 我们的团队正在研究使用Team Foundation Server V.11(2012)来管理我们的项目。我们目前在电子表格中进行项目管理。我们的团队只为内部客户开发软件,项目之间有很多dll共享。我们还将SVN用于源代码版本控制

具有多个Visual Studio解决方案的TFS项目 我们的团队正在研究使用Team Foundation Server V.11(2012)来管理我们的项目。我们目前在电子表格中进行项目管理。我们的团队只为内部客户开发软件,项目之间有很多dll共享。我们还将SVN用于源代码版本控制,tfs,Tfs,我们为应用程序的不同部分提供了解决方案:公共库、应用程序库(业务规则等)、Intranet网站、Internet网站、Windows窗体。下面是我们的SVN结构的样子 SVN -CommonLibrary (VS Solution) -Source -CommonLibrary.Core (VS Project) -CommonLibrary.Security (VS Project) -Common

我们为应用程序的不同部分提供了解决方案:公共库、应用程序库(业务规则等)、Intranet网站、Internet网站、Windows窗体。下面是我们的SVN结构的样子

SVN
    -CommonLibrary (VS Solution)
        -Source
            -CommonLibrary.Core (VS Project)
            -CommonLibrary.Security (VS Project)
            -CommonLibrary.Web (VS Project)
    -OurCompanyLibrary (VS Solution)
        -Libraries (Projects within this solution reference these)
            -CommonLibrary.Core.dll
            -CommonLibrary.Security.dll
        -Source
            -OurCompanyLibrary.Application1 (VS Project)
            -...
            -OurCompanyLibrary.ApplicationN (VS Project)
    -OurCompanyIntranet (VS Solution) (MVC framework)
        -Libraries (Projects within this solution reference these)
            -CommonLibrary.Core.dll
            -CommonLibrary.Security.dll
            -CommonLibrary.Web.dll
            -OurCompanyLibrary.Application1.dll
        -Source
            -OurCompanyIntranet.Application1 (VS Class Library Project)
            -...
            -OurCompanyIntranet.ApplicationN (VS Class Library Project)
            OurCompanyIntranet.UI (VS Web Project)
    -OurCompanyInternet (VS Solution) (MVC framework)
        -Libraries (Projects within this solution reference these)
            -CommonLibrary.Core.dll
            -CommonLibrary.Security.dll
            -CommonLibrary.Web.dll
            -OurCompanyLibrary.Application1.dll
        -Source
            -OurCompanyInternet.Application1 (VS Class Library Project)
            -...
            -OurCompanyInternet.ApplicationN (VS Class Library Project)
            -OurCompanyInternet.UI (VS Web Project)
将代码拆分为多个解决方案的原因是,我们可以在不同的情况下重用应用程序库(Intranet应用程序、Internet应用程序、Winform应用程序)。此外,intranet和internet解决方案包含多个应用程序。这是我们目前的结构。我不确定这是不是最好的组织结构,但它对我们很有效

切换到TFS的问题是,一个团队项目不能在多个VS解决方案中包含部件。例如,我们将为Application1设置一个TFS团队项目,以便为该应用程序创建一个产品积压工作。Application1需要更改我们的CompanyLibrary、CompanyIntranet和CompanyIntranet来完成应用程序,但是,使用TFS,Application1只有一个VS解决方案

下面是我们如何开发应用程序的示例。所有域模型和业务规则都存储在我们公司的数据库VS解决方案中。当我们开发一个名为Application1的应用程序时,我们首先开始在我们的CompanyLibrary VS解决方案下的OurCompanyLibrary.Application1 VS项目中创建域模型和业务规则。一旦领域模型被开发出来,我们就开始在我们的公司互联网和我们的公司互联网VS解决方案中编程UI方面的东西。这些解决方案是一个MVC风格的网站。OurCompanyIntranet包含一个VS Web项目OurCompanyIntranet.UI,其中包含所有视图(.aspx文件)、css、javasciprt等。OurCompanyIntranet还包含由应用程序分隔的所有模型和控制器(本例中为OurCompanyIntranet.Application1)。在TFS中组织这一点成为了一个问题,因为我们需要一个针对Application1的团队项目,但该应用程序可以跨越多个解决方案,我们不希望通过向源代码管理添加相同的OurCompanyIntranet和OurCompanyIntranet VS解决方案而在任何地方都有重复的代码


您将如何在TFS中组织此活动?有没有其他方法可以使我们的代码结构更有意义?任何文章或网站如果能引导我们朝着正确的方向发展,都会大有裨益。

正如您所预测的:-

我们公司的图书馆将是一个VS解决方案

OurCompanyLibrary.Application1。。。我们的companylibrary.ApplicationN将是该解决方案中的VS项目

我们的companylibrary.ApplicationX.dll将作为我们公司互联网和我们公司互联网VS解决方案中的参考

我不确定我是否理解你的问题

我们公司数据库中的应用程序与项目可以单独构建,生成自己的dll,然后在其他两个解决方案中引用。 如果问题是所有应用程序都在一个VS团队项目(我们的CompanyLibrary)下,那么答案是为每个应用程序创建一个单独的VS团队项目—我们的CompanyLibrary1用于应用程序1,我们的CompanyLibrary2用于应用程序2,等等。 每个应用程序的开发都是完全独立的,并且与其他应用程序是分开的

如果问题是您希望在不同的解决方案中使用源的不同部分,那么可以通过将项目添加到解决方案中来实现。 这确实意味着所有这些解决方案都有所有的源代码。 我们在我工作的地方也有相似之处:- 我们有一个包含两个项目的解决方案—我们的公共业务逻辑层和我们的公共数据访问层。 我们的其他每个解决方案都包含这些项目。 这意味着我们可以从任何解决方案中编辑源代码


我不知道这些对你是否有帮助,但祝你好运

如果这是一个在produciton中运行的应用程序,我将对文件夹/解决方案结构进行最小的更改。在构建定义中的TFS中,您可以选择多个项目,也可以在构建脚本中放置多个解决方案,如下面的示例所示


首先,不要使用多个团队项目,这是每个人在开始时都会犯的一个巨大错误。对于团队规模和开发内容:您需要一个团队项目

当有两个团队由完全不同的人组成,使用完全不同的方法/流程处理完全不同的项目时,您将使用两个团队项目

通过一个团队项目,您仍然可以:

  • 有许多分支(相关或不相关)
  • 在您需要的最低级别管理源代码管理
  • 使用工作项的区域路径(即节点树)将项目拆分为子类别(功能、技术、您需要的任何内容)。这样,您可以有一个大的产品积压或专用的
  • 关于整个项目或特定区域的总体报告(仍使用区域路径,但在Reporting Services中)
  • 相信我,这是最好的方式,很多人(包括我第一次)犯了错误,使用了多个团队项目,之后不得不为此付出代价。您需要的是一个好的源代码管理层次结构和一个好的区域路径树
关于解决办法:

每个项目的主要组件都有一个解决方案不是坏事,开发人员可以处理项目的一个专用子集,以最大限度地提高生产率并减少组件之间的耦合

但您仍然可以有一个全局解决方案,该解决方案引用您的所有项目,并在您需要进行影响所有项目的更改时使用