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

问题描述 投票:0回答:2

我以前的一位雇主在构建可执行文件后,将当前提交的 GIT 哈希添加到可执行文件的文件属性的“详细信息”选项卡中。

正如我在here中发现的那样,此命令给出了当前提交哈希:

git rev-parse --short HEAD

但是有人知道如何将其添加到文件属性的“详细信息”选项卡中吗?

编辑此问题的后续内容:
这个问题是在我不知道如何开始的时候写的,有一些通用的答案。后来我决定走

GitVersion
的工作方式。我对此也有一些疑问,这些问题在此后续问题中处理。

windows git hash git-commit file-properties
2个回答
2
投票

注意:我假设您正在开发一个 .NET 项目。还有其他方法可以在构建时为其他项目提供类似的信息(例如:我发现这个问题提到了为 C++ 项目提供两种方法)

您可以在构建时在程序集上设置许多属性,例如版本。

这些属性之一是:

AssemblyInformationalVersionAttribute
,可以是任何字符串。

(请参阅 docs.microsoft 页面了解装配属性)

您可以在项目代码中设置它,例如,在

.cs
文件中,您可以添加 :

[assembly:AssemblyInformationalVersionAttribute("That's my version all right")]


注入提交哈希的一种方法是:

  • 在代码中使用目标表字符串:
[assembly:AssemblyInformationalVersionAttribute("#GIT_COMMIT_PLACEHOLDER#")]
  • 在构建脚本中,在构建之前搜索该字符串并将其替换为提交哈希值

有一些工具可以将其与更完整的功能结合在一起。

例如,我听说过 Gitversion (https://gitversion.net/docs/),它集成在 Azure Devops 管道和 MSbuild 任务中,并提供一系列选项来从 git 将版本信息添加到构建中(例如:从标签中读取版本号,添加commit sha等...)

请参阅配置版本变量页面,了解可以添加到构建中的内容。


2
投票

这确实是一个 Windows 构建问题(并且很可能是特定于构建环境的)。例如,在 macOS 上的 Xcode 中执行此操作的方法将完全不同。

在 Git 方面(因为你已经用 标记了它),要说的一件事是,与其坚持

git rev-parse --short HEAD
的输出,不如坚持
git describe
的输出可能更明智。 ,也许带有
--tags
和/或
--always
和/或
--dirty
标志:

annotation=$(git describe --always --dirty)

例如。这样,假设您很好地设置了发布标签,那么 release build 将被标记为release tag。有关详细信息,请参阅

git describe
文档

© www.soinside.com 2019 - 2024. All rights reserved.