一、前言
有時候我們釋出一個元件,不希望暴露出我們使用的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所在檔案夾,然後我們就可以輸入指令了:
指令格式如下:
ilmerge /ndebug /target:[輸出檔案類型] /out:[輸出檔案名]/log [要合并的檔案1] [要合并的檔案2] [要合并的檔案3]
下面是例子:
1)我有一個exe,調用了一個dll
2)使用ILMerge将他們合并為一個exe:
指令:
結果:
三、其他
ILMerge也支援以程式設計方式進行上述操作,具體還沒研究過,可以參考以下文章:
a)http://www.raymanzhai.com/article.asp?id=65
b)http://hi.baidu.com/xyesterday/blog/item/50e11f35535a79a5d1a2d3f6.html