我想为使用 git 的应用程序的对话框实现构建 ID。我知道从 git 获取构建 ID 的 unix 命令,但我不知道如何在构建期间获取它。
最佳答案
可能最简单的方法是使用预构建事件。解决方案是调用 git
命令,将输出转储到文本文件,将该文件作为资源包含在 C# 代码中并加载资源。
将prebuild.cmd
添加到您的项目目录,内容如下:
cd %1
git log -n 1 --format=format:"%%h" HEAD > %2
转到您的项目属性,选择 Build Events
并输入以下命令作为预构建事件命令行:
"$(ProjectDir)prebuild.cmd" "$(ProjectDir)" "$(ProjectDir)revision.txt"
在您的项目目录中创建一个空的 revision.txt
文件(或运行一次构建)。将它添加到您的项目并为其设置 Embedded Resource
构建操作。将此文件添加到 .gitignore
也是有意义的,因为它是自动生成的。
在您的 C# 项目中添加一个新的实用程序类:
public static class GitRevisionProvider
{
public static string GetHash()
{
using(var stream = Assembly.GetExecutingAssembly()
.GetManifestResourceStream(
"DEFAULT_NAMESPACE" + "." + "revision.txt"))
using(var reader = new StreamReader(stream))
{
return reader.ReadLine();
}
}
}
不要忘记将 DEFAULT_NAMESPACE
替换为您项目的默认命名空间(它被添加到资源名称之前并且没有通用的方法来获取它,您必须对其进行硬编码) .
此解决方案假定 %PATH%
环境变量中存在 git
的路径。
关于c# - 如何实现 git id 或构建到 c# 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14768941/