【问题标题】:Increment the build number automatically自动增加内部版本号
【发布时间】:2013-01-11 10:48:00
【问题描述】:

我有两个正在解决的项目。一个是版本 3.0.0.*,另一个是 2.0.0.*。我使用 MSBuild 脚本在 Team City 上构建我的解决方案。如何将版本字符串的内部版本号部分注入到 AssemblyVersion 属性中,而将major.minor.patch 保留为在开发时定义的。

换一种说法,我想手动控制major.minor.patch(解决方案中的不同库的major会有所不同),但会自动增加内部版本号。

【问题讨论】:

    标签: .net msbuild teamcity versioning


    【解决方案1】:

    TeamCity 会自动为您管理 AssemblyVersion 属性,但有一些注意事项:

    1. 它将完全覆盖现有值。
    2. 它将更新解决方案中的所有AssemblyVersions,因此如果您必须在同一解决方案中保留不同的项目版本,这可能不适合您。

    有了这些注意事项,以下是我们的设置方式:

    • 在构建配置的常规设置中,将Build number format 更改为%version%.{0}
    • 在您的构建参数中,将%version% 定义为您的major.minor.patch。
    • 在您的构建步骤中,滚动到屏幕底部并单击添加构建功能。选择AssemblyInfo patcher。确保Assembly version format 填写为%build.number%

    就是这样。 TeamCity 会将您的所有程序集信息更新为由 %version% 和构建计数器定义的 major.minor.patch.build,然后在构建的最后一步自动恢复这些更改。

    【讨论】:

      【解决方案2】:

      您可以在 msbuild 中通过 $(BUILD_NUMBER) 获得 Teamcity 配置内部版本号。将您的 teambuild no 保留为默认的 {0}。 我建议您使用它并通过您自己的自定义 msbuild 编辑两个程序集信息文件。您可以保留每个文件的标记化版本,以便版本文件在版本属性中包含 2.0.0.$(BUILD_NUMBER),然后使用扩展包 detokenise 来转换两者(或任何数量的文件)。 仍然认为您应该在两个项目上使用相同的版本控制...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-21
        • 2011-03-06
        • 1970-01-01
        • 2010-11-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多