2011-03-03 38 views
0

默认情况下,当运行排队的构建时,MSBuild会调用CoreLabel任务来标记构建中包含的源文件 - 如何控制此标签的位置被建造?覆盖由TFS 2008/2010中的MSBuild创建标签的位置

基本上,我想在标签在团队项目的根目录下创建(即文件夹“客户端”下方),但看来该标签在的根目录中创建的工作文件夹工作区(即项目1 \开发的\ Sources):

$      <-- Project Collection 
+- Client    <-- Team Project 
    +- Project 1  <-- Project 
    +- Deployments <-- Assets for a deployment 
     +- 1.0.0.0 
     +- 1.1.0.0 
    +- Development <-- Development Branch 
     +- Source  <-- Dev Build Definition working folder mapped here. 
    +- Environment <-- Scripts, etc. for deployments. 
    +- Main   <-- Main Branch 
     +- Source  <-- Release Build Definition working folder mapped here. 

在构建定义,我们在为因发展或主要“源”文件夹级别指定的工作区中的“工作文件夹”构建类型。

望着构建日志,它看起来像标签应在客户端级别创建:

Task "Label" (TaskId:42) 
    Label TeamFoundationServerUrl="http://TFSServer:8080/tfs/DefaultCollection" 
     BuildUri="vstfs:///Build/Build/4538" 
     Name="Nightly_20110303.5" 
     Scope="$/Client" 
     Recursive=True 
     Comments="Version-1.0.0.0 Requested-xxx Get-T Branch-Development" 
     Version="WCATQCDEV-BLD_35_8" 
     Child="Replace" 
     Files="$/" (TaskId:42) 
    Label [email protected]$/Client (version WCATQCDEV-BLD_35_8) was successfully created. (TaskId:42) 

然而,即使Files设置为$/标签仍然在工作文件夹级别创建。根据文档,Files参数应该指定哪些文件包含在标签中,但很明显,它没有按我们的意愿工作。

我已经成功地修改了使用BeforeLabel任务设置LabelComment属性创建的评论,但是,试图设置在同一个任务,像$/ClientLabelFiles财产似乎并没有影响到位置的标签是在调用Label方法时,在日志中创建,并且似乎最终会在日志中损坏为%26/Client

回答

2

将为该特定构建类型的工作区选项卡中指定的源代码管理文件夹创建标签。

如果您在构建类型中指定“开发”作为源控制文件夹,那么将仅为“开发”文件夹下的文件创建标签。

标签不仅通过名称来标识,而且通过所谓的“范围”来标识,其中范围是标签名称唯一的实际路径。

如果您的标签范围是“$/project”,那么标签名称在Project中是唯一的;当范围是“$/Project/Development”时,标签名称在开发中是唯一的。

范围=“$ /客户端”

以上日志文件条目并不意味着它是在$ /客户端文件创建标签,但它实际上意味着创建的标签是在$独一无二/客户。

该范围还允许用户在同一个项目中创建具有相同名称的多个标签。例如:可以为同一项目中的不同范围创建两个名为“Test”的标签(“$/project”和“$/Project/Development”)。

+0

感谢您的回复 - 是的,我意识到'范围'有效地定义了标签的范围 - 我们一直在使用它,很好地在不同的团队项目中使用相同名称的多标签。我希望'文件'将使我能够控制标签的创建位置。所以基本上,我们需要创建一个独立的构建任务,并标记根中的所有内容?因为如果我从命令行运行tf标签,我可以使用ItemSpec参数在TFS中的任何位置设置标签,而不管我配置的任何工作文件夹是什么? – 2011-03-05 10:55:32

+0

我认为你正在使用TFS2010。你使用默认构建模板(DefaultTemplate.xaml)还是升级构建模板(UpgradeTemplate.xaml)? – Jehan33 2011-03-05 15:40:30

+0

是的,我们正在使用TFS2010,但我相信我们正在使用2008样式构建项目 - 我有一个包含许多任务的.proj文件,主要是因为我们没有时间在项目开始学习新的基于工作流的做事方式:(因此我可能错过了这个问题。 – 2011-03-07 15:25:59