自定义生成号

本主题介绍在使用升级模板时如何自定义内部版本号。 有关升级模板的更多信息,请参见使用升级模板定义生成。 使用默认模板可以更为轻松地执行此过程。 有关更多信息,请参见使用默认模板定义生成

您可以通过自行创建生成过程中运行的自定义任务来自定义 Team Foundation Build。 本主题介绍使用生成内部版本号的任务来自定义 Team Foundation Build 生成定义时必须遵循的步骤。

系统必备

在创建自定义内部版本号的任务之前,请确保满足以下条件:

  • 访问要进行自定义的生成定义的 TFSBuild.proj 文件的权限。

    TFSBuild.proj 文件可以与一个以上生成定义相关联。 若要确定 TFSBuild.proj 文件的源代码管理位置,请在团队资源管理器的**“生成”文件夹中选择生成定义,右击该生成定义,然后单击“编辑”。 TFSBuild.proj 文件的源代码管理位置显示在“生成定义”对话框中的“项目文件”**窗格中。 默认情况下,TFSBuild.proj 文件位于 Team Foundation 版本控制的 $/MyTeamProject/TeamBuildTypes/MyBuildName 文件夹中。 MyTeamProject 是团队项目的名称,也是所有团队项目源代码的根节点。 MyBuildName 是您为与 TFSBuild.proj 文件关联的第一个生成定义指定的名称。 有关如何创建 Team Foundation Build 生成类型的更多信息,请参见创建基本生成定义

    重要说明重要事项

    自定义 TFSBuild.proj 文件时,需要自定义与该文件相关的每个生成定义。

  • 一个位于本地计算机上的本地工作区,其中包含团队项目文件和生成文件。

    有关更多信息,请参见创建工作区并获取文件获取团队项目的源代码

  • 所需权限

若要执行此任务,您的**“管理生成”“管理工作区”的权限必须设置为“允许”。 还必须将“签入”“签出”权限设置为“允许”**。 有关更多信息,请参见 Team Foundation Server 权限

编写内部版本号任务

若要编写任务,可以直接实现 ITask 接口,或者从帮助器类 Task 派生类。 ITask 在 Microsoft.Build.Framework.dll 程序集中定义,Task 在 Microsoft.Build.Utilitites.dll 程序集中定义。

若要自定义 Team Foundation Build 生成的内部版本号,必须将您的任务插入到 BuildNumberOverrideTarget 目标中。 BuildNumberOverrideTarget 要求具有一个名为 BuildNumber. 的输出属性。Output 特性表示此属性是您的自定义任务的输出。 有关 Team Foundation Build 目标的更多信息,请参见可自定义的 Team Foundation Build 目标

编写自定义任务

  1. 创建一个包含自定义任务的名为 MyTask 的 Visual C# 类库。

    有关更多信息,请参见组件类

  2. 在**“项目”菜单上,单击“添加引用”,再从“添加引用”**对话框中选择“Microsoft.Build.Framework”和“Microsoft.Build.Utilities”。

  3. 将以下代码插入到 class.cs 文件。

    本示例是从 Task 帮助器类继承的,并使用 DateTime 属性 UtcNowTicks 来产生内部版本号。

    using System;
    using Microsoft.Build.Utilities;
    using Microsoft.Build.Framework;
    
    namespace BuildNumberGenerator
    {
        public class BuildNumberGenerator:Task
        {
            public override bool Execute()
            {            
                m_buildNumber = DateTime.UtcNow.Ticks.ToString();
                return true;
            }
            private string m_buildNumber;
    
            [Output]
            public string BuildNumber
            {
                get { return m_buildNumber; }
            }
        }
    }
    
  4. 生成类库以得到 MyTask.dll。

  5. 将生成的 dll 复制到本地工作区文件夹,此文件夹中还包含您的生成定义的 TFSBuild.proj 文件。

    重要说明重要事项

    必须先将 TFSBuild.proj 文件的源代码管理位置映射到本地工作区,此目录结构才会在客户端计算机上存在。 有关更多信息,请参见获取团队项目的源代码

    如果您的 TFSBuild.proj 文件存储在源代码管理的默认文件夹中,则该文件的本地副本位于客户端计算机上的“<根目录>:\本地工作区\TeamBuildTypes\MyBuildName”目录下。 本地工作区是将团队项目映射到其中的本地文件夹;MyTeamProject 是团队项目的名称;MyBuildName 是为与此 TFSBuild.proj 文件关联的第一个生成定义指定的名称。

将 dll 文件添加到源代码管理

创建了包含自定义任务的 dll 之后,必须将其添加到 Team Foundation 版本控制。 可以使用 tf addtf checkin 命令,将 dll 添加并签入到您的生成定义的 TFSBuild.proj 文件所在的位置。 有关更多信息,请参见 Add 命令Checkin 命令

添加并签入程序集

  1. 单击**“开始”,依次指向“所有程序”“Microsoft Visual Studio 9.0”“Visual Studio Tools”,然后单击“Visual Studio 2008 命令提示”**。 打开为以下团队项目映射的本地工作区:该团队项目中包含要自定义的生成类型。

    例如,在命令提示符下键入以下命令。

    > cd c:\MyTeamProject

    其中 MyTeamProject 是您的团队项目的名称。

  2. 移动到 TFSBuild.proj 文件存储的位置。

    例如,在命令提示符下键入以下命令。

    c:\MyTeamProject>cd TeamBuildTypes\MyBuildName

    其中 MyBuildName 是生成定义的名称。

  3. 若要将文件添加到 Team Foundation 版本控制,请键入以下命令。

    c:\MyTeamProject\TeamBuildTypes\MyBuildName> tf add MyTask.dll

  4. 若要将文件签入到 Team Foundation 版本控制,请键入以下命令。

    c:\MyTeamProject\TeamBuildTypes\MyBuildName> tf checkin MyTask.dll

    可以使用团队资源管理器将 dll 添加到 Team Foundation 版本控制中。 有关更多信息,请参见向版本控制中添加文件

注册任务

创建任务之后,必须通过在 TFSBuild.proj 文件的 UsingTask 元素中指定该任务来注册它。 UsingTask 元素会将该任务映射到包含该任务的实现的程序集。 有关更多信息,请参见 UsingTask 元素 (MSBuild)

通过修改 TFSBuild.proj 文件来注册任务

  1. 启动 Visual Studio。

  2. 从 Team Foundation 版本控制签出要修改的 TFSBuild.proj 文件,并在 Visual Studio XML 编辑器中将其打开。

  3. UsingTask 元素添加到 TFSBuild.proj 文件中紧随导入 (import) 语句的位置。

    <UsingTask 
        TaskName="BuildNumberGenerator.BuildNumberGenerator" 
        AssemblyFile="MyTask.dll"/>
    
  4. 若要将任务插入到 BuildNumberOverrideTarget 目标,请将包含在 <Target></Target> 标记中的以下 XML 添加到 TFSBuild.proj 文件的结尾处。

    </ItemGroup>
      <Target Name = "BuildNumberOverrideTarget" >
        <BuildNumberGenerator> 
        <Output TaskParameter="BuildNumber" PropertyName="BuildNumber"/> 
        </BuildNumberGenerator> 
      </Target>
    </Project>
    
  5. 单击**“文件”,再单击“保存”**以保存更改,然后关闭 TFSBuild.proj。

    提示

    在对 TFSBuild.proj 文件进行这些修改之后,您将接收到 XML 架构警告。 您可以放心地忽略这些警告。

  6. 将 TFSBuild.proj 再签入回源代码管理。

  7. 修改完 TFSBuild.proj 文件并将更改保存到 Team Foundation 版本控制之后,运行生成定义。

    有关更多信息,请参见将生成排入队列

    可以在生成资源管理器中查看自定义内部版本号。 有关更多信息,请参见监视正在运行的生成的进度

请参见

概念

使用升级模板定义生成

使用默认模板定义生成

其他资源

生成应用程序