首页 技术交流 ILMerge合并windows应用程序生成的exe和引用的dll文件 正文

ILMerge合并windows应用程序生成的exe和引用的dll文件

发布日期:2019年05月23日 13:48        阅读次数:1835

我们在平时Windows窗体开发过程中,不想去打包发布,那么如何将编辑好的EXE和引用的dll文件直接合并成一个EXE文件呢,这里我们需要借助一个第三方工具ILMerge。这块工具是微软自家的一个软件,需要安装一下这个软件,文章下面我会传一下我下载的安装文件,大家也可以到微软官网去下载,下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=17630

下载安装,我的安装目录是:C:\ILMerge,下载安全完成之后:

下面开始讲解如何使用这个工具进行dll合并。

第一步:需要把bin下面编辑通过的exe文件和dll文件都复制到这个文件目录下:

第二步:打开cmd命令行,执行cmd命令:

windows+R打开cmd命令框,输入cd c:\ILMerge,定位到该安装目录下,然后执行:
ilmerge /targetplatform:v4 /target:winexe /out:sufei.exe WindowsTool.exe  HttpHelper.dll Newtonsoft.Json.dll System.Data.Entity.Design.PluralizationServices.dll WebBLL.dll WebDAL.dll WebHepler.dll WebModel.dll Xamasoft.JsonClassGenerator.dll Gma.QrCodeNet.Encoding.Net35.dll


我们到c:\ILMerge目录下看是否生成了exe文件,上面的命令是以.net4.0框架执行合并程序,合并后的程序名称为sufei.exe,下面上图:

我们看到,除了生成了sufei.exe文件,还生成了一个pdb文件,pdb文件主要是程序数据库文件,用于存放调试一些信息的,可以不用管它,直接将合并后的sufei.exe随便复制粘贴到一个目录,我们会发现,打开成功,程序执行正常,这说明合并成功,没有问题。我的系统环境是window10+vs2010,合并成功。

当然也不是一开始就成功了的,也是经过一些波折,刚开始合并时cmd命令直接就打印出一些错误信息,大致是引用不允许之类的,后来经过一些排查,发现是二维码的Gma.QrCodeNet.Encoding.dll的问题,最后到官网下载了Gma.QrCodeNet.Encoding.Net35.dll这个dll才合并成功。而且刚开始合并时没有加 /targetplatform:v4这个命令,也是一直合并失败,后来加上这段命令,因为我的项目的。net版本是4.0,。


下面简单的说一下这个工具的合并命令:
合并dll:
ilmerge /targetplatform:v4 /target:library /out:myoutput.dll   HttpHelper.dll  Gma.QrCodeNet.Encoding.Net35.dll
这个命令只是简单的合并dll,out:后面是合并后的dll名称我们可以自定义,然后空格加上被合并的dll即可,简单可描述为:
ilmerge /targetplatform:v4 /target:library /out:合并后的名称.dll   被合并的dll1.dll  被合并的dll2.dll
合并dll和exe:
ilmerge /targetplatform:v4 /target:winexe /out:sufei.exe WindowsTool.exe  HttpHelper.dll Newtonsoft.Json.dll
简单描述为:
ilmerge /targetplatform:v4 /target:winexe /out:合并后的可执行文件名称.exe 被合并的可执行名称.exe  被合并的dll1.dll 被合并的dll2.dll

另外就是target:后面跟的有三种
winexe指的是合并为应用程序文件可以直接打开,
library指的是合并为库文件,
exe指的是合并为exe文件,和winexe不同的是打开时会带有cmd命令行。

ILMerge安装文件:ILMerge.msi

                                  

评论:

共 0 页 0 条记录,当前为第 1 页