我决定做一些非常简单的事情 -
WinForms应用程序,带有C#代码和按钮的文本框。单击该按钮时,我将文本框的内容保存到临时.cs文件,调用带有文件名作为参数的csc.exe(Process.Start())以便编译它。这假设我设置了PATH变量和所有内容。
当csc.exe输出语法错误和内容时,如何将其恢复并在我的应用程序的另一个文本框中显示?
注意我的目标不仅仅是“从我的应用程序中编译C#代码(以任何可能的方式)”..它是获取csc.exe的输出
答案 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命名空间以生成动态程序集,但这取决于您的目标和要求。