【发布时间】:2012-12-29 20:09:30
【问题描述】:
我们有一个带有 WiX 安装程序和 MSBuild 构建脚本的 C# 解决方案。我们正在从 SVN 迁移到 Git。
作为我们版本号的第四部分,我们想要随着每次构建而提升的东西。到目前为止,我们一直使用 SVN 修订号。 MSBuild 脚本定义了一个 ProductVersion 属性,其中包括 SVN 修订号作为构建版本的四个数字的最后一个。但是,我们不能再使用它了,因为我们不再使用 SVN。
我一直在尝试寻找 SVN 修订号的替代品,但我不知道该使用什么。
Jenkins 提供了一个我可以使用的内部版本号,但我不想将我们的版本控制系统绑定到 Jenkins。
Jenkins 也提供了时间戳,但它不符合微软的版本号限制:它是字母数字并且有点长,而版本中的第 4 个数字应该是 0 到 65535 之间的整数。
-
我们可以将 AssemblyVersion 设置为 1.0.* 并让 .NET 填充其余部分。这适用于我们的程序集,但我找不到将其注入 WiX 的方法。一旦构建完成,我们就可以从其中一个程序集中获取它,但是我们的 MSBuild 脚本使用
<MSBuild>任务来立即构建整个解决方案,因此我们陷入了需要运行<MSBuild>的 Catch-22 中它可以编译一个程序集,我们可以使用它来获取生成的版本号,但是为了运行<MSBuild>,我们首先需要有一个编译的程序集,以便我们可以从中获取生成的版本号。 我可以在 MSBuild 文件中添加一个单独的目标来编译某些东西(任何东西)并从中获取版本号,然后对
<MSBuild>任务进行实际调用。但这感觉不对。
再一次,我真的不在乎这个数字是多少,只要它随着每次构建而递增。基于时间戳的东西会很好。有什么想法吗?
【问题讨论】:
标签: .net msbuild wix versioning