ahm*_*iee 25 c# compilation c#-4.0
我想要一些代码来编译我的TextBox中的代码(例如).我的意思是我想在运行程序后编译代码.我怎样才能做到这一点?
Mer*_*ham 21
看到这篇文章:
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
;
}
}
Run Code Online (Sandbox Code Playgroud)
正如Aliostad在他的回答中提到的那样,要小心这个解决方案.您需要确保已编译的代码最终自己AppDomain
,否则您将遇到内存泄漏.
请参阅有关如何将代码加载到单独的相关问题AppDomain
:
如何防止CompileAssemblyFromSource泄漏内存?