1

我有这段代码,但它创建了一个 dll 文件:

private void btnCompile_Click(object sender, System.EventArgs e)
    {
        CSharpCodeProvider csp = new CSharpCodeProvider();
        ICodeCompiler cc = csp.CreateCompiler();
        CompilerParameters cp = new CompilerParameters();

        cp.OutputAssembly = Application.StartupPath + "\\TestClass.dll";
        cp.ReferencedAssemblies.Add("System.dll");
        cp.ReferencedAssemblies.Add("System.dll");
        cp.ReferencedAssemblies.Add("System.Data.dll");
        cp.ReferencedAssemblies.Add("System.Xml.dll");
        cp.ReferencedAssemblies.Add("mscorlib.dll");
        cp.ReferencedAssemblies.Add("System.Windows.Forms.dll");
        cp.ReferencedAssemblies.Add("CSharpScripter.exe");

        cp.WarningLevel = 3;

        cp.CompilerOptions = "/target:library /optimize";
        cp.GenerateExecutable = false;
        cp.GenerateInMemory = false;

        System.CodeDom.Compiler.TempFileCollection tfc = new TempFileCollection(Application.StartupPath, false);
        CompilerResults cr  = new CompilerResults(tfc);

        cr = cc.CompileAssemblyFromSource(cp, this.rtfCode.Text);

        if (cr.Errors.Count > 0) 
        {
            foreach (CompilerError ce in cr.Errors) 
            {
                Console.WriteLine(ce.ErrorNumber + ": " + ce.ErrorText);
            }
            MessageBox.Show(this, "Errors occoured", "Errors", MessageBoxButtons.OK, MessageBoxIcon.Error);
            this.btnExecute.Enabled = false;
        } 
        else 
        {
            this.btnExecute.Enabled = true;
        }

        System.Collections.Specialized.StringCollection sc = cr.Output;
        foreach (string s in sc) 
        {
            Console.WriteLine(s);
        }
    }  

怎么转换成exe文件?

4

1 回答 1

5
cp.GenerateExecutable = false;

你可能改变那条线......

于 2013-09-25T20:01:42.270 回答