【原创】小技巧减少发布文件数量,合并exe与dll

一、前言

有时候我们发布一个组件,不希望暴露出我们使用的dll,希望以最简洁的方式部署我们的组件。

比如一个自动更新组件,含有update.exe和a.dll,b.dll。

当我使用这个组件的时候,我希望把它本身的dll与exe进行合并,这样就避免了我在更新文件的过程中,遇到与自身调用的dll重名的文件无法更新的问题。(因为有可能业务系统也调用了2个dll,名字恰好叫做a.dll,b.dll)

二、ILMerge

据说是一个MS的牛人所做,官方下载地址:http://www.microsoft.com/downloads/en/details.aspx?FamilyID=22914587-b4ad-4eae-87cf-b14ae6a939b0&displaylang=en

这玩意可以把.net平台下的组件进行合并。也包括非托管的组件哦~

工具下载下来之后,使用cmd命令可以进入ILMerge所在文件夹,然后我们就可以输入命令了:

image

命令格式如下:

ilmerge /ndebug /target:[输出文件类型] /out:[输出文件名]/log [要合并的文件1] [要合并的文件2] [要合并的文件3]

下面是例子:

1)我有一个exe,调用了一个dll

image

2)使用ILMerge将他们合并为一个exe:

命令:

image

结果:

image

三、其他

ILMerge也支持以编程方式进行上述操作,具体还没研究过,可以参考以下文章:

a)http://www.raymanzhai.com/article.asp?id=65

b)http://hi.baidu.com/xyesterday/blog/item/50e11f35535a79a5d1a2d3f6.html

原文地址:https://www.cnblogs.com/wbpmrck/p/2091656.html