我有以下代码
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参数字符串的末尾,但是它会引发错误,所以不喜欢它。
有人可以建议怎么做吗?而且我无法使用标准输出流的进程,因为调用进程需要在其他进程启动后立即关闭,因此无法保持开放读取和写入流。
答案 0 :(得分:3)
Process.Start
不会启动shell,而只是生成一个进程。因此,重定向和管道不起作用并不奇怪。您可以将 ProcessStartInfo
个实例传递到Process.Start
,您可以设置RedirectStandardOutput
并自p.StandardOutput
将其写入文件。