小弟谢了段动态编译的代码如下:
]//源代码模板
        string codeBase = "using System;" + System.Environment.NewLine +
            "namespace Dream " + System.Environment.NewLine +
            "{" + System.Environment.NewLine +
            " static class Dream" + System.Environment.NewLine +
            " {" + System.Environment.NewLine +
            " [System.STAThread]" + System.Environment.NewLine +
            " static void Main()" + System.Environment.NewLine +
            " {" + System.Environment.NewLine +
            "  System.Windows.Forms.Application.Run(new CodeMaker.Code(new CodeMaker.WaterPicturebox(\" liuyanglong\")));" + System.Environment.NewLine +
            " }" + System.Environment.NewLine +
            " }" + System.Environment.NewLine +
            "}" + System.Environment.NewLine;        //设置生成的exe的路径和名称
        public void setExe(string file)
        {
            
               if (file.Length > 0)
            {
                //替换源代码
                string code = codeBase;
                code = code.Replace("liuyanglong", DreamMaker.DreamForm.getMain.ImagePass);
                // 创建编译器对象
                CSharpCodeProvider p = new CSharpCodeProvider();
                ICodeCompiler cc = p.CreateCompiler();                // 设置编译参数
                CompilerParameters options = new CompilerParameters();
                options.ReferencedAssemblies.Add("System.dll");
                options.ReferencedAssemblies.Add("System.Deployment.dll");
                options.ReferencedAssemblies.Add("System.Data.dll");
                options.ReferencedAssemblies.Add("System.Drawing.dll");
                options.ReferencedAssemblies.Add("System.Xml.dll");
                options.ReferencedAssemblies.Add("CodeMaker.DLL");
                options.ReferencedAssemblies.Add("System.Windows.Forms.dll");
                options.GenerateExecutable = true;
                options.OutputAssembly = "HelloWorld.exe";                 CodeSnippetCompileUnit cu = new CodeSnippetCompileUnit(code);                // 开始编译
                CompilerResults cr = cc.CompileAssemblyFromDom(options, cu);
                // 显示编译信息
                if (cr.Errors.Count == 0)
                    MessageBox.Show(" compiled ok!", cr.CompiledAssembly.Location);
                else
                {
                    MessageBox.Show("Complie Error:");
                    foreach (CompilerError error in cr.Errors)
                        MessageBox.Show(error.ErrorText);
                }                MessageBox.Show("Press Enter key to exit...");
               
            }
其中  System.Windows.Forms.Application.Run(new CodeMaker.Code(new CodeMaker.WaterPicturebox(\" liuyanglong\")));  如果没有参数,就可以编译成功,有了反而提示找不到CodeMaker.dll,为什么啊,我明明已经在options.ReferencedAssemblies.Add("CodeMaker.DLL")这句加入了,求高人指点迷津。