Process.Start - невозможно отправить вывод в файл журнала
У меня есть следующий код
var parameters =
string.Format("TestSuiteDefinitions.dll /include:{0} /out:{1} /err:{2} /xml:{3}", String.Join(",", args), OutputLog, ErrorLog, ResultLog);
var p = Process.Start(GetAssemblyDirectory() + @"\NUnit\nunit-console.exe", parameters);
Что позволяет мне из моего приложения запускать отдельный процесс, запускающий консоль NUnit с моими необходимыми выходными данными. Проблема в том, что фактический вывод NUnit - единственное, что записывается в журналы. Если процесс завершится неудачей по какой-либо другой причине, выходные данные команды, которые вы видели бы из nunit-console.exe на уровне командной строки, будут потеряны.
Я пробовал добавлять
> CommandOutput.txt
или же
| CommandOutput.txt
в конце строки параметра Process.Start, но она выдает ошибку, поэтому не нравится.
Кто-нибудь может подсказать, как это сделать? И я не могу использовать стандартный поток вывода Process, поскольку вызывающий процесс должен быть остановлен, как только запускается другой Process, поэтому он не может оставаться открытым для чтения и записи потока.
1 ответ
Process.Start
не запускает оболочку, а просто порождает процесс. Поэтому неудивительно, что перенаправления и каналы не будут работать. Вы можете передать ProcessStartInfo
экземпляр для Process.Start
где вы можете установить RedirectStandardOutput
и записать его в файл самостоятельно из p.StandardOutput
,