表示されているコンソール ウィンドウ (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();
問題は、出力が子プロセスのコンソール ウィンドウに表示されないことです。プロセスの実行中に画面に空白のコンソール ウィンドウが表示され、プロセスが終了すると消えます。
実際の子プロセス ウィンドウを非表示にして、2 つ目のウィンドウを表示して、キャプチャした出力を単純に書き込むことができると思いますが、それは必要以上の作業のように思えます。出力をコンソール ウィンドウに表示し、完了時に処理のためにキャプチャする方法はありますか?