Live CodeDOM Compiler

using Microsoft.CSharp;
using System.CodeDom.Compiler;
using System.Reflection;
using System.Windows.Forms;
...


string code = "String to compile";
CSharpCodeProvider cProv = new CSharpCodeProvider();
CompilerParameters cp = new CompilerParameters();
cp.ReferencedAssemblies.Add("System.dll");
cp.ReferencedAssemblies.Add("System.Windows.Forms.dll");
cp.ReferencedAssemblies.Add("System.Data.dll");
cp.ReferencedAssemblies.Add("System.Drawing.dll");
cp.ReferencedAssemblies.Add("System.Management.dll");
cp.ReferencedAssemblies.Add("System.Deployment.dll");
cp.ReferencedAssemblies.Add(typeof(System.Linq.IQueryable).Assembly.Location);
cp.GenerateExecutable = false;
cp.GenerateInMemory = true;
CompilerResults cResults = cProv.CompileAssemblyFromSource(cp, code);
TextBox response = new TextBox();
object obj = cResults.CompiledAssembly.CreateInstance("Compile.Code");
Type t = obj.GetType();
object[] arg = { response };
t.InvokeMember("Main", BindingFlags.InvokeMethod, null, obj, arg);
string responseText = response.Text;



Simple code to compile

using System;
using System.Windows.Forms;

namespace Compile
{
   public class Code
   {
       public void Main(TextBox text)
       {
           text.Text = "Message Box";
           MessageBox.Show("Test");
        }
    }
}

0 comments: