多个解决方案中的 TFS 和共享项目

标签 tfs

我们的 .NET 团队为我们公司处理属于不同类别的项目。有些是内部 Web 应用程序,有些是外部(面向公众的)Web 应用程序,我们还为公司办公室用户提供内部 Windows 应用程序,以及为我们的零售地点(商店)提供 Windows Forms 应用程序。当然,因为我们讨厌代码重用,所以我们有大量的代码在不同的应用程序之间共享。目前我们使用 SVN 作为我们的源代码控制,我们的存储库布局如下:

 - = folder, | = Visual Studio Solution
-SVN
   - Internet
      | Ourcompany.com
      | Oursecondcompany.com
   - Intranet
      | UniformOrdering website
      | MessageCenter website
   - Shared
      | ErrorLoggingModule
      | RegularExpressionGenerator
      | Anti-Xss
      | OrgChartModule etc...

所以..

Internet 文件夹中的 OurCompany.com 解决方案将有一个网站项目,它还将包括来自共享目录的 ErrorLoggingModule、RegularExpressionGenerator 和 Anti-Xss 项目。

同样,我们的 UniformOrdering 网站解决方案也将这些项目中的每一个都包含在解决方案中。

我们更喜欢有一个对 .dll 引用的项目引用,因为首先,如果我们在 OurCompany.com 网站上工作时需要在 ErrorLoggingModule 中添加或修复一个函数,它就在那里。此外,这允许我们构建每个解决方案并查看对共享代码的更改是否会破坏任何其他应用程序。如果我是正确的,这也应该在构建服务器上运行良好。

在 SVN 中,这没有问题。 SVN 和 Visual Studio 并没有像 TFS 的源代码控制那样捆绑在一起。当我们使用 TFS 时,我们从未想过如何在 TFS 中使用这种类型的结构,因为在 TFS 中,TFS 项目总是与 Visual Studio 解决方案相关联。源代码存储库是 TFS 项目的子项目,因此如果我们想这样做,我们必须在每个 TFS 项目的源代码存储库中复制共享代码。正如我的同事所说,这“打破了所有已知的关于代码重用和简单性的最佳实践”。我们切换到 SVN 对我们来说已经足够了。

然而,现在我们面临着真正修复我们的开发流程,而 TFS 的应用程序生命周期管理非常接近我们想要的以及我们想要的工作方式。我们的一个症结是共享代码问题。

我们正在评估其他商业和开源解决方案,但由于我们已经通过 MSDN 订阅为 TFS 付费,而且 TFS 几乎正是我们想要的,我们真的很想找到解决这个问题的方法。

有没有其他人遇到过这个问题并提出解决方案?

如果您看过可以与我分享的文章或帖子,那也会有所帮助。

与往常一样,我愿意接受诸如“你看错了,笨蛋,这就是应该这样做的方式。

最佳答案

我认为这里有一些误解。首先,您可以在单个 TFS 项目中拥有多个(任意数量)解决方案。此外,单个 Visual Studio 项目可以有任意数量的解决方案引用它。

其次,您使用的是什么版本的 TFS? 2010 年与 2005/08 年处理 TFS 项目的方式不同。

在 2008 年,有几种方法可以解决这个问题,具体取决于您想从中获得什么。您可以拥有多个 TFS 项目或单个 TFS 项目。

我将从多个开始。

为您的共享库类型代码设置一个 TFS 项目,并为您拥有的每个常规项目设置其他项目。作为此共享库开发过程的一部分, checkin 已完成的程序集。然后将这些程序集分支到您想要使用它们的任何其他 TFS 项目中。当您对共享库进行功能更新或错误修复时,只需将分支合并到您希望更新进入的任何其他 TFS 项目中。

这允许您对单个应用程序进行共享更改,而无需推送所有更改。

如果您想要一个包含所有内容的 TFS 项目,只需为您想要的每个 Visual Studio 项目添加文件夹。 Visual Studio 解决方案可以毫无问题地引用其基础树之外的项目。现在,在为每个解决方案配置诸如构建之类的东西时,请确保限制构建服务器从/watches 中提取的目录。这样,当对外部站点进行更改时,您就不必构建您的内部站点之一。

关于多个解决方案中的 TFS 和共享项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2866761/

相关文章:

jenkins - 将 Jenkins 中的用户帐户链接或别名到 TFS 用户帐户

tfs - 为什么 "tf history ."声称我映射的 TFS 目录中没有工作文件夹?

visual-studio-2012 - Visual Studio Online TFS 拒绝以 $ 开头的 "source control"文件名

tfs - 获取一组在特定日期后被修改的文件

tfs - 从 TFS 2008 迁移到 TFS 2010

powershell - 从 PowerShell 写入 TFS 构建服务器上的测试结果

c# - 在 TFS 中多次 checkin 后获取特定变更集

version-control - 我编辑的文件未显示在TFS的“待更改”窗口中

tfs - 您在构建自动化过程中做了哪些有趣而有趣的事情?

Eclipse TFS 插件未检测到更改