首页 > 解决方案 > 某些 Git 命令没有输出 C# 进程

问题描述

只有一些命令对标准输出和标准错误产生任何输出。另外,我读过在两个流上调用 ReadToEnd 可能会导致死锁?如果有人知道一种更安全的方式来读取流,那将不胜感激。以下是我如何运行该过程并获取输出。问题是 fetch 的输出是空的(fetching 命令确实有效,只是不提供输出),但对于 pull 等其他命令则不然。

ProcessStartInfo psi= new ProcessStartInfo();
psi.CreateNoWindow = true;
psi.RedirectStandardError = true;
psi.RedirectStandardOutput = true;
psi.FileName = "git.exe";
psi.UseShellExecute = false;
psi.WorkingDirectory = workingDir;
psi.Arguments = "fetch -v";

Process fetchProcess = new Process();
fetchProcess.StartInfo = psi;
fetchProcess.Start();
string err = "";
string stdout = "";
//Both standard error and stdout are empty. But if argument is 
// a git pull, then standard error and output are not empty.
using (StreamReader myOutput = fetchProcess.StandardOutput) {
    stdout = myOutput.ReadToEnd();
}
using (StreamReader myError = fetchProcess.StandardError) {
    err= myError .ReadToEnd();
}
fetchProcess.WaitForExit();
fetchProcess.Close();

无论如何要确保输出获取结果?

标签: c#git

解决方案


推荐阅读