如何:自定义内部版本号

更新:2007 年 11 月

您可以通过自行创建生成过程中运行的自定义任务来自定义 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. 的输出属性 (Property)。Output 属性 (Attribute) 表示此属性 (Property) 是您的自定义任务的输出。有关 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 版本控制之后,运行生成定义。

    有关更多信息,请参见如何:启动生成定义或对其进行排队

    可以在 生成资源管理器 中查看自定义内部版本号。有关更多信息,请参见如何:监视生成过程

请参见

其他资源

使用 Team Foundation Build 管理生成

自定义 Team Foundation Build