TeamCity,回购和程序集修补程序中文件的版本号

TeamCity, version numbers from file in repo and assembly patcher

上下文

在我们的 repo 中,我们有一个名为 version.txt 的文件,其中包含主要和次要版本号:0.7.

我添加了一个带有 powershell 脚本的 TeamCity 构建步骤,该脚本将此参数设置为配置参数,基于 this answer

$version = Get-Content version.txt
Write-Host "##teamcity[setParameter name='UserMajorDotMinor' value='$version']"

UserMajorDotMinor 参数在 TeamCity 上默认为 0.6

我有一个名为%UserVersionNumber%的配置参数,用于设置实际版本号,定义为

%UserMajorDotMinor%.0.%system.build.number%

问题

虽然在 TeamCity 构建日志中打印 0.7,但它似乎没有正确设置 UserVersionNumber,因为程序集修补程序写入 dll 的数字仍然是 0.6.0.xxxxx

我必须更改什么才能使 TeamCity 实际上将正确的版本号写入 dll?

Assembly Info Patcher 构建功能将运行任何构建步骤之前,因此,在一个步骤中对参数所做的更改不会影响 Assembly Info Patcher

如果您真的需要使用 version.txt 文件中的 Major.Minor 信息,那么我会设置一个单独的构建配置来读取文件并提供内容作为构建参数 %UserMajorDotMinor% .基本上是你已经做过的。

然后您可以将新创建​​的配置作为依赖项添加到实际构建中,并将 %Version% 参数设置为 %dep.[buildconfigname].UserMajorDotMinor%.0.%system.build.number%

作为替代方案,使用脚本修补您的 AssemblyInfo.cs 文件作为单独的构建步骤而不是程序集信息路径功能。