生成的MSBuild版本号(Generating version number in MSBuild

2019-07-18 05:46发布

我们有一个威克斯安装一个C#解决方案和一个MSBuild构建脚本。 我们正处在从迁移到SVN混帐的过程。

由于我们的版本号的第四部分,我们想要的东西,随着每个构建上升。 到现在为止,我们已经使用了SVN版本号。 该脚本的MSBuild定义的ProductVersion属性,其中包括SVN版本号作为最后四个数字的内部版本的。 但是,我们不能使用了,因为我们将不使用SVN了。

我一直试图找到为SVN版本号的替代品,但我想不出用什么。

  • 詹金斯提供,我可以用一个版本号,但我不希望我们的版本系统配合詹金斯。

  • 詹金斯还提供了一个时间戳,但它并没有与微软的版本号的限制规定:这是字母数字和类长,而在版本4号应该为0至65535之间的整数。

  • 我们可以的AssemblyVersion设置为1.0。*,让.NET填写休息。 这适用于我们的组件,但我不能找到一种方法来注入维克斯这一点。 一旦它的建成,我们可以从组件之一取水的时候,但我们的MSBuild脚本使用<MSBuild>任务建立在一次完整的解决方案,所以我们坚持在一个catch-22,我们需要运行<MSBuild>等等它可以编译,我们可以用它来获取生成的版本号的组件,但为了运行<MSBuild>我们首先需要有一个编译器组件,使我们可以从它取所生成的版本号。

  • 我可以添加在编译的东西(什么)的文件的MSBuild一个单独的目标,并从版本号,然后做的实际调用<MSBuild>任务。 但是,这只是感觉不对。

同样,我真的不关心的数字是什么,只要它每次构建递增。 基于时间戳的东西就可以了。 有任何想法吗?

Answer 1:

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

恕我直言,这是最好使用一个号码是关系整个SDLC,这样你就可以跟踪你的产品部署,以生成结果,而这些到VCS,等等。 我会建议使用詹金斯集结号,克里斯托弗画家一样。



Answer 2:

您可以通过使用得到的组件的版本号!(bind.FileVersion.FileId)其中FileId是在您的WXS文件的一个定义文件元素的ID。

然后,只需让.NET生成大会数字和维克斯将使用它作为的ProductVersion。



Answer 3:

你为什么不把它绑詹金斯? 好像你想要詹金斯管理器,它获得通过成为包括版本号的生成属性。 这就是我如何与BuildForge,TFS等人做了。



文章来源: Generating version number in MSBuild