public static DynCompile CompileCSCode(string csCode, string className, string[] refAssemblies = null) { if (refAssemblies == null) { refAssemblies = new string[] { "System.dll" } } ; var dyn = new DynCompile() { ClassName = className }; #if !NETCOREAPP3_0 && !NETSTANDARD2_0 && !NETSTANDARD2_1 CodeDomProvider csharpCodeProvider = new CSharpCodeProvider(); var cp = new CompilerParameters(); foreach (string asmName in refAssemblies) { cp.ReferencedAssemblies.Add(asmName); } cp.GenerateExecutable = false; cp.GenerateInMemory = true; try { CompilerResults cr = csharpCodeProvider.CompileAssemblyFromSource(cp, csCode); dyn.Assembly = cr.CompiledAssembly; } catch (Exception ex) { dyn.LastError = ex; } #endif return(dyn); }
public static void Test() { var dyn = DynCompile.CompileCSCode( DynCompile.GenCalc(@"return ""Hello cs world"";"), DynCompile.DynClass, null); Console.WriteLine(dyn.Calculate("Calc")); var dyn2 = DynCompile.GetCalc(@"return ""Hello Calc object"";"); }