自动增加内部版本号

时间:2013-01-11 10:48:01

标签: .net msbuild teamcity versioning

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

换句话说,我想手动控制major.minor.patch(并且解决方案中的主要内容不同)但是会自动增加内部版本号。

2 个答案:

答案 0 :(得分:8)

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

  1. 它将完全覆盖现有值。
  2. 它将在解决方案中更新所有 AssemblyVersions,因此如果您在同一解决方案中保留不同的项目版本,这可能对您不起作用。
  3. 有了这些警告,这就是我们如何设置它:

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

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

答案 1 :(得分:0)

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