TeamCity - AssemblyInfoPatcher未使用更新的变量

时间:2016-04-12 12:25:40

标签: powershell teamcity teamcity-9.0

我在Powershell中使用服务消息(Build Script Interaction)更改了TeamCity(9.1.4)版本的内部版本号:

Write-Host "##teamcity[buildNumber '$version.$arg2']"

这是完全正常的。

问题是AssemblyInfoPatcher不想使用此更新的内部版本号。

所以我尝试使用变量/参数,但这也不起作用。

我定义了以下变量" Major.Minor.Patch"作为"配置参数"或作为"环境变量"。 AssemblyInfoPatcher正好使用这些变量,并使用构建中TeamCity中定义的版本更改文件的文件版本。

如果我尝试使用服务消息更改变量/参数,它就不起作用。 AssemblyInfoPatcher仍在使用旧值。

环境变量

的示例
Write-Host "##teamcity[setParameter name='env.Major.Minor.Patch' value='$version']"

配置参数

的示例
Write-Host "##teamcity[setParameter name='Major.Minor.Patch' value='$version']"

我做错了什么或是不可能的?我唯一想要的是我的文件与我的TeamCity构建版本号相同...

1 个答案:

答案 0 :(得分:2)

AsssemblyInfoPatcher在任何构建步骤之前运行(然后再次运行以在所有构​​建步骤之后还原AssemblyInfo文件)。因此,如果您的某个构建步骤使用服务消息设置Major.Minor.Patch,那么游戏真的为时已晚。

也许你可以将多个构建配置串起来。第一个配置(A)将像你现在一样设置参数,然后触发第二个配置(B),它将使用AssemblyInfoPatcher。 B将具有对A的快照依赖性(除了完成构建触发器),因此其AssemblyInfoPatcher将能够引用%dep.A.Major.Minor.Patch%。当然,当B的AssemblyInfoPatcher运行时,该参数已经可用。