如何在MSBuild中使用Team Build Properties?

Chr*_*ter 7 msbuild wix wix3 tfsbuild tfs2010

我使用默认的流程模板有一个简单的tfs-2010构建定义.在其中,我使用$(BuildID)定义了构建数字格式,以定义计算字段的一部分.这有效,我可以看到BuildID的价值.

现在我尝试将BuildID属性作为参数传递给MSBuild:

/p:SomeProperty=$(BuildID)
Run Code Online (Sandbox Code Playgroud)

但是,当我查看构建日志时,我看到SomeProperty字面上等于$(BuildID)而不是BuildID的值.

我错过了什么?

为清晰起见更新:我要问的是如何在构建定义中引用构建过程参数.例如,Build Number Format的默认表达式为$(BuildDefinitionName)_ $(Date:yyyyMMdd)$(Rev:.r)

Jim*_*amb 4

您需要使用 VB.NET 表达式。例如:

String.Format("/p:SomeProperty={0}", BuildDetail.BuildNumber)
Run Code Online (Sandbox Code Playgroud)

内部版本号标记,例如$(BuildDefinitionName),特定于内部版本号格式过程参数。它们不是您可以在构建过程中的其他任何地方使用的令牌。大多数都可以在 BuildDetail 对象中或从环境中获得。然而,Build Id 是一个特殊情况。它来自构建表的标识列,并不直接在我们的公共 API 中公开。您可以从 BuildNumber 中提取它,如下所示:

BuildDetail.BuildNumber.Substring(BuildDetail.BuildNumber.LastIndexOf('/') + 1)
Run Code Online (Sandbox Code Playgroud)

请注意,您需要直接在 XAML 中执行此操作,而不是将 VB 表达式放入构建过程参数编辑器 GUI 中。这是因为这些值只是作为文字字符串传递。