如何使用 GitVersion 将提交哈希添加到可执行文件的详细信息

How to add commit hash to details of an executable file using GitVersion

a previous question 中,我询问了如何将提交哈希添加到内置于 Visual Studio 中的可执行文件中。

我快到了:我决定使用 GitVersion 并且这个工具确实修改了我的 Visual Studio 项目的 AssemblyInfo.cs 文件,导致一些有趣的信息被添加到我的可执行文件的“详细信息”选项卡。
我非常有信心,通过在我的项目的构建事件(预构建事件命令行)中填写 GitVersion 命令,我可以自动执行此操作。

现在只有一些小事需要处理,如您所见:

GitVersion 命令和结果:

Command Prompt> dotnet-gitversion /updateassemblyinfo

{
  "Major": 0,
  "Minor": 1,
  "Patch": 0,
  ...
  "InformationalVersion": "0.1.0-develop-own.1+101.Branch.develop-own.Sha.99560ad4873ab9e04bb8f262aafb5b3ee2fb6c1e",
  "BranchName": "develop-own",
  ...
  "Sha": "99560ad4873ab9e04bb8f262aafb5b3ee2fb6c1e",
  "ShortSha": "99560ad",
  ...
  "CommitDate": "2022-04-25"
}

AssemblyInfo.cs 的先前版本(在 运行 GitVersion 之前):

// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

AssemblyInfo.cs的当前版本(在运行GitVersion之后):

// [assembly: AssemblyVersion("0.1.0.0")]
[assembly: AssemblyVersion("0.1.0.0")]
[assembly: AssemblyFileVersion("0.1.0.0")]
[assembly: AssemblyInformationalVersion("0.1.0-develop-own.1+101.Branch.develop-own.Sha.99560ad4873ab9e04bb8f262aafb5b3ee2fb6c1e")]

您可以看到编译文件的详细信息选项卡中的“产品版本”是如何用 AssemblyInformationalVersion 值填充的,而我希望这是其他信息的组合,例如 AssemblyVersion,结合 Sha 甚至 ShortSha:

让我们面对现实吧:我可以启动 GitVersion,但我不知道如何配置它的结果,而且 GitVersion /? 似乎不是很有帮助。
有人知道怎么做吗?

深入了解后编辑:
与此同时,我了解了如何获取特定信息:

dotnet-gitversion /showvariable "ShortSha"
28c8531

但出现以下问题:在查看第一项(主要、次要和补丁)时,文档提到:

{
  "Major": 3,
  "Minor": 22,
  "Patch": 11,
  ...

GitVersion 从哪里获得这些信息?
(作为一个愚蠢的测试,我创建了一个新分支 test/4.0.0.0,但这并没有改变 GitVersion 结果中的 Major 值)

Where is GitVersion getting this information from?

简短的回答是,这取决于 :-)

GitVersion 使用 git 存储库的历史,使用提交消息、标签、分支名称、配置文件的组合,以断言当前版本号。

您可以在此处查看此文档:

https://gitversion.net/docs/reference/version-sources

除此之外,根据您设置的 branching strategy you are using, and what configuration,GitVersion 将为您的存储库断言语义版本号。

如果你 运行 command:

dotnet-gitversion /diag

您应该能够在输出中看到 GitVersion 如何断言存储库的基本版本,以及它如何计算版本号的其余部分。