소프트웨어/C# & ASP.NET

ILMerge - 닷넷 어셈블리를 하나의 파일로 묶어주는 툴

falconer 2009. 7. 29. 09:24
- 시작전 잡설 : 참으로 오랜만의 포스팅이네요^^; 요 근래 두어달간 몇가지 흥미진진한(그만큼 구글링도 엄청한) 프로젝트를 진행하느라 좀 바빴는데, 다시 블로그에 관심을 가져줄까 합니다. (뭐, 기다리시는분은 없었겠지만-_-;;)

- 상황 : 부서내 다른팀(개발이 아닌)에게 업무에 사용할 툴을 만들어 주는데, 이것저것 참조된 어셈블리를 같이 배포했더니, 불편하다고 파일하나만 가지고 실행할 수 없겠냐고 합니다. (엑셀에, DB접속에, 각종 UI들까지 몇가지 있깄했죠.) 그래서 구글님께 물어보니, 아니나 다를까 ILMerge 라는 툴이 있었고, Microsoft 공식 사이트에서 배포중이었습니다.

- 다운로드 : ILMerge.msi

- ILMerge 를 설치하면 기본적으로 c:\Program Files\Microsoft\ILMerge 에 설치가 되며, ILMerge.exe 라는 단독 콘솔형 실행파일 하나만 존재합니다.

- 기본적인 사용법만을 알려드리자면, 메인이 될 dll 명을 맨 앞에 적어주고, 나머지를 뒤에 줄줄이 적어주면 됩니다. 그리고 결과물이 생성될 파일명을 /out 파라메터와 함께 적어줍니다.

  1. ILMerge.exe "/out:MergedAssembly.exe" "MergeTest.exe" "c:\Program Files\Microsoft Visual Studio 9.0\Visual Studio Tools for Office\PIA\Office11\Microsoft.Office.Interop.Excel.dll"  

- 위는 엑셀을 참조추가한 경우에 인터롭어셈블리를 같이 배포하지 않아도 되도록 묶어본 예입니다.(실제 사용시에는 배치파일로 만들어두면 편하겠죠)

- 이 툴이 유용한것중 하나는 pdb 파일도 함께 생성해주기 때문에, 디버깅에도 유용하다는 점입니다.

- 또 한가지, 이 툴의 실행파일또한 닷넷 어셈블리이 기 때문에 참조추가하여 사용할 수 있는데, 참조추가하게 되면, ILMerge.exe 가 제공해주는 모든 기능을 프로그래밍적으로 사용할 수 있습니다. (해당 내용은 설치시 제공되는 문서에 자세히 나와있습니다. 본 포스팅에서는 다루지 않습니다.)

- 제공되는 문서의 서론에서 언급하고 있는것들 몇가지
  - ILMerge.exe 는 여러개의 닷넷 어셈블리를 하나로 묶어준다.
  - 비관리 코드를 사용하는 일부 어셈블리는 묶지 못할 수도 있다.
  - PEVerify 유틸(닷넷 기본제공)을 통해 어셈블리가 유효한지 검증한 후 사용할 것을 권장한다.
  - 윈도우즈 플랫폼만 지원한다.

- 사용법또한 간단해서 소개하는 수준에서 마무리합니다. 몇몇 돌발상황(?)에 유용하게 쓰였으면 하네요^^


출처 : http://www.lemonwidz.com/tc/