4

我们的 Teamcity 构建当前生成格式为 1.0.0.[SVN REVISION] 的内部版本号,并将其传递给 MSBUILD。

我需要将其更改为格式 1.0.[DLL VERSION].[SVN REVISION] 我们在其中插入依赖 dll 的去点版本。例如,如果我们的依赖 dll 是版本 1.2.3.4,则生成的内部版本号将是1.0.1234.[SVN 版本]。

依赖的 dll 是构建源的一部分,所以我希望我可以用构建参数和一个小 exe 来做一些事情,它将它与版本信息相结合,但看不到任何通过 UI 合并它的方法。

如果可能的话,有什么想法吗?

4

1 回答 1

10

您可以在构建脚本执行期间输出构建号,teamcity 将使用该输出来标记构建。例如,我使用放入 AssemblyInfo.cs 的相同版本标记我的构建。该版本的一部分(主要,次要)实际上已经在文件中,另一部分(构建,修订)在构建期间添加。

从我的 msbuild 脚本:

<Target Name="Setup">
    <!-- Version.txt contains the major and minor version numbers, 
         The build number and revision come from environment variables
         in the next step -->
    <Version VersionFile="Version.txt" BuildType="None" RevisionType="None">
        <Output TaskParameter="Major" PropertyName="Major" />
        <Output TaskParameter="Minor" PropertyName="Minor" />
    </Version>

    <!-- If you want to build a release without going through the build
         server, you should define the following 2 environment variables
         when running this build script -->

    <!-- BUILD_NUMBER environment variable supplied by the build server -->
    <CreateProperty
        Value="$(BUILD_NUMBER)">
        <Output
            TaskParameter="Value"
            PropertyName="Build" />
    </CreateProperty>

    <!-- BUILD_VCS_NUMBER environment variable supplied by the build server -->
    <CreateProperty
        Value="$(BUILD_VCS_NUMBER)">
        <Output
            TaskParameter="Value"
            PropertyName="Revision" />
    </CreateProperty>       

    <AssemblyInfo CodeLanguage="CS"  
        OutputFile="Properties\VersionInfo.cs" 
        AssemblyVersion="$(Major).$(Minor).$(Build).$(Revision)" 
        AssemblyFileVersion="$(Major).$(Minor).$(Build).$(Revision)" />

    <!-- Tell the build server what our actual build number is -->
    <Message Text="##teamcity[buildNumber '$(Major).$(Minor).$(Build).$(Revision)']" />
</Target>

您只需在构建期间输出版本,格式为##teamcity[buildNumber '<buildnum>']

于 2011-11-01T12:17:16.900 回答