【发布时间】:2010-10-21 15:58:30
【问题描述】:
我正在生成一个在可见控制台窗口中运行的子进程(它是一个运行 MSBuild 的批处理文件),并且我希望该进程生成的输出显示在可见控制台窗口中,以及捕获该输出,以便我可以在代码中处理它。我已经阅读了其他几个问题和处理 ProcessStartInfo.RedirectStandardOutput 等的 MSDN 文档,我可以捕获重定向流的输出并在代码中处理它就好了:
Process msBuild = new Process();
msBuild.StartInfo.FileName = "Build.bat";
msBuild.StartInfo.UseShellExecute = false;
msBuild.StartInfo.RedirectStandardOutput = true;
msBuild.Start();
string output = msBuild.StandardOutput.ReadToEnd();
msBuild.WaitForExit();
问题是子进程的控制台窗口中没有显示输出;我只是在进程运行时在屏幕上看到一个空白的控制台窗口,它在完成后消失。
我想我可以隐藏实际的子进程窗口,并显示第二个窗口,我只需在捕获输出时将其写入该窗口,但这似乎比必要的工作更多。有没有办法让输出显示在控制台窗口中,并在完成后仍将其捕获以进行处理?
【问题讨论】: