- ベストアンサー
clでのコンパイル結果を取得
clでのコンパイル結果を取得 C#でファイル名と必要なオプションを設定して、ボタンを押すと自動的にファイルをコンパイルしてくれるようなものを作りたいのですが、コンパイルはできたのですが、どこでエラーがでたのかという処理中のデータを表示したいのですが、よくわかりません。ご教授の方、よろしくお願いします。 ちなみにコンパイルするファイルはC言語のファイルです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
余計な事ですが、わざわざC#でアプリを作るよりは、普通にmake用のバッチを作った方が早くないですか? それはさておき、ご質問への回答は以下です。 どのように実行しているかが書かれていないと答えようがないのですが推測で。 System.Diagnostics.ProcessStartInfoのArgumentsにDOSコマンドを指定して、 プロセスの起動を System.Diagnostics.Process.Start(System.Diagnostics.ProcessStartInfo) で行っているのであれば、 起動したプロセスの実行結果(標準出力/標準エラー)はSystem.Diagnostics.Processのプロパティに入ります。 clのコンパイルエラーは多分、StandardErrorの方に入ると思うので StandardError.ReadToEnd() を使います。 参考URL(msdn)を参考にしてください。 http://msdn.microsoft.com/ja-jp/library/system.diagnostics.process.standardoutput.aspx C#タブの真ん中辺りに、重要な事柄が書いてあります。 (標準出力/標準エラーは非同期で取得する工夫が必要なのです) ここも参考になると思います。 http://dobon.net/vb/dotnet/process/standardoutput.html
補足
コンパイル方法はバッチファイルを実行してコンパイルしています。(先に書いておくべきでしたねw) 教えていただいたサイトを参考にしながらバッチファイルの出力を取得して表示まではできたのですが、取得した文字を改行をして表示することができませんでした。 //出力時にC#用に文字列の改行コードを修正 String text = e.Data.Replace("\r\n\r\n", "\r\n"); textBox1.AppendText(text);