我以前的一位雇主在构建后将当前提交的 GIT 哈希添加到可执行文件的文件属性的“详细信息”选项卡中。
正如我在这里找到的,这个命令给出了当前的提交哈希:
git rev-parse --short HEAD
但是有人知道如何将其添加到文件属性的“详细信息”选项卡中吗?
我以前的一位雇主在构建后将当前提交的 GIT 哈希添加到可执行文件的文件属性的“详细信息”选项卡中。
正如我在这里找到的,这个命令给出了当前的提交哈希:
git rev-parse --short HEAD
但是有人知道如何将其添加到文件属性的“详细信息”选项卡中吗?
注意:我假设您正在开发一个 .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 的构建中(例如:阅读来自标签的版本号,添加提交 sha 等...)
这确实是一个 Windows 构建问题(并且很可能是特定于构建环境的)。例如,在 Xcode 中的 macOS 上执行此操作的方法会完全不同。
在 Git 方面(因为你已经用git标记了它),要说的一件事是,与其坚持 的输出,不如坚持 的git rev-parse --short HEAD
输出git describe
,也许用--tags
和/或--always
和/或旗帜--dirty
:
annotation=$(git describe --always --dirty)
例如。假设你设置好你的发布标签,这样一个发布版本将被标记为发布标签。有关详细信息,请参阅文档。git describe