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

时间:2012-05-09 14:51:04

标签: 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", parameters);

这使我可以从我的应用程序启动一个单独的进程,使用我所需的输出启动NUnit控制台。问题是实际的NUnit输出是写入日志的唯一内容。如果由于某些其他原因导致进程失败,则在命令提示符级别从nunit-console.exe看到的命令输出将丢失。

我尝试过添加

> CommandOutput.txt

| CommandOutput.txt

在Process.Start参数字符串的末尾,但是它会引发错误,所以不喜欢它。

有人可以建议怎么做吗?而且我无法使用标准输出流的进程,因为调用进程需要在其他进程启动后立即关闭,因此无法保持开放读取和写入流。

1 个答案:

答案 0 :(得分:3)

Process.Start不会启动shell,而只是生成一个进程。因此,重定向和管道不起作用并不奇怪。您可以将 ProcessStartInfo个实例传递到Process.Start,您可以设置RedirectStandardOutput并自p.StandardOutput将其写入文件。