Как получить весь процесс.StandardOutput в виде строки?
У меня есть код ниже.
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
. Но я получил следующие данные на экране вывода.
ошибка: невозможно удалить "ветку": удаленная ссылка не существует
ошибка: не удалось отправить некоторые ссылки на " https://gitlab.company.com/test2.git"
Почему я получил нулевое значение в output
строка? Почему процесс compiler.StandardOutput.ReadToEnd();
не удалось получить эти строки?
Я получил выходные данные на экране консоли, потому что я установил false
в CreateNoWindow
, Иначе я бы не получил данные на экране консоли.
Любой предложит способ получить данные экрана вывода из Process.StandardOutPut
,
2 ответа
Причина, по которой вы получаете нулевое значение при чтении StandardOutput, заключается в том, что приложение на тот момент ничего не писало.
Есть два события, связанные с Process
на которую вы можете подписаться, чтобы прочитать данные - OutputDataReceived and Exited