如何使用 MSBuild 覆盖 TeamCity 系统变量的值?

How to override value of TeamCity System Variable Using MSBuild?

TeamCity 配置: 下面是在 TeamCity 中完成的 Build Number 格式设置 %system.BuildVersion%

其中 BuildVersion 被定义为系统参数。

MSBuildScript

<GetAssemblyIdentity 
AssemblyFiles="$(PPTCompiledOutputDirPath)$(FileNameForAssembly)">
        <Output TaskParameter="Assemblies" ItemName="AssemblyIdentity"/>
    </GetAssemblyIdentity>
    <PropertyGroup>
        <Pattern>(\d+)\.(\d+)\.(\d+)\.</Pattern>
        <In>%(AssemblyIdentity.Version)</In>
        <OutVersion>$([System.Text.RegularExpressions.Regex]::Match($(In), $(Pattern)))</OutVersion>
    </PropertyGroup>

    <Message Text="$(OutVersion)" />
    <Message Text="##teamcity[buildNumber '$(OutVersion)$(BuildCounter)']" />
    <Message Text="##teamcity[setParameter name='BuildVersion' value='$(OutVersion)$(BuildCounter)']"/>

我想将参数 'BuildVersion' 的值更新为程序集版本和构建计数器。

我在这里遇到有关执行 Teamcity 和执行被取消的问题。

设置buildNumber的正确方法是:

<Message Importance="High" Text="##teamcity[buildNumber '$(OutVersion)$(BuildCounter)']" />