var csCodeProvider = new CSharpCodeProvider();
var csParams = new CompilerParameters();
var source = "public class MainClass { public static object Eval() { return (#exp#); } }";
source = source.Replace("#exp#", exp);
csParams.CompilerOptions = "/t:library";
csParams.GenerateInMemory = true;
var csResults = csCodeProvider.
CompileAssemblyFromSource(csParams, source);
if (csResults.Errors.Count > 0)
{
Console.WriteLine(csResults.Errors[0].ToString());
return;
}
var ass = csResults.CompiledAssembly;
var type = ass.GetType("MainClass");
var result = type.InvokeMember("Eval", BindingFlags.InvokeMethod,
null, null, null);