在MSBuild中生成版本号

我们有一个带有WiX安装程序和MSBuild构建脚本的C#解决方案。 我们正在从SVN迁移到Git。

作为我们版本号的第四部分,我们希望每次构建都能提升。 到现在为止,我们已经使用了SVN修订版号。 MSBuild脚本定义了一个ProductVersion属性,其中包含SVN修订版本号作为构建版本的四个数字的最后一个。 但是,我们不能再使用它了,因为我们不再使用SVN了。

我一直在试图找到SVN修订号的替代品,但我无法弄清楚要使用什么。

  • Jenkins提供了我可以使用的内部版本号,但我不想将版本控制系统与Jenkins绑定。

  • Jenkins还提供时间戳,但不符合Microsoft的版本号限制:它的字母数字和类型很长,而版本中的第4个数字应该是0到65535之间的整数。

  • 我们可以将AssemblyVersion设置为1.0。*,并让.NET填充其余部分。 这适用于我们的程序集,但我找不到将其注入到WiX中的方法。 我们可以从其中一个程序集创建它,但是我们的MSBuild脚本使用<MSBuild>任务一次构建整个解决方案,所以我们被困在一个Catch-22中,我们需要运行<MSBuild>它可以编译一个程序集,我们可以使用它来获取生成的版本号,但为了运行<MSBuild> ,我们首先需要一个编译好的程序集,以便我们可以从中获取生成的版本号。

  • 我可以在MSBuild文件中添加一个单独的Target来编译一些东西,并从中获取版本号,然后执行<MSBuild>任务的实际调用。 但那只是感觉不对。

  • 再次,我并不在乎数字是什么,只要它随着每一次构建而增加。 基于时间戳的东西会很好。 有任何想法吗?


    MSbuild社区任务包含一个名为版本的任务,它提供了一些算法来生成版本号。 它非常易于使用和定制。

    恕我直言,最好使用绑定整个SDLC的数字,以便可以将部署的产品跟踪到构建结果,并将这些数据跟踪到VCS等等。 我会建议像克里斯托弗Painter那样使用jenkins内部编号。


    您可以使用!(bind.FileVersion.FileId)从程序!(bind.FileVersion.FileId)获取版本号,其中FileId是您的wxs文件中定义的File元素的ID。

    然后让.NET生成Assembly数字,并且WiX将使用它作为ProductVersion。


    你为什么不把它与詹金斯绑在一起? 似乎你希望詹金斯管理传入构建版本的属性,包括版本号。 这就是我用BuildForge,TFS等人完成的。

    链接地址: http://www.djcxy.com/p/86119.html

    上一篇: Generating version number in MSBuild

    下一篇: How do I create an F# Type Provider that can be used from C#?