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("编译成功"); } }