在我的WinForms应用程序中获取控制台程序的输出(特别是C#编译器的输出 - CSC.EXE)

时间:2011-02-24 15:40:35

标签: c#

我决定做一些非常简单的事情 -

WinForms应用程序,带有C#代码和按钮的文本框。单击该按钮时,我将文本框的内容保存到临时.cs文件,调用带有文件名作为参数的csc.exe(Process.Start())以便编译它。这假设我设置了PATH变量和所有内容。

当csc.exe输出语法错误和内容时,如何将其恢复并在我的应用程序的另一个文本框中显示?

注意我的目标不仅仅是“从我的应用程序中编译C#代码(以任何可能的方式)”..它是获取csc.exe的输出

3 个答案:

答案 0 :(得分:4)

您需要重定向stdout和stderr。

它遵循:

process = new Process();
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.FileName = command;
process.StartInfo.Arguments = arguments;

然后阅读process.StandardInput。我真的不记得你是否只需要它。

答案 1 :(得分:1)

使用csc.exe [parameters]> output.file将csc.exe的控制台输出流式传输到文本文件,然后将文本文件读入文本框。

答案 2 :(得分:0)

使用ProcessStartInfo类将控制台输出重定向到您的流,然后在Windows控件中显示流内容。

您还可以查看CodeDom命名空间以生成动态程序集,但这取决于您的目标和要求。