演练:配置 Team Build 以生成 Visual Studio 安装项目
更新:2007 年 11 月
在生成过程中,可以通过添加自定义任务或使用在指定点执行的 MSBuild 任务来自定义 Team Foundation Build。本主题解释通过自定义生成定义来使用 MSBuildExec 任务生成 Visual Studio 安装项目时所需的步骤。
先决条件
为了完成本演练,您需要:
一台满足以下条件的客户端计算机:
已安装 Development Edition
已安装团队资源管理器
到 Team Foundation Server 的可用连接
具备要用作工作区的本地目录
一个满足以下条件的团队项目:
已创建生成定义
设有映射到本地目录的源代码管理工作区
有关更多信息,请参见如何:创建映射的工作区。本演练使用本地工作区:C:\DeploymentProjects。
启用源代码管理
若要确保已将 Visual Studio 配置为使用 Team Foundation 版本控制,请在“工具”菜单上单击“选项”,再单击“源代码管理”。
在“当前源代码管理插件”列表框中选择“Visual Studio Team Foundation Server”。
具备已安装 Team Foundation Build 的生成代理。
必须在生成代理上安装 Visual Studio,才能使用 MSBuildExec 任务来调用 devenv.exe,以生成安装项目。有关更多信息,请参见 Exec 任务和 Devenv 命令行开关。
说明: |
---|
生成代理是运行生成的计算机。有关更多信息,请参见如何:创建和管理生成代理。 |
必需的权限
若要完成本演练,必须将“管理生成”和“管理工作区”权限设置为“允许”。还必须将“签入”和“签出”权限设置为“允许”。
若要创建团队项目,您的“创建新项目”权限必须设置为“允许”,并且您必须是 Windows SharePoint Server 中“SharePoint Central Admins”组的成员且在 SQL Reporting Services 中具有“内容管理员”权限。
您必须在运行由 Team Foundation Build 创建的安装程序的计算机上具有安装权限。
创建 Visual Studio 项目
本演练中的过程会创建一个简单的 C# Windows 窗体应用程序,该程序将用作配置 Team Foundation Build 以生成 Visual Studio 安装项目的示例。
创建 Visual Studio Windows 窗体应用程序
在“文件”菜单上,指向“新建”,然后单击“项目”。
在“新建项目”对话框中,在“项目类型”窗格中选择“Visual C#”。在“模板”窗格中选择“Windows 窗体应用程序”。
在“名称”框中键入 HelloWorldTest。在“位置”框中键入“C:\DeploymentProjects”,或打开为团队项目选择的本地工作区。
单击“确定”。
HelloWorldTest 显示在解决方案资源管理器中,Form1.cs 显示在 Windows 窗体设计器中。
在“视图”菜单上,单击“工具箱”以使控件列表可见。
将一个“Button”控件拖动到窗体中。
双击新按钮以打开代码编辑器。
Visual C# 已插入一个称为 button1_Click 的方法。
将以下代码添加到方法中:
private void button1_Click(object sender, EventArgs e) { MessageBox.Show("Hello World!"); }
在“文件”菜单上单击“全部保存”保存更改。
在“生成”菜单上单击“生成 HelloWorldTest”以生成解决方案并验证没有生成错误。
创建部署项目
在解决方案资源管理器中选择“HelloWorldTest”解决方案,然后在“文件”菜单上指向“添加”,再单击“新建项目”。
在“添加新项目”对话框中的“项目类型”窗格中,展开“其他项目类型”节点,单击“安装和部署”,再单击“模板”窗格中的“安装项目”。在“名称”框中键入 HelloWorldTestInstaller。
单击“确定”关闭对话框。
项目添加到解决方案资源管理器中,并且“文件系统编辑器”打开。
将 HelloWorldTest 应用程序添加到安装程序中
在解决方案资源管理器中选择“HelloWorldTestInstaller”。在“文件系统编辑器”中右击“应用程序文件夹”节点,指向“添加”,再单击“文件”。
在“添加文件”对话框中打开 HelloWorldTest.exe 的位置,选择 HelloWorldTest.exe,再单击“打开”。
在本演练中的位置为“C:\DeploymentProjects\HelloWorldTest\HelloWorldTest\obj\Debug\HelloWorldTest.exe”。文件路径可能会依本地工作区的位置而不同。
在“文件”菜单上单击“全部保存”保存更改。
在“生成”菜单上单击“生成 HelloWorldTestInstaller”以生成安装程序的本地副本并验证没有生成错误。
若要验证安装项目生成了安装程序,请打开输出文件位置。在输出文件位置应该可以看到 HelloWorldTestInstaller.msi 和 setup.exe。
说明: 若要查找输出文件,请在解决方案资源管理器中右击“HelloWorldTestInstaller”项目,再单击“属性”。在“HelloWorldTestInstaller 属性页”对话框中,“输出文件名”框包含安装程序文件的位置。
修改 vdproj 文件以使用 Team Foundation Build
在解决方案资源管理器中右击“HelloWorldTestInstaller”项目,再单击“属性”。在“HelloWorldTestInstaller Property 属性页”对话框中单击“配置管理器”。
确保 HelloWorldTest 和 HelloWorldTestInstaller 的“生成”框都已被选中。
单击“关闭”关闭“配置管理器”对话框,再单击“确定”关闭“HelloWorldTestInstaller 属性页”对话框。
在“文件”菜单上单击“全部保存”保存更改。
找到 HelloWorldTestInstaller.vdproj 文件。
在本演练中的位置是“C:\DeploymentProjects\HelloWorldTest\HelloWorldTestInstaller”。文件路径可能会依本地工作区的位置而不同。
右击“HelloWorldTestInstaller.vdproj”,指向“打开方式”,再单击“选择程序”。在“打开方式”对话框中,从“程序”窗格中选择“记事本”,再单击“确定”以在记事本中打开 HelloWorldTestInstaller。
确认所有文件路径都相对于 HelloWorldTestInstaller.vdproj 文件的位置列出。
不应有绝对路径列出。
将 HelloWorldTest 添加并签入到 Team Foundation 源代码管理
在解决方案资源管理器中右击“HelloWorldTest”解决方案,再单击“将解决方案添加到源代码管理”。
所有文件旁边都会出现一个黄色加号。它指示这些文件是挂起的源代码管理添加项。
在解决方案资源管理器中右击“HelloWorldTest”解决方案,再单击“签入”。在“签入 - 源文件 - 工作区: <工作区名称>”对话框中,滚动到所选择的文件。清除“HelloWorldTest.exe”的“名称”框,再单击“签入”。
现在,这些文件便签入到 Team Foundation 版本控制。
重要说明: 应确保取消选中可执行文件,因为您要将 Team Foundation Build 配置为生成新的可执行文件。
修改 TFSBuild.proj 文件
在使用 Team Foundation Build 生成 HelloWorldTestInstaller 项目之前,必须创建新的生成定义,或者使用可修改的现有生成定义。有关更多信息,请参见如何:创建生成定义。必须修改与生成定义关联的 TFSBuild.proj 项目文件,才能指示其生成安装项目。
修改 TFSBuild.proj 文件以生成安装项目
在“视图”菜单上指向“其他窗口”,然后单击“源代码管理资源管理器”。
在源代码管理资源管理器中的“文件夹”窗格中展开您的团队项目,然后找到已创建的 TFSBuild.proj 文件。默认位置是 TeamBuildTypes 文件夹,它位于团队项目文件夹下。
在查看窗格上选择要用于生成 HelloWorldTest 和 HelloWorldTestInstaller 的生成类型。如果本地工作区中不存在该文件的副本,请右击“TeamBuildType”文件夹,再单击“获取最新版本”。
此操作将可用文件签出以对其进行编辑。
在查看窗格上双击生成类型,右击 TFSBuild.proj,再单击“签出以进行编辑”。在“签出”对话框上选择“无 - 允许共享的签出”,再单击“签出”。
一个红色的复选标记会出现在 TFSBuild.proj 文件的旁边,指示其源代码管理状态。
双击 TFSBuild.proj 文件,在 Visual Studio XML 编辑器中将其打开。
将下面的代码以粗体形式添加到 TFSBuild.proj 文件的末尾,并置于 </Project> 结束标记之前。
<Target Name="AfterCompile"> <Exec Command=""$(ProgramFiles)\Microsoft Visual Studio 9.0\Common7\IDE\devenv" "$(SolutionRoot)\HelloWorldTest\HelloWorldTestInstaller\HelloWorldTestInstaller.vdproj" /Build "Debug|Any CPU""/> <Copy SourceFiles="$(SolutionRoot)\HelloWorldTest\HelloWorldTestInstaller\Debug\HelloWorldTestInstaller.msi; SolutionRoot)\HelloWorldTest\HelloWorldTestInstaller\Debug\setup.exe" DestinationFolder="$(OutDir)" /> </Target>
此代码使用 MSBuildexec 任务调用 devenv.exe 程序,进而生成 HelloWorldTestInstaller 安装项目。有关更多信息,请参见 Exec 任务。MSBuildcopy 任务用于将 .msi 和 .exe 文件复制到 Team Foundation Build 输出目录。有关更多信息,请参见 Copy 任务。
当 Team Foundation Build 执行 CoreCompile 目标时,将编译 HelloWorldTest 应用程序。执行完该目标后,将执行 AfterCompile 目标。有关目标名称的更多信息,请参见了解 Team Foundation Build 配置文件。
在“文件”菜单上单击“保存”保存更改,然后关闭 TFSBuild.proj。
在源代码管理资源管理器中,右击 TFSBuild.proj,再单击“签入挂起的更改”。(可选)可以在“签入 - 源文件 - 工作区: <工作区名称>”对话框中添加注释。单击“签入”将 TFSBuild.proj 签入源代码管理。
运行生成定义
在修改完 TFSBuild.proj 文件并将更改保存到 Team Foundation 版本控制中以后,请运行生成定义生成部署项目。
运行团队生成定义
在“生成”菜单中单击“使新生成入队”。
在“将生成‘团队项目名称’排队”对话框中选择要使用的生成定义、生成代理以及队列中的优先级,然后单击“排队”。
有关更多信息,请参见如何:启动生成定义或对其进行排队。
可以在生成资源管理器中监视生成过程。有关更多信息,请参见如何:监视生成过程。
在生成资源管理器中单击“摘要”标题下的日志文件。检查日志文件中是否有错误。
说明: 可以放心地忽略警告 MSB4078: 项目文件“HelloWorldTestInstaller\HelloWorldTestInstaller.vdproj”。该文件由使用 MSBuildExec 任务的 devenv.exe 程序生成。
安装生成的安装文件
找到生成放置位置“\\<放置位置>\Public_build\HelloWorldTestBuild_<内部版本号>\Release”。
放置位置是与日志文件位置相同的文件共享,它在生成资源管理器中的“摘要”标题下列出。
将 HelloWorldTestInstaller.msi 和 setup.exe 文件复制到您是其“Windows Administrator”安全组成员或者您的“安装”权限已设置为“允许”的计算机上。
双击 setup.exe 文件,然后按照安装向导中的说明进行操作。
HelloWorldTestInstaller.exe 安装在路径“<根目录>:\Program Files\Microsoft\HelloWorldTestInstaller”下。
定位到“<根目录>:\Program Files\Microsoft\HelloWorldTestInstaller”。
双击 .exe 文件以运行该应用程序。
后续步骤
可以修改 Visual Studio 安装项目,以在安装向导中配置额外的步骤。有关更多信息,请参见 Windows Installer 部署概念。
请参见
任务
演练:通过自定义任务自定义 Team Foundation Build