我们的团队正在考虑使用 Team Foundation Server v.11(2012 年版)来管理我们的项目。我们目前是在电子表格中进行项目管理。我们的团队仅为内部客户开发软件,并且在项目之间存在许多 dll 共享。我们还在使用 SVN 进行源代码版本控制。
我们针对不同应用程序部分有不同的解决方案:通用库、应用程序库(业务规则等)、Intranet 网站、Internet 网站、Windows Forms。以下是我们的 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应用程序)。 此外,内部网和互联网解决方案包含多个应用程序。 这是我们目前的结构。 我不确定这是否是最佳的组织结构,但它对我们有用。
使用TFS的问题在于一个团队项目无法在多个VS解决方案中具有部分。 例如,我们将为Application1设置一个TFS团队项目,以便我们可以为该应用程序设立产品积压清单。 Application1需要更改OurCompanyLibrary、OurCompanyIntranet和OurCompanyInternet才能完成应用程序,但是,在使用TFS时,只会有一个VS解决方案用于Application1。
以下是我们开发应用程序的示例。 所有领域模型和业务规则都存储在OurCompanyLibrary VS解决方案中。 当我们开发一个名为Application1的应用程序时,我们首先在OurCompanyLibrary VS解决方案下的OurCompanyLibrary.Application1 VS项目中创建领域模型和业务规则。 一旦开发出领域模型,我们就会转向在OurCompanyIntranet和OurCompanyInternet VS解决方案中编写UI界面的程序。 这些解决方案都是MVC样式的网站。 OurCompanyIntranet包含一个VS Web Project OurCompanyIntranet.UI,其中包含所有的视图(.aspx文件)、css、javascript等。OurCompanyIntranet还包含按应用程序分隔的所有模型和控制器(在这种情况下为OurCompanyIntranet.Application1)。 将其组织到TFS中成为问题,因为我们想为Application1创建一个团队项目,但该应用程序可以跨越多个解决方案,并且我们不希望通过向源代码控制添加相同的OurCompanyIntranet和OurCompanyInternet VS解决方案来使每个地方都存在重复代码。
您将如何在TFS中组织这一点? 是否有其他方式可以组织我们的代码结构,这将更有意义? 任何文章或网站都会对我们有很大帮助。