C# 从c调用git时丢失颜色信息#

C# 从c调用git时丢失颜色信息#,c#,git,powershell,msysgit,C#,Git,Powershell,Msysgit,我只是在玩c#和Msysgit的git.exe,遇到了一个缺少颜色的问题。我有一个非常简单的控制台程序: class Program { static void Main(string[] args) { System.Diagnostics.ProcessStartInfo Msysgit = new ProcessStartInfo(); Msysgit.CreateNoWindow = true; Msysgit.UseShe

我只是在玩c#和Msysgit的git.exe,遇到了一个缺少颜色的问题。我有一个非常简单的控制台程序:

class Program
{
    static void Main(string[] args)
    {
        System.Diagnostics.ProcessStartInfo Msysgit = new ProcessStartInfo();
        Msysgit.CreateNoWindow = true;
        Msysgit.UseShellExecute = false;
        Msysgit.RedirectStandardError = true;
        Msysgit.RedirectStandardOutput = true;
        Msysgit.FileName = @"C:\Program Files (x86)\Git\bin\git.exe";//Msysgit default location       
        Msysgit.Arguments = "log --graph --format=format:\"%C(bold blue) %x08%h\" "; //git command
        Msysgit.WorkingDirectory = @"C:\git\posh-git";//repo to test with

        using (Process gitProcess = new Process())
        {
            gitProcess.StartInfo = Msysgit;
            gitProcess.Start();
            string gitout = gitProcess.StandardOutput.ReadToEnd();

            Console.WriteLine(gitout);
        }

        Console.ReadLine();
    }
}
这将产生以下结果:
*
*(Esc)[1;34m2490619
|\
|*(Esc)[1;34me81889e
|\
||*(Esc)[1;34mab09e6b
||/
|*(Esc)[1;34m16bbe4c

现在我可以看到ANSI转义序列了[1;34m表示应用于SHA-1和git命令中请求的蓝色;但是与git命令的--graph部分的输出相关联的颜色信息发生了什么变化,特别是管道和斜杠。当从Powershell调用git.exe时,图形显示为蓝色和蓝色SHA-1


我在这里的总体意图是捕获git.exe的输出,应用一点c#处理,然后将修改后的输出发送到Powershell。同样,在Powershell中保存输出也会丢失图形颜色信息,即使颜色正确显示在屏幕上。

相关-谢谢Jared,这里有一些有趣的讨论。我的问题与此略有不同,因为它与ansi转义码的解释无关,而是与git.exe发送的图形信息中缺少转义码这一事实有关