C# 动态创建EXE

1.创建项目SaveExe或者修改代码中SaveExe名字为自己的项目

2.添加按钮调用CreateCodeEXE,即可实现编译生成一个新的exe即 复制了自身的exe生成一个新的exe(目的就是新生的exe,我们可以增加预设参数属性之类)。

public static void CreateCodeEXE()
        {
            CSharpCodeProvider provider = new CSharpCodeProvider();
            CompilerParameters parameters = new CompilerParameters();
            parameters.GenerateExecutable = true;
            parameters.CompilerOptions = "/target:winexe";
            parameters.GenerateInMemory = false;
            string path = "test.exe";
            parameters.OutputAssembly = path;
            
            parameters.ReferencedAssemblies.Add("SaveExe.exe");//此处是自身的exe
            parameters.ReferencedAssemblies.Add("System.dll");
            parameters.ReferencedAssemblies.Add("System.Windows.Forms.dll");
            parameters.ReferencedAssemblies.Add("Microsoft.CSharp.dll");
            parameters.ReferencedAssemblies.Add("System.Core.dll");
            parameters.ReferencedAssemblies.Add("System.Data.dll");
            parameters.ReferencedAssemblies.Add("System.Data.DataSetExtensions.dll");
            parameters.ReferencedAssemblies.Add("System.Deployment.dll");
            parameters.ReferencedAssemblies.Add("System.Drawing.dll");
            parameters.ReferencedAssemblies.Add("System.Net.Http.dll");
            parameters.ReferencedAssemblies.Add("System.Xml.dll"); 
            parameters.ReferencedAssemblies.Add("System.Xml.Linq.dll");
            
            string sourceFile = @"
            using System;
            using System.Collections.Generic;
            using System.Linq;
            using System.Threading.Tasks;
            using System.Windows.Forms;

            namespace SaveExe
            {
                static class Program
                {
                    /// <summary>
                    /// 应用程序的主入口点。
                    /// </summary>
                    [STAThread]
                    static void Main()
                    {
                        Application.EnableVisualStyles();
                        Application.SetCompatibleTextRenderingDefault(false);
                        Application.Run(new Form1());
                    }
                }
            }
        ";
            CompilerResults cr = provider.CompileAssemblyFromSource(parameters, sourceFile);
            if (cr.Errors.Count > 0)
            {
                StringBuilder sb = new StringBuilder();
                foreach (var er in cr.Errors)
                    sb.AppendLine(er.ToString());
                MessageBox.Show(sb.ToString());
            }
            else
            {
                MessageBox.Show("编译成功");
            }
        }

参考文章:https://www.iteye.com/problems/72159

猜你喜欢

转载自www.cnblogs.com/mqxs/p/11028165.html
今日推荐