TeamCity - AssemblyInfoPatcher 不使用更新的变量

TeamCity - AssemblyInfoPatcher not using updated variable

我正在使用 Powershell 中的服务消息(构建脚本交互)更改 TeamCity (9.1.4) 构建的构建编号:

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

这绝对没问题。

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

所以我尝试使用 variable/parameter 但这也不起作用。

我将以下变量 "Major.Minor.Patch" 定义为 "Configuration Parameter" 或 "Environment Variables"。 AssemblyInfoPatcher 很好地使用了这些变量,并使用构建中 TeamCity 中定义的版本更改了我的文件的文件版本。

如果我尝试使用服务消息更改 variable/parameter,它不起作用。 AssemblyInfoPatcher 仍在使用旧值。

带有环境变量的示例

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

带有配置参数的示例

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

我是做错了什么还是根本不可能?我唯一想要的是我的文件具有与我的 TeamCity 版本相同的版本号...

AsssemblyInfoPatcher 在之前任何构建步骤运行(然后再次运行以恢复您的 AssemblyInfo 文件所有构建步骤之后) .因此,如果您的构建步骤之一使用服务消息设置 Major.Minor.Patch,那么游戏就太晚了。

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