이번에 개인적인 프로그램을 개발할 게 있어 작업 도중 자주 쓰이는 메서드나 컨트롤들을 DLL로 따로 관리하게 되었습니다. 그간 혼자 쓰느라 프로그램 배포할 일도 없었고 메서드나 컨트롤들을 프로그램 소스에 그대로 써서 라이브러리를 관리할 일도 없었습니다.
여기저기 흩어져있는 메소드나 컨트롤을 한 곳에 모으고 나름 관리를 해보고자 DLL로 구성하였고 이번에 개발하는 프로그램에도 아주 유용하게 적용하였습니다.
근데 이걸 컴파일 후 사용자한테 파일을 전달할 때 실행파일과 함께 사용된 DLL들도 같이 전달해야 하는 상황이 발생합니다. 이 파일들을 한 번에 전달하기에 좋은 방법이 없을까 하다 단일 파일로 만들 수 있는 방법들을 알게 되었고 앞으로도 유익하게 활용할 수 있어 기록으로 남기고자 합니다.
* 컴파일 후 참조에 사용된 여러 DLL들
- 컴파일 하고나니 위와 같이 여러 파일들이 있습니다.
- 압축해서 줄려니 저도 불편하고 받는 사람도 불편합니다.
* ILMerge
https://github.com/dotnet/ILMerge
- 관련 내용으로 검색하면 사용 방법도 많고 내용도 많습니다.
- Visual Studio의 Nuget Package에서 사용할 수 있어 매우 편리해 보입니다.
* ILMergeGUI
https://wvd-vegt.bitbucket.io/
- 다운로드
https://bitbucket.org/wvd-vegt/ilmergegui/downloads/
- ILMerge의 GUI입니다.
- Portable 버전으로 제공되며 클릭 몇 번으로 쉽게 어셈블리를 통합할 수 있습니다.
- ILMergeGUI의 정상적인 실행을 위해서는 동일한 폴더나 위치에 Nuget Package에서 설치된 'ILMerge.exe'와 'System.Compiler.dll'가 꼭 필요합니다.
- 작성일자 기준 최신 ILMerge입니다.
- 전 오류가 계속 발생해서 결국 제대로 활용하지 못했습니다.
** Fody
* 2021.12.17 Fody 6.6.0(현재 최신버전), Costura.Fody 5.7.0(현재 최신버전) 설치 시
오류 없이 정상 작동합니다.
- Nuget Package에서 설치할 수 있으며 사용방법은 컴파일할 때 자동으로 통합됩니다.
- VisualStudio 2017 Express에서 Fody 최신 버전은 오류가 있어 하위 버전으로 변경 이후 정상 작동합니다.
- 통합을 원하는 프로젝트 -> Nuget 패키지 관리에서 검색 후 'Costura.Fody'를 설치합니다. 안정적인 최신 버전이라기에 믿고 일단 설치했습니다.
- 'Costura.Fody'를 설치하면 자동으로 Fody 최신 버전이 같이 설치됩니다. 믿었습니다.
- 진짜로 될까 싶어 컴파일하니 위와 같이 오류가 발생합니다. 여기저기 찾아보니 버전 문제로 확인됩니다.
- 다시 통합을 원하는 프로젝트 -> Nuget 패키지 관리로 이동 후 이번엔 설치되어 있는 'Fody'를 선택하여 버전 '4.2.1'로 수정하고 업데이트 버튼을 선택합니다.
- 'Fody'의 버전 변경 시 'Costura.Fody' 또한 종속된 버전으로 변경됩니다. (반대로도 가능하겠네요)
- 'Fody' 버전 변경 후 프로젝트 컴파일 결과 기존에 있었던 DLL은 없고 실행파일 하나만 존재합니다. 단일 실행파일 용량은 기존의 파일들을 합친 용량과 비슷하고 정상적으로 실행됩니다.
- 실행파일뿐만 아니라 DLL 컴파일 시에도 적용됩니다.
이상입니다.
'컴퓨터 > c#' 카테고리의 다른 글
C#으로 PDF 제어하기 3 (PDF에서 내용 찾기) (0) | 2021.05.21 |
---|---|
C#으로 PDF 제어하기 2 (PDF Merge, PDF 병합, PDF 합치기) (0) | 2021.05.21 |
C# 한자, 일본어 확인 및 변환 등 (비정규식) (0) | 2021.05.20 |
C#으로 PDF 제어하기 (PDF 불러와서 원하는 페이지 저장) (0) | 2021.04.23 |
C# XML POST 전송과 응답, 파싱 예제 등 (0) | 2020.12.03 |