首页 > 解决方案 > Git add --verbose 输出未在 Powershell 详细流中捕获

问题描述

当我运行“git add .--verbose”时,我收到显示正在添加的文件的消息,如下所示:

add 'file1.txt"
add 'file2.txt"

但是当我通过 PowerShellInstance.BeginInvoke() 在 C# 中运行相同的 git 命令时,详细消息不会被重定向到 Streams.Verbose。事实上,它们并没有被重定向到任何 Streams。我错过了什么?代码有什么问题吗?

这是我的代码:

var ps = PowerShell.Create();
ps.Streams.Verbose.DataAdded += VerboseStream_DataAdded;
ps.BeginInvoke<PSObject, PSObject>(null, output);

void VerboseStream_DataAdded(object sender, DataAddedEventArgs e)
{
   // this is never called
}

标签: c#gitpowershell

解决方案


根据我对 Powershell 中的流的了解(我浏览了这篇文章),Powershell 中的一个进程似乎可以写入 5 个不同的输出流。

AFAIK,git在编写时考虑了类似 unix 的设置,并且只“知道”两个输出流:stdout 和 stderr。我没有看代码,但我非常怀疑git的代码库是否适合考虑 Windows 上的这五个流。


在您的 Powershell 代码中:尝试将您的回调插入Error流或Success流。


推荐阅读