.net DLL程序集中打包另一個DLL


項目中做了一個通用組件的類庫,類庫中引用了幾個第三方組件(DLL),組件發布給同事使用時,需要同時將這幾個第三方的DLL一並復制過去,然后添加相關組件的引用。

如何能夠將這些第三方的DLL直接打包到我的組件中,而不暴露給調用者,首先想到的是將DLL包裝成“嵌入的資源”,而這種方案需要在首先調用將資源程序自動解成物理文件,其結果仍舊是暴露了第三方組件。

后來找到Ilmerge這個工具,該工具是微軟官方提供的程序集合並工具,使用方法:

安裝后,CMD進入安裝好的目錄,打命令:

ilmerge Janet.DTest.Lib.dll Janet.Lib.dll /ndebug /out:Janet.DTest.Lib2.dll

其中Janet.Dtest.Lib.dll是我的組件名稱,Janet.Lib.dll是第三方組件,Janet.Dtest.Lib2.dll是合並后的文件

在Janet.DTest.Lib中引用了Janet.Lib組件,並調用了其中的函數,如下圖所示,兩個組件引用關系:

 image

做一個測試的項目,直接引用生成后的Janet.DTest.Lib2.dll

 image

debug目錄,生成結果,只有Janet.Dtest.Lib2.dll文件,沒有其他第三方組件的DLL,測試運行直接通過。

 image

注:Janet.Dtest.Lib2.dll文件名稱可以自己改,也可以在生成時指定生成的目錄。

附:

ILMerge參考資料

http://www.cnblogs.com/wuhenke/archive/2010/01/31/1660343.html

將ILMerge做成工具

http://www.cnblogs.com/huangcong/archive/2010/03/29/1699904.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM