我使用默认的流程模板有一个简单的tfs-2010构建定义。在其中,我使用$(BuildID)定义了构建数字格式,以定义计算字段的一部分。这有效,我可以看到BuildID的价值。
现在我尝试将BuildID属性作为参数传递给MSBuild:
/p:SomeProperty=$(BuildID)
然而,当我查看构建日志时,我看到SomeProperty字面上等于$(BuildID)而不是BuildID的值。
我错过了什么?
为清晰起见而更新:我要问的是如何在构建定义中引用构建过程参数。例如,Build Number Format的默认表达式为$(BuildDefinitionName)_ $(Date:yyyyMMdd)$(Rev:.r)
答案 0 :(得分:4)
您需要使用VB.NET表达式。例如:
String.Format("/p:SomeProperty={0}", BuildDetail.BuildNumber)
内部版本号令牌,例如$(BuildDefinitionName)特定于Build Number Format流程参数。它们不是您可以在构建过程中的任何其他位置使用的标记。大多数都可以在BuildDetail对象或环境中使用。然而,Build Id有点特殊情况。它来自构建表的标识列,不直接在我们的公共API中公开。您可以从BuildNumber中提取它,如下所示:
BuildDetail.BuildNumber.Substring(BuildDetail.BuildNumber.LastIndexOf('/') + 1)
请注意,您需要直接在XAML中执行此操作,而不是将VB表达式放入构建过程参数编辑器GUI中。那是因为这些值只是作为文字字符串传递。