我有两个解决方案。一个是版本 3.0.0.*,另一个是 2.0.0.*。我使用 MSBuild 脚本在 Team City 上构建我的解决方案。如何将版本字符串的内部版本号部分注入到 AssemblyVersion 属性中,而将major.minor.patch 保留为在开发时定义的。
换句话说,我想手动控制major.minor.patch(并且专业在解决方案中的库中会有所不同),但会自动增加内部版本号。
我有两个解决方案。一个是版本 3.0.0.*,另一个是 2.0.0.*。我使用 MSBuild 脚本在 Team City 上构建我的解决方案。如何将版本字符串的内部版本号部分注入到 AssemblyVersion 属性中,而将major.minor.patch 保留为在开发时定义的。
换句话说,我想手动控制major.minor.patch(并且专业在解决方案中的库中会有所不同),但会自动增加内部版本号。
TeamCity 将自动为您管理 AssemblyVersion 属性,但有一些注意事项:
有了这些警告,以下是我们的设置方式:
Build number format
中,将%version%.{0}
%version%
为您的major.minor.patch。AssemblyInfo patcher
。确保Assembly version format
填写为%build.number%
。就是这样。TeamCity 会将您的所有程序集信息更新为由 %version% 和构建计数器定义的 major.minor.patch.build,然后在构建的最后一步自动恢复这些更改。
您可以通过 $(BUILD_NUMBER) 在 msbuild 中使用 Teamcity 配置内部版本号。将您的 teambuild no 保留为默认的 {0}。我建议您使用它并通过您自己的自定义 msbuild 编辑两个程序集信息文件。您可以保留每个文件的标记化版本,以便版本文件在版本属性中包含 2.0.0.$(BUILD_NUMBER),然后使用扩展包 detokenise 来转换两者(或任何数量的文件)。仍然认为您应该在两个项目上使用相同的版本控制...