using System; #if CROSSPLATFORM || COREWIN using FastReport.Code.CodeDom.Compiler; using FastReport.Code.CSharp; #else using System.CodeDom.Compiler; using Microsoft.CSharp; #endif using System.Collections.Generic; using System.IO; using System.Reflection; using System.Text; namespace FastReport.Utils { /// /// Class helper for compile source code with path of assemblies /// public static class CompileHelper { /// /// Generate a assembly in memory with some source code and several path for additional assemblies /// /// /// /// public static Assembly GenerateAssemblyInMemory(string sourceCode, params string[] assemblyPaths) { using (CSharpCodeProvider compiler = new CSharpCodeProvider()) { CompilerParameters parameters = new CompilerParameters(); parameters.GenerateInMemory = true; foreach (string asm in assemblyPaths) { parameters.ReferencedAssemblies.Add(asm); } #if CROSSPLATFORM || COREWIN var mscorPath = compiler.GetReference("System.Private.CoreLib.dll").Display; parameters.ReferencedAssemblies.Add(mscorPath); #endif CompilerResults results = compiler.CompileAssemblyFromSource(parameters, sourceCode); return results.CompiledAssembly; } } } }