我希望有一些代码,可以编译我的文本框中的代码(例如)。我的意思是,我想在运行程序后编译代码。我该如何实现?
我希望有一些代码,可以编译我的文本框中的代码(例如)。我的意思是,我想在运行程序后编译代码。我该如何实现?
请参考这篇文章:
http://support.microsoft.com/kb/304655
以下是他们提供的示例代码:
var codeProvider = new CSharpCodeProvider();
ICodeCompiler icc = codeProvider.CreateCompiler();
var parameters = new CompilerParameters()
{
GenerateExecutable = true,
OutputAssembly = Output,
};
CompilerResults results = icc.CompileAssemblyFromSource(parameters, sourceString);
if (results.Errors.Count > 0)
{
foreach(CompilerError error in results.Errors)
{
textBox2.Text = textBox2.Text
+ "Line number " + error.Line
+ ", Error Number: " + error.ErrorNumber
+ ", '" + error.ErrorText + ";"
+ Environment.NewLine + Environment.NewLine
;
}
}
正如Aliostad在他的答案中提到的那样,使用这种解决方案需要小心。你需要确保你的编译代码最终位于其自己的AppDomain
中,否则你将会经历内存泄漏。
请参考这个相关问题,了解如何将代码加载到单独的AppDomain
中:
StringBuilder
,并覆盖文本框的文本,而不是将其附加到末尾。 - Merlyn Morgan-Graham