【问题标题】:How to add commit hash to details of an executable file using GitVersion如何使用 GitVersion 将提交哈希添加到可执行文件的详细信息
【发布时间】:2022-04-27 03:59:07
【问题描述】:

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,与@987654337 组合@ 甚至是ShortSha:

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

在获得更多见解后进行编辑:
与此同时,我已经了解如何获取特定信息:

dotnet-gitversion /showvariable \"ShortSha\"
28c8531

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

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

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

    标签: c# assemblyinfo pre-build-event gitversion


    【解决方案1】:

    GitVersion 从哪里获得这些信息?

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

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

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

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

    最重要的是,根据您使用的branching strategy 以及您设置的configuration,GitVersion 将为您的存储库声明语义版本号。

    如果您运行command

    dotnet-gitversion /diag
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-16
      • 2017-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-19
      • 2023-04-03
      • 1970-01-01
      相关资源
      最近更新 更多