ilmerge工具合并多个DLL或EXE
这是一个微软提供的合并多个DLL 或是将DLL合并进EXE的工具
首先下载这个工具:ilmerge
http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=17630
合并成DLL:
C:\Program Files (x86)\Microsoft\ILMerge>ilmerge /log /t:dll /out:D:\temp\myexcel\bobatools.dll D:\product\IloliDll\IloliDll\bin\Debug\NPOI.dll D:\product\IloliDll\IloliDll\bin\Debug\IloliDll.dll
(最后二个是要合并的源文件,多个源文件之间用空隔隔开。在DLL合并过程中可能自己写的DLL会要用到这个ICSharpCode.SharpZipLib.dll,这个DLL 是DLL项目生成后会与DLL文件在同一目录下的。如果没有这个文件请重新生成你的DLL项目,以便出这个ICSharpCode.SharpZipLib.dll文件,否则合并可能失败)
合并成EXE:
ilmerge /ndebug /target:exe /targetplatform:v1.1 /out:newclient.exe oldclient.exe /log AutoUpdater.dll DockingSuite.dll DocumentManager.dll FileHelpers.dll OutlookBar.dll SandBar.dll ICSharpCode.SharpZipLib.dll
解释如下:
/target: [必须有的选项]可以简写为 /t: 指定输出组件的类型,有DLL/EXE/WINEXE; (如果是EXE,则程序在执行的时候将出现一个DOS窗口(即使是WINFORM的程序). 因此应该设置target为winexe)
/targetplatform:[可以没有] 输出组件的.net运行版本;
/out: [必须有的选项]合并后的组件全名;
/log: [可以没有] 屏幕上显示过程日志
后面是主要的被合并的组件名称, 及相关所有的其它DLL;
上面的示例只是合并为EXE, 也可以多个DLL合并成一个DLL使用, 各自的命名空间不会改变;
1. 不能合并interop这种由COM转换过来的DLL; (可以合并,但相关依赖的DLL必须也一起合并, 第一次合并的时候只有Excel.dll,总是报错,以为是interop的缘故,后来才发现是没有合并vbide.dll的缘故,复制到目录再一起合并,一切OK.)
2. 如果有资源DLL, 应该将要被合并的oldclient.exe先改为别的名称,然后合并后的输出命名为:oldclient.exe,因为资源文件名是:oldclient.resources.dll,而ILMERGE不能合并资源文件,否则在导出后将找不到此资源文件。(如果哪位知道如何合并资源文件,请指教,谢谢)
3. 虽然合并后的EXE比较大,但在用户那里只有一个EXE,这样直观的多,也容易升级维护.
ilmerge工具合并多个DLL或EXE的更多相关文章
- 使用ILMerge将所有引用的DLL和exe文件打成一个exe文件
今天做了一个IM自动更新的软件,里面牵扯到了文件的解压和接口签名加密,使用了2个第三方的dll,想发布的时候才发现调用的类没几个,就像把它们都跟EXE文件打包在一起,以后复制去别的地方用也方便,于是上 ...
- C#中用ILMerge合并DLL和exe文件成一个exe文件或者DLL
ILMerge是一个将多个.NET程序集合并到一个程序集中的实用程序.它既可以作为 开源使用,也可以作为NuGet包使用. 如果您在使用它时遇到任何问题,请与我们联系.(mbarnett _at_ ...
- wpf dll和exe合并成一个新的exe
原文:wpf dll和exe合并成一个新的exe 微软有一个工具叫ILMerge可以合并dll exe等,但是对于wpf的应用程序而言这个工具就不好用了.我的这方法也是从国外一个博客上找来的.仅供大家 ...
- ILMerge合并多个DLL
序言 如果你的项目要提供多个dll给别人用,那么不妨让你的dll合并为一个,让别人看起来简洁,引用起来不会过于繁琐. 本篇比较少,但也算是比较实用吧. 下载微软的辅助工具ILMerge Imerge下 ...
- C# 合并DLL, 合并DLL进入EXE 【转】
使用方法非常简单 在项目属性窗口中,选择"生成事件",在"生成后事件命令行"下的文本框中输入 ilmerge /ndebug /t:dll /log c:/1/ ...
- C# 合并DLL, 合并DLL进入EXE
原文:C# 合并DLL, 合并DLL进入EXE 使用方法非常简单 在项目属性窗口中,选择"生成事件",在"生成后事件命令行"下的文本框中输入 ilmerge / ...
- ILMerge合并多个DLL (转)
最近在研究CodeDom,用到ILMerge 序言 如果你的项目要提供多个dll给别人用,那么不妨让你的dll合并为一个,让别人看起来简洁,引用起来不会过于繁琐. 本篇比较少,但也算是比较实用吧. 下 ...
- 关于DLL调试的两个工具(dependency walker和dumpbin.exe)
Dependency Walker工具: 该工具用来查看dll依赖库和依赖库内的函数. 左上角:模块依赖树,表示该dll所依赖的其它dll文件 右上角:导入函数,即与当前根模块有关系的函数(即根模块或 ...
- C#中将dll汇入exe z
用了3层架构,运行目录下有很多dll文件,最终发布时,我打算将dll文件都合并到exe文件中去.微软发布的免费软件ILmerge可以完成这项工作,研究了一下,其用法如下: 1.合并file1.dll. ...
随机推荐
- Python 字符串前面加'r'
在Python的string前面加上‘r’, 是为了告诉编译器这个string是个raw string,不要转意backslash '\' . 例如,\n 在raw string中,是两个字符,\和n ...
- C语言不定参数
最近,遇到一个c语言的不定参数问题.其实,对于c语言的不定参数问题,只需要三个函数就可以搞定了.这三个函数的头文件是<stdarg.h>,其实下面的三个函数都是一个宏定义(macro). ...
- Windows之权限讲解
windows中,权限指的是不同账户对文件,文件夹,注册表等的访问能力.在windows中,为不同的账户设置权限很重要,可以防止重要文件被其他人所修改,使系统崩溃. 1权限概念 我们可以在控制面板中设 ...
- flex 无法将“<mx:>”解析为组件执行.解决方法
转自:http://www.myexception.cn/flex/434924.html 问题描述: flex项目导入早期版本 无法将“<mx:******>”解析为组件执行. 如图: ...
- Unity Web前端研究
原地址:http://blog.csdn.net/libeifs/article/details/7200630 开发环境 Window7 Unity3D 3.4.1 MB525defy Andro ...
- MyEclipse中出现Address already in use:JVM_Bind:8080
今天在搭建环境,跑以前的一个项目时,出现了Address already in use 的错误,这显然是tomcat的端口号被占用了,我的机子上安装了appache和appache Tomcat: 我 ...
- 比较全的log4j示例
<?xml version="1.0" encoding="UTF-8"?> <configuration status="off& ...
- android下载
1. 源码下载链接: http://source.android.com/source/downloading.html 参考链接: Android源码下载方法详解 2. SDK下载 http://d ...
- CI:模拟进化与遗传算法
模拟进化计算 (Simulated Evolutionary Computation) 是近二十年来信息科学.人工智能与计算机科学的一大研究领域,由此所派生的求解优化问题的仿生类算法(遗传算法. ...
- C# -- HttpWebRequest 和 HttpWebResponse 的使用 C#编写扫雷游戏 使用IIS调试ASP.NET网站程序 WCF入门教程 ASP.Net Core开发(踩坑)指南 ASP.Net Core Razor+AdminLTE 小试牛刀 webservice创建、部署和调用 .net接收post请求并把数据转为字典格式
C# -- HttpWebRequest 和 HttpWebResponse 的使用 C# -- HttpWebRequest 和 HttpWebResponse 的使用 结合使用HttpWebReq ...