c# - 如何实现 git id 或构建到 c# 应用程序

标签 c# git

我想为使用 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/

相关文章:

django - 我应该如何暂存我的 bitbucket + heroku django 应用程序以进行开发和部署?

eclipse - 修订的键盘快捷方式 > 在 Eclipse 中 stash 修订信息

C# wpf 如何从 Main 调用 initializeComponent

c# - 通过反射获取简单类型的用户友好名称?

c# - SendMessageAsync 在 Win32 和 UWP 之间通信时随机抛出异常

c# - 当通过另一个应用程序更改设置时如何通知应用程序

java - JGit 仅遍历本地和远程分支并读取文件

c# - 如何在 WPF Visual Studio 设计器中显示占位符值,直到可以加载实际值

git - 将小变化 merge 到分支

尝试更改为 master git 分支时出现 eclipse 错误