0

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

正如我在这里找到的,这个命令给出了当前的提交哈希:

git rev-parse --short HEAD

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

4

2 回答 2

1

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

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

这些属性之一是 : AssemblyInformationalVersionAttribute,它可以是任何字符串。

(请参阅有关组件属性的 docs.microsoft 页面

您可以在项目代码中设置它,例如,在.cs文件中,您可以添加:

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

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

  • 在您的代码中使用 targettable 字符串:
[assembly:AssemblyInformationalVersionAttribute("#GIT_COMMIT_PLACEHOLDER#")]
  • 在您的构建脚本中,在构建之前搜索并用您的提交哈希替换该字符串

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

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

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

于 2021-09-29T07:55:04.547 回答
0

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

在 Git 方面(因为你已经用标记了它),要说的一件事是,与其坚持 的输出,不如坚持 的git rev-parse --short HEAD输出git describe,也许用--tags和/或--always和/或旗帜--dirty

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

例如。假设你设置好你的发布标签,这样一个发布版本将被标记为发布标签。有关详细信息,请参阅文档git describe

于 2021-09-29T16:34:44.370 回答