namespace MyDynamicCompile
{
class DynamicCompile
{
public static void Main()
{
string myStr = "World!";
Microsoft.CSharp.CSharpCodeProvider provider = new Microsoft.CSharp.CSharpCodeProvider();
System.CodeDom.Compiler.ICodeCompiler comp = provider.CreateCompiler();
System.CodeDom.Compiler.CompilerParameters cp = new System.CodeDom.Compiler.CompilerParameters();
cp.ReferencedAssemblies.Add("system.dll");
cp.GenerateExecutable = false;
cp.GenerateInMemory = true;
string code = @"using System;
public class Judgement
{
public void GetJude()
{
Console.WriteLine( " + "/"Hello," + myStr + @""");
}
}" ;
System.CodeDom.Compiler.CompilerResults cr = comp.CompileAssemblyFromSource(cp,code);
System.Diagnostics.Debug.Write(code);
if(cr.Errors.HasErrors)
{
System.Text.StringBuilder errorMsg = new System.Text.StringBuilder();
foreach(System.CodeDom.Compiler.CompilerError err in cr.Errors)
{
errorMsg.Append(err.ErrorText );
}
System.Diagnostics.Debug.WriteLine(errorMsg.ToString());
throw new System.Exception("Errors: " + errorMsg.ToString());
//return false;
}
else
{
System.Reflection.Assembly tmp = cr.CompiledAssembly;
object _Compiled = tmp.CreateInstance("Judgement");
System.Reflection.MethodInfo mi = _Compiled.GetType().GetMethod("GetJude");
mi.Invoke(_Compiled,null);
}
}
}
}
{
class DynamicCompile
{
public static void Main()
{
string myStr = "World!";
Microsoft.CSharp.CSharpCodeProvider provider = new Microsoft.CSharp.CSharpCodeProvider();
System.CodeDom.Compiler.ICodeCompiler comp = provider.CreateCompiler();
System.CodeDom.Compiler.CompilerParameters cp = new System.CodeDom.Compiler.CompilerParameters();
cp.ReferencedAssemblies.Add("system.dll");
cp.GenerateExecutable = false;
cp.GenerateInMemory = true;
string code = @"using System;
public class Judgement
{
public void GetJude()
{
Console.WriteLine( " + "/"Hello," + myStr + @""");
}
}" ;
System.CodeDom.Compiler.CompilerResults cr = comp.CompileAssemblyFromSource(cp,code);
System.Diagnostics.Debug.Write(code);
if(cr.Errors.HasErrors)
{
System.Text.StringBuilder errorMsg = new System.Text.StringBuilder();
foreach(System.CodeDom.Compiler.CompilerError err in cr.Errors)
{
errorMsg.Append(err.ErrorText );
}
System.Diagnostics.Debug.WriteLine(errorMsg.ToString());
throw new System.Exception("Errors: " + errorMsg.ToString());
//return false;
}
else
{
System.Reflection.Assembly tmp = cr.CompiledAssembly;
object _Compiled = tmp.CreateInstance("Judgement");
System.Reflection.MethodInfo mi = _Compiled.GetType().GetMethod("GetJude");
mi.Invoke(_Compiled,null);
}
}
}
}