C# Process.Start-无法将输出发送到日志文件

C# Process.Start-无法将输出发送到日志文件,c#,process.start,C#,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", parame

我有以下代码

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

在进程结束时。启动参数字符串,但它会抛出一个错误,所以不喜欢这样


有人能建议怎么做吗?我不能使用进程的标准输出流,因为调用进程需要在另一个进程启动后立即关闭,因此无法保持打开状态来读取和写入流。

进程。Start
不启动shell,而只是生成一个进程。因此,重定向和管道不起作用也就不足为奇了。您可以将一个实例传递给
进程。启动
,您可以在其中设置
重定向StandardOutput
,然后自己从
p.StandardOutput

将其写入文件。当p失败或完成时,p的值是多少。唯一的问题是,我的调用项目需要保持打开状态,直到其他进程退出并完成。我需要调用项目在生成新流程后立即关闭,并让新流程负责将其标准输出定向到某个地方。这是可能的吗?如果进程本身无法写入文件输出,那么您将始终需要另一个进程来读取其输出并将其写入文件。这是你自己的还是
cmd
是另一回事。
| CommandOutput.txt