我正在生成一个在可见控制台窗口中运行的子进程(它是一个运行 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();
问题是子进程的控制台窗口中没有显示输出;我只是在进程运行时在屏幕上看到一个空白的控制台窗口,它在完成后消失。
我想我可以隐藏实际的子进程窗口,并显示第二个窗口,我只需将输出写入到它被捕获的位置,但这似乎比必要的工作更多。有没有办法让输出显示在控制台窗口中,并在完成后仍然捕获它以进行处理?