http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 6937|回复: 5

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

[复制链接]
发表于 2016-11-2 09:26:43 | 显示全部楼层 |阅读模式
最近在开发实际项目中,需要将winform项目生成的后缀exe的可执行文件以及引用的dll合并成一个单独的exe文件,后来查阅相关资料,最终实现了,下面分享一下我的合并过程,希望可以帮助到有需要的朋友们。
我用到的是微软自家的一个软件ILMerge,需要安装一下这个软件,文章下面我会传一下我下载的安装文件,大家也可以到微软官网去下载,下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=17630,下载安装,我的安装目录是:C:\ILMerge

QQ截图20161102090319.png

首先把需要合并的exe文件和dll文件都拷贝到该目录下:

QQ截图20161102090459.png

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

QQ截图20161102090945.png

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


QQ截图20161102091139.png

我们看到,除了生成了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 (726 KB, 下载次数: 16)

本帖被以下淘专辑推荐:



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2016-11-4 14:23:37 | 显示全部楼层
太生气了,无法HOLD啦 >_<......
太垃圾了,连个GUI都不给误人子弟
ILMergeGui
http://ilmergegui.codeplex.com/
回复 支持 1 反对 0

使用道具 举报

发表于 2016-11-2 10:56:52 | 显示全部楼层
我只是路过打酱油的。
一个可以很好的可以将Dll打包到Exe程序的方法
发表于 2016-11-2 23:01:16 | 显示全部楼层
建议老大写个辅助工具,命令行神马的心好方
发表于 2016-11-29 14:15:46 | 显示全部楼层
太生气了,无法HOLD啦 >_<......
尼玛!管理乱删帖啦,日子不活啦,垃圾网站
 楼主| 发表于 2016-11-29 14:41:15 | 显示全部楼层
yzpopulation 发表于 2016-11-29 14:15
太生气了,无法HOLD啦 >_

我没封你已经算是低调处理了  只是把你回复删了  不要得寸进尺  论坛是给你交流技术用的  不是给你发攻击性言论用的  
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-4-20 13:41

© 2014-2021

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