我有以下代码。
Process compiler = new Process();
compiler.StartInfo.FileName = "cmd.exe";
compiler.StartInfo.Arguments = ("/C git push gitlab --delete branch");
compiler.StartInfo.UseShellExecute = false;
compiler.StartInfo.CreateNoWindow = false;
compiler.StartInfo.RedirectStandardOutput = true;
compiler.Start();
string output = compiler.StandardOutput.ReadToEnd();
compiler.WaitForExit();
compiler.Close();
我只获得null
中的string output
值。但我在输出屏幕中得到了以下数据。
错误:无法删除'branch':远程引用不存在
错误:无法将某些引号推送到“https://gitlab.company.com/test2.git”
为什么我在output
字符串中得到空值?为什么流程 compiler.StandardOutput.ReadToEnd();
无法获取这些行?
我在控制台屏幕中输出了输出数据,因为我在false
中设置了CreateNoWindow
。否则我不会在控制台屏幕上获取数据。
任何人都建议从Process.StandardOutPut
获取输出屏幕数据。
答案 0 :(得分:1)
当您读取StandardOutput时获得空值的原因是因为应用程序在该时间点没有写入任何内容。
有两个与Process
相关联的事件,您可以订阅这些事件来阅读数据 - OutputDataReceived and Exited
答案 1 :(得分:0)
我在process.Standarderror