2013-04-17 83 views
3

我在C#中創建一個庫TRSetup.dll。 該項目包括一些第三方DLL。 (如:GalaSoft.MvvmLight.Extras.WPF4.dll,GalaSoft.MvvmLight.WPF4.dll,RemObjects.Hydra.dll)如何結合第三方DLL與自己的DLL

我需要將所有的dll,並創建一個單一的DLL。

我正在使用ilMerge來組合dll。 以下命令我使用的,

ilMerge /out:MergedSetup.dll /targetplatform:v4,"C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Profile\Client" 
/lib: TRSetup.dll Galasoft.MvvmLight.Extras.WPF4.dll Galasoft.MvvmLight.WPF4.dll RemObject.Hydra.dll 

我可以創建一個名爲MergedSetup.dll一個DLL,但在運行時,它崩潰。 我應該如何合併這些dll。

預先感謝您。

+1

什麼時候它「崩潰」?發生什麼事?任何例外,代碼示例? –

+0

TRSetupWindow是一個WPF表單。 當我調用TRSetupWindow()的構造函數時,它正在崩潰。 我嘗試調試它,它給出以下例外。 '無法加載文件或程序集'TRSetup,Version = 1.0.0.2228,Culture = neutral,PublicKeyToken = null'或其依賴項之一。系統找不到指定的文件.' –

+0

TRSetup的構造函數具有InitializeComponent(),它初始化WPF GUI組件,該組件是自動生成的 –

回答

5

這就是WPF(和NHibernate以及許多其他引用程序集名稱)和ILMerge的問題。長話短說,在ILMerge之後不再有這樣的組裝,他們都被注入到主組件中。

嘗試嵌入,而不是合併:LIBZ( http://libz.codeplex.com/)或Costura.Fody(https://github.com/Fody/Costura/

免責聲明:我LIBZ的作者。

乾杯,

+0

我使用Costura.Fody代替LibZ的原因是支持嵌入pdb進行調試。 – Towa