4

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

换句话说,我想手动控制major.minor.patch(并且专业在解决方案中的库中会有所不同),但会自动增加内部版本号。

4

2 回答 2

9

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

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

有了这些警告,以下是我们的设置方式:

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

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

于 2013-01-11T16:09:23.240 回答
0

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

于 2013-01-13T18:01:19.603 回答