2013-04-17 4 views
3

C#에서 TRSetup.dll 라이브러리를 만들고 있습니다. 프로젝트에 제 3 자 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

LibZ 대신 Costura.Fody를 사용한 이유는 pdb 디버깅 용. – Towa

관련 문제