Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 285|回复: 0

[默认分类] C#中用ILMerge将所有引用的DLL和exe文件打成一个exe文件,有图解

[复制链接]
  • TA的每日心情
    开心
    2021-12-13 21:45
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2018-7-9 20:46:13 | 显示全部楼层 |阅读模式

      
       
       今天做了一个软件,想发布的时候才发现调用的类没几个,就像把它们都跟EXE文件打包在一起,以后复制去别的地方用也方便,于是上网搜了一下,发现网上大部分都是用ILMerge实现的,于是也自己试了一下,不过网上都没有详细的步骤演示,我就花点时间做了个教程,方便以后再有人想打包自己的程序,有篇文章可以参考,好了废话少说,马上开始:
         
       1.先到http://www.microsoft.com/downloads/details.aspx?FamilyID=22914587-B4AD-4EAE-87CF-B14AE6A939B0&displaylang=en下载ILMerge,才600多K,一下子就下好了.
       
         
       2.下载后是安装:  
       
         
       3.不到一分钟就可以安装完毕:
       
         
       4.我是安装在I盘下ILMerge目录下,以下是安装后的文件,就一个ILMerge.exe文件而已,我们等会就是用它打包程序的.
       
         
       5.为了演示,我重新建了个工程,最后生成的是 Main.exe 和 newDll文件,其中newDll是Main.exe 中要引用的Dll文件,为了演示方便,我将它们都复制到了ILMerge的目录下,现在我们就试着用ILMerge将newDll和Main.exe文件打包起来吧.
       
         
       6.然后进入dos窗口,进入ILMerge目录,然后执行下面代码:
       I:\ILMerge\ILMerge.exe /ndebug /target:winexe  /out:newclient.exe MainExe.exe  /log newDll.dll
       
       
         
         
         
       7.ILMerge运行时的窗口,此时它正在努力的将Main.exe和newDll文件捆绑在一起:
       
         
         
       8.DOS窗口关闭后,我们在去ILMerge目录下看看,此时已经生成好了我们想要的newclient.exe文件,它就是Main.exe和newDll.dll的结合体啦:
       
         
         
       以上实验在WIN7下.net framework3.5 平台,vs2008环境中测试通过
       大家都知道网卡的MAC地址可以从DOS窗口中通过输入"ipconfig /all"命令运行结果获得,那么这个问题的具体内容是:
     在C#中运行一个dos命令,并截取相关输出、输出流。
     具体代码如下:  
         
       C# code tbResult.Text = "";
     ProcessStartInfo start = new ProcessStartInfo("Ping.exe"); //设置运行的命令行文件问ping.exe文件,这个文件系统会自己找到
     //如果是其它exe文件,则有可能需要指定详细路径,如运行winRar.exe
     start.Arguments = txtCommand.Text; //设置命令参数
     start.CreateNoWindow = true; //不显示dos命令行窗口
     start.RedirectStandardOutput = true; //
     start.RedirectStandardInput = true; //
     start.UseShellExecute = false; //是否指定操作系统外壳进程启动程序
     Process p=Process.Start(start);
     StreamReader reader = p.StandardOutput; //截取输出流
     string line = reader.ReadLine(); //每次读取一行
     while (!reader.EndOfStream)
     {
     tbResult.AppendText(line+" ");
     line = reader.ReadLine();
     }
     p.WaitForExit(); //等待程序执行完退出进程
     p.Close(); //关闭进程
     reader.Close(); //关闭流
       

       "C:\Program Files\Microsoft\ILMerge\ILMerge.exe" /ndebug /target:winexe  /out:"C:\Program Files\Microsoft\ILMerge\newclient.exe" "C:\Program Files\Microsoft\ILMerge\USB CAN.exe"   "C:\Program Files\Microsoft\ILMerge\MyButton.dll"

       
      
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-5-19 12:17 , Processed in 0.372422 second(s), 37 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表