private static object ExecuteScript(string script, ScriptExecutionOptions options) { object result = null; CompilerParameters cpar = new CompilerParameters(); cpar.GenerateInMemory = true; cpar.ReferencedAssemblies.Add("mscorlib.dll"); cpar.ReferencedAssemblies.Add("System.dll"); cpar.ReferencedAssemblies.Add("System.Core.dll"); cpar.ReferencedAssemblies.Add("System.Data.dll"); cpar.ReferencedAssemblies.Add("System.Xml.dll"); cpar.ReferencedAssemblies.Add(typeof(CSharpScriptingProvider).Assembly.Location); string code = Properties.Resources.ScriptProviderCSharpTemplate; code = code.Replace("{Source}", script); CSharpCodeProvider csp = new CSharpCodeProvider(); CompilerResults res = csp.CompileAssemblyFromSource(cpar, code); if (!res.Errors.HasErrors) { MethodInfo func = res.CompiledAssembly.ExportedTypes.First().GetMethods().First(); result = func.Invoke(null, new object[] { options }); } return(result); }
object IScriptingProvider.Execute(string script, ScriptExecutionOptions options) { return(ExecuteScript(script, options)); }