默认情况下,当运行排队的构建时,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
属性创建的评论,但是,试图设置在同一个任务,像$/Client
的LabelFiles
财产似乎并没有影响到位置的标签是在调用Label方法时,在日志中创建,并且似乎最终会在日志中损坏为%26/Client
。
感谢您的回复 - 是的,我意识到'范围'有效地定义了标签的范围 - 我们一直在使用它,很好地在不同的团队项目中使用相同名称的多标签。我希望'文件'将使我能够控制标签的创建位置。所以基本上,我们需要创建一个独立的构建任务,并标记根中的所有内容?因为如果我从命令行运行tf标签,我可以使用ItemSpec参数在TFS中的任何位置设置标签,而不管我配置的任何工作文件夹是什么? – 2011-03-05 10:55:32
我认为你正在使用TFS2010。你使用默认构建模板(DefaultTemplate.xaml)还是升级构建模板(UpgradeTemplate.xaml)? – Jehan33 2011-03-05 15:40:30
是的,我们正在使用TFS2010,但我相信我们正在使用2008样式构建项目 - 我有一个包含许多任务的.proj文件,主要是因为我们没有时间在项目开始学习新的基于工作流的做事方式:(因此我可能错过了这个问题。 – 2011-03-07 15:25:59