微软工具ILMerge

释义

ILMerge是一个可用于将多个.NET程序集合并为单个程序集的实用程序。

ILMerge接收一组输入程序集并将它们合并到一个目标程序集中输入程序集列表中的第一个程序集是主程序集。

当主组件是可执行文件时,目标程序集将创建为与主程序集具有相同入口点的可执行程序。而且,如果主组件具有强名称,并提供了.snk文件,则使用指定的键重新签名目标程序集,以使其具有强名称。

 

注意:当程序集中包含非托管代码等功能时可能会导致无法合并

           ILMerge作为控制台程序打包,也可以使用与编程方式访问,详细阅读微软文档,我们这里暂时之讲解ILMerge的控制台打包

           

 

准备

1.下载ILMerge,下载地址:https://www.microsoft.com/en-us/download/details.aspx?id=17630

2.安装ILMerge,下一步下一步......完成,ok

3.准备合并打包用的dll和exe

 

操作

1.合并生成exe

     ILMerge /log /target:winexe /out:sample.exe source\TestQuartz.exe  source\Common.Logging.Core.dll

  说明:

       》/log:生成日志,可以忽略,控制台会输出log

   》/target:生成输出类型,可以简写为/t

   》/targetplatform:输出文件的.net运行版本,我这里没有使用,可以忽略

   》/out:输出的文件名称,我是输出到当前ILMerge的根目录,如果需要输出到指定目录,请指定路径,例如我可以输出到 “D:\sample.exe”

       》多个合并文件注意空格隔开,我这里资源放在了ILMerge目录下的source文件夹下,所以写法为 source\XXX

 

2.合并生成dll

    ILMerge /log /target:dll /out:sample.dll source\NPOI.dll source\NPOI.OOXML.dll

   上面已经介绍过就不多说了

 

备注 ----参考csdn-iloli的文章,笔者没有测试,做备注使用

1.interop这种由COM转换过来的DLL合并:相关依赖的DLL必须也一起合并,vbide.dll要复制到目录一起合并

2.如果有资源DLL, 应该将要被合并的oldclient.exe先改为别的名称,因为资源文件为XX.resources.dll,而ILMERGE不能合并资源文件,否则在导出后将找不到此资源文件

 

参考

https://github.com/Microsoft/ILMerge/blob/master/ilmerge-manual.md

http://blog.csdn.net/iloli/article/details/9324569

http://www.sufeinet.com/forum.php?mod=viewthread&tid=17822

 

 

 

 

posted @ 2017-10-28 11:55  kevin_峰  阅读(1856)  评论(0编辑  收藏  举报