gpt4 book ai didi

.net - 在 MSBuild 中生成版本号

转载 作者:行者123 更新时间:2023-12-04 14:30:47 29 4
gpt4 key购买 nike

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

作为我们版本号的第四部分,我们想要随着每次构建而提升的东西。到目前为止,我们一直使用 SVN 版本号。 MSBuild 脚本定义了一个 ProductVersion 属性,其中包含 SVN 修订号作为构建版本的四个数字的最后一个。但是,我们不能再使用它了,因为我们将不再使用 SVN。

我一直在尝试寻找 SVN 修订号的替代品,但我不知道该使用什么。

  • Jenkins 提供了一个我可以使用的内部版本号,但我不想将我们的版本控制系统绑定(bind)到 Jenkins。
  • Jenkins 也提供了时间戳,但它不符合微软的版本号限制:它是字母数字的,有点长,而版本中的第 4 个数字应该是 0 到 65535 之间的整数。
  • 我们可以将 AssemblyVersion 设置为 1.0.* 并让 .NET 填充其余部分。这适用于我们的程序集,但我找不到将其注入(inject) WiX 的方法。一旦构建完成,我们就可以从其中一个程序集中获取它,但是我们的 MSBuild 脚本使用 <MSBuild>立即构建整个解决方案的任务,因此我们陷入了需要运行 <MSBuild> 的 Catch-22所以它可以编译一个我们可以用来获取生成的版本号的程序集,但是为了运行<MSBuild> ,我们首先需要有一个已编译的程序集,以便我们可以从中获取生成的版本号。
  • 我可以在 MSBuild 文件中添加一个单独的目标来编译某些东西(任何东西)并从中获取版本号,然后对 <MSBuild> 进行实际调用任务。但这只是感觉不对。

  • 同样,我真的不在乎这个数字是多少,只要它随着每次构建而增加。基于时间戳的东西会很好。有任何想法吗?

    最佳答案

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

    恕我直言,最好使用一个与您的整个 SDLC 相关联的数字,这样您就可以将部署的产品跟踪到构建结果,并将这些跟踪到 VCS,等等。我会推荐使用 jenkins 内部版本号,就像 Christopher Painter 所做的那样。

    关于.net - 在 MSBuild 中生成版本号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14342620/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com