65.9K
CodeProject 正在变化。 阅读更多。
Home

如何在同一台机器上配置TFS服务器以并行构建v.2008和v.2010的解决方案

starIconstarIconstarIconstarIconstarIcon

5.00/5 (10投票s)

2010年1月10日

CPOL

4分钟阅读

viewsIcon

71604

本文介绍了如何在同一台构建服务器上构建不同版本的Visual Studio解决方案。

问题陈述

新版本的Visual Studio 2010将不支持商务智能(BI)项目类型(至少在发布后一段时间内)。有关更多信息,请参阅此 MSDN论坛帖子。开发人员应该使用Visual Studio 2008来处理这些项目。这意味着,如果您有Reporting或SSIS项目,您仍然需要早期版本的Visual Studio在构建服务器上进行构建。

显然,Visual Studio 2010和2008将在团队开发环境中并存,因此,持续集成过程必须支持这两个版本。

问题在于,没有直接的方法可以在同一台TFS构建服务器上并行构建不同版本的解决方案。在您的构建服务器上安装.NET 4.0和Visual Studio 2010后,它只能构建转换为此版本的解决方案。尝试构建BI项目将失败。

注意:必须区分这个问题和多目标定位。多目标定位是关于为不同的.NET Framework版本编译同一个源代码。有些人错误地将其与编译不同版本解决方案混淆。

概念

TFS构建服务器的核心是一个名为“Visual Studio Team Foundation Build”的Windows服务。此服务负责启动MSBuild脚本。它可以配置为使用特定版本的MSBuild。

.NET 4.0的MSBuild能够编译v.2010的解决方案。但它不识别Visual Studio 2008支持的商务智能项目。要构建这些项目,需要使用MSBuild 3.5。

不幸的是,Visual Studio Team Foundation Build服务只使用一种MSBuild版本。它无法根据我们的需求智能地“切换”版本。

但是,我们可以利用其以控制台模式运行的能力。因此,我们可以在同一台机器上拥有多个构建服务实例。每个实例将使用独立的配置。

  • 第一个实例将作为Windows服务运行,并监听端口9191。它将使用MSBuild v4.0编译v.2010的解决方案。
  • 第二个实例将作为控制台应用程序运行,并监听端口9194。它将使用MSBuild v3.5编译v.2008。

在Visual Studio Team Explorer中,这些实例将显示为两个不同的构建代理。然后,我们可以将特定的构建代理分配给相应的构建定义。

分步说明

  1. 转到文件夹:C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\Private Assemblies
  2. 找到文件TFSBuildService.exeTFSBuildService.exe.config
  3. 在同一文件夹中创建这些文件的副本:TFSBuildService2.exeTFSBuildService2.exe.config
  4. 打开TFSBuildService.exe.config文件。

    修改元素

    <add key="MSBuildPath" value="">

    to

    <add key="MSBuildPath" value="c:\windows\microsoft.net\framework\v4.0.21006\"> 
  5. 打开TFSBuildService2.exe.config文件。

    修改元素

    <add key="MSBuildPath" value=""> 

    to

    <add key="MSBuildPath" value="c:\windows\microsoft.net\framework\v3.5\">

    修改元素

    <add key="InteractivePort" value="9192">

    to

    <add key="InteractivePort" value="9194">
  6. 现在重新启动构建机器上的“Visual Studio Team Foundation Build”Windows服务(转到控制面板/管理工具/服务)。
  7. TFSBuildService2.exe创建快捷方式。我建议将此快捷方式添加到“启动”项。
  8. 运行TFSBuildService2.exe。您将看到一个控制台窗口打开。请勿关闭它。只要它打开,您的构建服务器就可以构建v2008的解决方案。
  9. 打开Visual Studio 2008,Team Explorer,右键单击项目中的Builds文件夹,选择“管理生成代理”。将打开“管理生成代理”窗口。(注意:您应该使用VS 2008,因为我在VS 2010 Beta 2中找不到相应的菜单项。他们肯定会在发布版中修复它。)
  10. 现在我们需要创建两个构建代理
    • “Agent 2008”具有以下参数
      计算机名:<构建机器的名称>
      通信端口:9194
      工作目录:<构建机器上用于存放2008年源代码的路径>

    • “Agent 2010”具有以下参数
      计算机名:<构建机器的名称>
      通信端口:9191
      工作目录:<构建机器上用于存放2010年源代码的路径>

      注意:2008年和2010年的工作目录必须不同!

  11. 在Team Explorer中,选择一个包含2008年版本解决方案的生成,右键单击并选择“编辑生成定义”,然后转到“生成默认设置”并选择“Agent 2008”。关闭窗口。

  12. 在Team Explorer中,选择一个包含2010年版本解决方案的生成,右键单击并选择“编辑生成定义”,然后转到“生成默认设置”并选择“Agent 2010”。关闭窗口。

版本通知

本文撰写于Visual Studio 2010 Beta 2发布之时。当最终版本发布时,本文中的信息可能会发生变化。

历史

  • 2010年1月10日 - 文章发布
© . All rights reserved.