【问题标题】:Using GitVersion for AssemblyInfo.cs update使用 GitVersion 进行 AssemblyInfo.cs 更新
【发布时间】:2021-02-16 17:50:13
【问题描述】:

根据文档,当使用/updateassemblyinfo 参数调用dotnet gitversion 时,它将递归搜索git repo 中的所有AssemblyInfo.cs 文件并更新它们。它将更新以下程序集属性:

  • AssemblyVersion 将设置为 AssemblySemVer 变量。
  • AssemblyFileVersion 将设置为带有附加 .0 的 MajorMinorPatch 变量。
  • AssemblyInformationalVersion 将设置为 InformationalVersion 变量。

根据dotnet gitversion 的输出,这些变量当前具有以下值,在没有任何参数的情况下调用(从整个 JSON 中复制):

  • AssemblySemVer:1.2.0.0
  • MajorMinorPatch:1.2.0
  • 信息版本:1.2.0-branch-name.1+104.Branch.branch-name.Sha.f00e3376da35703ab5e5527e44e942e7bd98s098

问题:是否可以在预定义的 GitVersion.yml 中更改这些变量中的值,或者以某种方式通过参数“即时”更改为 dotnet gitversion

原因是我当前的项目在历史上没有遵循 semver 方案,并且每次都需要将版本四重奏的第 3 部分设置为特定值,而不管分支、标签或任何其他 git-specifics。例如,我们的产品版本看起来像 v1.2.50.10v02.04.30.01

但是使用 dotnet gitversion 内置功能更新 AssemblyInfo.cs 文件会很好,即使我们不会充分利用它的 semver 兼容版本控制潜力。

【问题讨论】:

  • 取决于您需要/想要多少,您是否考虑过使用 SourceLink?也许不适用,但为了以防万一
  • dotnet gitversion/updateassemblyinfo 开关,你用过吗?
  • @PavelAnikhouski,是的,我做到了 - 在帖子的第一行中提到了 :) 问题是我需要设置版本四重奏的所有 4 个部分,在 GitVersion.yml 中似乎我只能设置第一个 3(主要、次要和补丁) - 最后一个将始终为 0,但我也需要一种方法来设置它。
  • @pinkfloydx33 SourceLink 是什么?
  • @Sevenate 对不起,我明白了。他们的文档说您只能动态覆盖 tag-prefix 配置值

标签: c# .net continuous-integration assemblyinfo gitversion


【解决方案1】:

您可以使用环境变量来构造您的版本号或 GitVesrsion 变量: https://gitversion.net/docs/reference/variables https://gitversion.net/docs/reference/configuration

例如,如果您想在信息版本中使用环境变量设置变量 3,并使用 CommitsSinceVersionSource GitVersion 变量严格递增最后一个变量,则应在 GitVersion.yml 中添加以下内容:

程序集信息格式:'{Major}.{Minor}.{env:MY_NUMBER}.{CommitsSinceVersionSource}'

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2010-09-12
  • 1970-01-01
  • 2017-03-15
  • 2012-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多