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