c# - 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
}
解决方案
根据我对 Powershell 中的流的了解(我浏览了这篇文章),Powershell 中的一个进程似乎可以写入 5 个不同的输出流。
AFAIK,git
在编写时考虑了类似 unix 的设置,并且只“知道”两个输出流:stdout 和 stderr。我没有看代码,但我非常怀疑git
的代码库是否适合考虑 Windows 上的这五个流。
在您的 Powershell 代码中:尝试将您的回调插入Error
流或Success
流。