我知道你可以dynamically create a .NET assembly using Emit, System.Reflection and manually created IL code as shown here。是否可以在C#中运行时创建/执行代码?
但我想知道是否可以在运行的应用程序中实时动态地创建和执行C#代码块。感谢您的任何意见和建议。
编辑: 据我所知,CodeDOM允许您将C#代码编译为EXE文件,而不是“只”执行它。这里有一些背景信息,为什么(据我所知)这不是我的最佳选择。我正在创建一个应用程序,它将不得不执行这样一个动态创建的代码[记录 - 这是为了学术研究,而不是真实世界的应用程序,因此这是无法避免的]。因此,创建/执行数千个动态创建的EXE并不是真的有效。其次 - 所有动态代码片段都会返回一些难以从单独运行的EXE中读取的数据。请让我知道如果我错过了什么。
至于DynamicMethod的方法,指出了乔恩斯基特,一切都将工作就像一个魅力是否会有写的代码本身,而不是低水平的IL代码更简单的方法。
换句话说(很严厉地说)我需要的是这样的:
string x = "_some c# code here_";
var result = Exec(x);
定义“实时”。 .NET不是一个实时平台,因为您无法控制线程何时会被其他任务(包括垃圾收集)中断。 – 2011-04-19 15:09:15
[是否可以动态编译和执行C#代码片段?](http://stackoverflow.com/questions/826398/is-it-possible-to-dynamically-compile-and-execute-c-code -fragments) – BrokenGlass 2011-04-19 15:11:02
@Eric J:对不起,我可能误用了“实时”这个词。我的意思是应该在应用程序运行时动态生成C#代码,并且在编译之前不要静态实现。 (例如,应该执行的c#代码是从文本流中动态读取的) – rexem 2011-04-19 15:53:56