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





5.00/5 (10投票s)
本文介绍了如何在同一台构建服务器上构建不同版本的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中,这些实例将显示为两个不同的构建代理。然后,我们可以将特定的构建代理分配给相应的构建定义。

分步说明
- 转到文件夹:C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\Private Assemblies
- 找到文件TFSBuildService.exe和TFSBuildService.exe.config
- 在同一文件夹中创建这些文件的副本:TFSBuildService2.exe和TFSBuildService2.exe.config
- 打开TFSBuildService.exe.config文件。
修改元素
<add key="MSBuildPath" value="">
to
<add key="MSBuildPath" value="c:\windows\microsoft.net\framework\v4.0.21006\">
- 打开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">
- 现在重新启动构建机器上的“Visual Studio Team Foundation Build”Windows服务(转到控制面板/管理工具/服务)。
- 为TFSBuildService2.exe创建快捷方式。我建议将此快捷方式添加到“启动”项。
- 运行TFSBuildService2.exe。您将看到一个控制台窗口打开。请勿关闭它。只要它打开,您的构建服务器就可以构建v2008的解决方案。
- 打开Visual Studio 2008,Team Explorer,右键单击项目中的Builds文件夹,选择“管理生成代理”。将打开“管理生成代理”窗口。(注意:您应该使用VS 2008,因为我在VS 2010 Beta 2中找不到相应的菜单项。他们肯定会在发布版中修复它。)
- 现在我们需要创建两个构建代理
- “Agent 2008”具有以下参数
计算机名:<构建机器的名称>
通信端口:9194
工作目录:<构建机器上用于存放2008年源代码的路径> - “Agent 2010”具有以下参数
计算机名:<构建机器的名称>
通信端口:9191
工作目录:<构建机器上用于存放2010年源代码的路径>注意:2008年和2010年的工作目录必须不同!
- “Agent 2008”具有以下参数
-
在Team Explorer中,选择一个包含2008年版本解决方案的生成,右键单击并选择“编辑生成定义”,然后转到“生成默认设置”并选择“Agent 2008”。关闭窗口。
-
在Team Explorer中,选择一个包含2010年版本解决方案的生成,右键单击并选择“编辑生成定义”,然后转到“生成默认设置”并选择“Agent 2010”。关闭窗口。
版本通知
本文撰写于Visual Studio 2010 Beta 2发布之时。当最终版本发布时,本文中的信息可能会发生变化。
历史
- 2010年1月10日 - 文章发布