2013-09-30 73 views
1

我想添加一些逻辑到我们的TFS构建定义的构建标签字段之一。TFS构建定义标签格式

目前的设置是这样的:

enter image description here

注的自定义字段主版本号,以前的主要发行日期。我想修改的版本号格式字段,以便最终的结果会是这样的:

<BuildDefinitionName> <Major Version Number>.<# Days since Previous Major Release Date [4 Digits]>.<Revision Number>

这样一个例子输出为:

DebugBuild 6.0.0012.1

0012将意味着12天。

我该如何做到这一点?我无法理解这些$(Var)字段在哪里声明,因为它们似乎与生成过程模板变量和参数分开,而我声明的主要版本号和前一主要发布日期参数确实存在于生成过程模板中,并且分配给参数MajorVersionNumberPreviousMajorReleaseDate

回答

1

我所做的是customise the TFS build workflow并在“更新内部版本号”步骤之前添加一个自定义代码活动

此代码活动发生在BuildNumberFormat变量,替换所有我自定义的令牌,并传递出一个结果我自己localBuildNumberFormat变量。然后我将我的localBuildNumberFormat传递给“更新内部版本号”活动。

所以这个过程是这样的:

  • BuildNumberFormat = $(CustomToken)_$(BuildDefinitionName)_$(Rev:.r)
  • 输入到自定义活动= $(CustomToken)_$(BuildDefinitionName)_$(Rev:.r)
  • 输出从自定义活动= DavesBuild_$(BuildDefinitionName)_$(Rev:.r)
  • 输入到TFS建设活动= DavesBuild_$(BuildDefinitionName)_$(Rev:.r)

你基本上取代了TFS在将其传递给TFS之前无法理解的所有令牌。

如何获得自定义令牌的值由您决定,您可以将它们作为构建定义/请求的参数传递给它们,或者在代码活动中进行查找(我都在我的代码中)。

+0

好吧,我试过这个解决方案。我有我的自定义代码活动,并且我已将编译的.dll引用添加到了我的构建控制器,但是当我打开自定义构建过程.xaml文件时,我的代码活动未显示在工具箱中? –

+0

在一个项目中,您应该有一个带有XAML模板的解决方案,并在您的代码活动中引用另一个项目。我也使用Wrox pro TFS书籍作为参考。 – DaveShaw

+0

Got it!谢谢! –