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,

Другие вопросы по тегам