C# eval内でフォームを扱う事が出来ます。
using System; using System.Reflection; using System.CodeDom.Compiler; using System.Windows.Forms; using System.Diagnostics; public class CompileInvoke : Form { private static string cs =@" using System.Windows.Forms; //この行を追加 public class CSHello { public static void Main() { System.Console.WriteLine(""Hello C# World!""); MessageBox.Show(""ok""); } }"; public static void Main() { CompilerParameters param = new CompilerParameters(); Assembly[] asms = AppDomain.CurrentDomain.GetAssemblies(); foreach (Assembly a in asms) //全DLL取得 { if(a.GetName().GetPublicKeyToken().GetLength(0)!=0) param.ReferencedAssemblies.Add(a.GetName().Name+".dll"); } param.OutputAssembly = "b.exe"; param.CompilerOptions = "/target:winexe"; CodeDomProvider cc = CodeDomProvider.CreateProvider("CSharp"); CompilerResults cr = cc.CompileAssemblyFromSource(param, cs); //CompilerResults cr = cc.CompileAssemblyFromFile(param, "b.cs"); Process.Start("b.exe"); } }