ILMerge使用,dll类库合并

最近做了一个数据成图组件,是对一个com控件的二次开发。

该com控件是个窗体控件在使用过程中自动生成了以AxInterop开头的AxInterop.****.dll和以Interop.开头的Interop.****.dll两个中间类,而这两个类放置的位置必须与最终的窗体同目录。

我开发的.net组件名称为:DCGjogis.dll,假设调用该组件生成的windows窗体程序为AAA.exe,要求AAA.exe与DCGjogis.dll同目录,因此结果就是,该目录下包含4个文件,分别为:AAA.exe,DCGjogis.dll,AxInterop.****.dll,Interop.****.dll

要求是该目录下只能包含AAA.exe,DCGjogis.dll两个文件,剩余的AxInterop.****.dll,Interop.****.dll两个文件必须放置在指定的文件夹中。

为了解决这个问题,研究了好久,都没有什么好的办法,后来终于找到一个取巧的办法,就是使用ILMerge合并dll类库。

 

1、下载并安装ILMerge.exe

2、我的安装目录是:D:\Program Files (x86)\ILMerge,然后在cmd命令中,进入该目录

3、在该目录下运行ILMerge.exe命令,我的命令是:

ILMerge.exe /ndebug /target:library  /out:DCGjogis.dll DLL/DCGjogis.dll  /log DLL/AxInterop.****.dll DLL/Interop.****..dll

/target 是输出类型;/out是输出dll类名称;/log是要合并的dll类名称,由于我的其它类是放置在“DLL”目录下,因此带有路径。

注意:

1、原始DCGjogis.dll自身包含其它引用类,都需要放置在与原始DCGjogis.dll相同的目录下。

2、如果原始DCGjogis.dll自身包含其它引用类,而其它引用类是相对路径的话,那么其它引用类每次更新,合并DCGjogis.dll都需要重新合并制作。

 

通过合并,最终实现了AAA.exe,DCGjogis.dll同目录,即可运行。

 

posted @ 2015-05-27 15:18  了了之  阅读(3281)  评论(0编辑  收藏  举报