Powershell TeamCity-AssemblyInfoPatcher未使用更新的变量

Powershell TeamCity-AssemblyInfoPatcher未使用更新的变量,powershell,teamcity,teamcity-9.0,Powershell,Teamcity,Teamcity 9.0,我正在使用服务消息(构建脚本交互)更改TeamCity(9.1.4)构建的构建编号,如Powershell中所示: Write-Host "##teamcity[buildNumber '$version.$arg2']" 这是工作绝对好 问题是AssemblyInfoPatcher不希望使用此更新的内部版本号 所以我尝试使用一个变量/参数,但这也不起作用 我将以下变量“Major.Minor.Patch”定义为“配置参数”或“环境变量”。AssemblyInfoPatcher很好地使用了这些

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

Write-Host "##teamcity[buildNumber '$version.$arg2']"
这是工作绝对好

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

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

我将以下变量“Major.Minor.Patch”定义为“配置参数”或“环境变量”。AssemblyInfoPatcher很好地使用了这些变量,并使用生成中TeamCity中定义的版本更改了my files的文件版本

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

带有环境变量的示例

Write-Host "##teamcity[setParameter name='env.Major.Minor.Patch' value='$version']"
带有配置参数的示例

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

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

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


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

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


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

感谢您的快速响应。你可能有一个关于如何将构建串在一起的教程的链接吗?我从来没有在TeamCity中这样做过。1)创建一个名为SetVersion的新buildconfig,其中的构建步骤将执行服务消息。2) 修改原始构建配置的触发器,在SetVersion上添加“完成构建触发器”。3) 修改原始构建配置的依赖项,在SetVersion上添加“Snaphot依赖项”。4) 修改当前生成配置的AssemblyInfoPatcher,以引用
%dep.SetVersion.Major.Minor.Patch%
。我希望这会有帮助。谢谢你的简要解释。我自己设法做到了。我几乎完全按照你说的做了每件事,但我没有做第二步。我保留了VCS触发器,它仍然在工作,因为TeamCity依赖于先构建版本。感谢您的快速响应。你可能有一个关于如何将构建串在一起的教程的链接吗?我从来没有在TeamCity中这样做过。1)创建一个名为SetVersion的新buildconfig,其中的构建步骤将执行服务消息。2) 修改原始构建配置的触发器,在SetVersion上添加“完成构建触发器”。3) 修改原始构建配置的依赖项,在SetVersion上添加“Snaphot依赖项”。4) 修改当前生成配置的AssemblyInfoPatcher,以引用
%dep.SetVersion.Major.Minor.Patch%
。我希望这会有帮助。谢谢你的简要解释。我自己设法做到了。我几乎完全按照你说的做了每件事,但我没有做第二步。我保留了VCS触发器,它仍然在工作,因为TeamCity需要先构建版本。