是否有一種方法可以對一堆DLL進行分組,並在運行時仍然使用它們(未壓縮)。對不起,這個問題聽起來既簡單又愚蠢,但我不確定要問什麼。在可執行文件中使用分組DLL DLL
我會解釋,雖然情況:
我們已經有兩個獨立的Windows應用程序,現在我們的應用程序之一已經膨脹到這種笨拙的比例,其他應用程序不能在外面跑的第一個應用程序的範圍。我們希望保留一些封裝,同時讓更小的程序用於某些更大的程序功能。
運行應用程序沒有問題,除了我們不想發送小項目所有的20-30個DLL。
是否有一種方法可以對一堆DLL進行分組,並在運行時仍然使用它們(未壓縮)。對不起,這個問題聽起來既簡單又愚蠢,但我不確定要問什麼。在可執行文件中使用分組DLL DLL
我會解釋,雖然情況:
我們已經有兩個獨立的Windows應用程序,現在我們的應用程序之一已經膨脹到這種笨拙的比例,其他應用程序不能在外面跑的第一個應用程序的範圍。我們希望保留一些封裝,同時讓更小的程序用於某些更大的程序功能。
運行應用程序沒有問題,除了我們不想發送小項目所有的20-30個DLL。
有可能通過添加檢查,如果DLL是目前啓動代碼做到這一點在目標系統上,如果沒有,然後從資源部分提取它們(或簡單地標記到exe的結尾)。一個很好的例子是Process Explorer - 它是作爲一個單獨的二進制文件分發的,但是當它運行時,它會提取並安裝一個驅動程序。
如果您遇到這樣的情況,那些程序集中的大部分或全部都必須放在一起,那麼我強烈建議將代碼文件合併到同一個項目中並重新編譯。這會讓你有一個組裝。
當然還有其他一些考慮因素,如編譯時間,最終dll的總體大小,各個部分的更改頻率以及每個組件的部署是否沒有其他部分。
這樣做的公司的一個例子是Telerik。他們的開發組件都被編譯成相同的程序集。這使得部署變得非常輕鬆。與此相反的是Dev Express,它將每個控件放入其自己的程序集中。由於這只是維護,更少的部署,Dev Express項目並不是一件容易的事。
(我不爲任何這些公司的工作。不過,我有很多與兩個工具包的經驗。)
他們不使用程序集,它不是.NET。 (雖然你的答案仍然適用。) – Zifre 2010-03-13 14:51:32
您可以將DLL存儲爲資源,並使用BTMemoryModule,它基本上允許您在Stream上加載LoadLibrary。
通過這種方式,您可以將多個DLL直接編譯到EXE或單個資源DLL中。
請參閱http://www.jasontpenny.com/blog/2009/05/01/using-dlls-stored-as-resources-in-delphi-programs/
這些.NET程序集或本機代碼庫? – 2010-03-10 14:13:51
原生代碼(使用Delphi) – 2010-03-12 14:17:08