본문 바로가기
개발언어/C#

C# .Net 5.0 단일 실행 파일 생성

by 후쮸아빠 2021. 8. 23.
모든 애플리케이션 종속 파일을 하나의 이진 파일로 묶으면 애플리케이션 개발자가 애플리케이션을 단일 파일로 배포할 수 있습니다. 이 배포 모델은 .NET Core 3.0부터 사용할 수 있었으며 .NET 5.0에서 향상되었습니다. 이전의 .NET Core 3.0에서는 사용자가 단일 파일 앱을 실행할 때 .NET Core 호스트에서 먼저 모든 파일을 임시 디렉터리로 추출한 후 애플리케이션을 실행했습니다. .NET 5.0에서는 앱에서 파일을 추출할 필요 없이 코드를 직접 실행하여 이 환경을 개선합니다.

단일 파일 배포는 프레임워크 종속 배포 모델과 자체 포함 애플리케이션에 모두 사용할 수 있습니다. 자체 포함 애플리케이션의 단일 파일 크기는 런타임 및 프레임워크 라이브러리를 포함하므로 커집니다. 단일 파일 배포 옵션을 ReadyToRun 및 Trim(.NET 5.0의 실험적 기능) 게시 옵션과 함께 사용할 수 있습니다.

https://docs.microsoft.com/ko-kr/dotnet/core/deploying/single-file

 

단일 파일 애플리케이션 - .NET

단일 파일 애플리케이션이란 무엇이고, 이 애플리케이션 배포 모델 사용을 왜 고려해야 하는지를 알아봅니다.

docs.microsoft.com

 

 

.NET Core 3.0 부터 단일 실행 파일로 게시(?)가 가능하다. (하지만 난 .NET 5.0을 사용하고 있기 때문에.. 3.0에서는 확인하지 못했다..)

 

단일 실행 파일 생성은 크게 프레임워크 종속 배포 모델과 자체 포함으로 나뉜다. 

 

프레임워크 종속 배포 : 실제 EXE 실행 파일이 하나만 생성된다.  (우리가 원하는 거...)

자체 포함 : 실행 파일 EXE 외에도 자체 런타임 프레임워크 파일이 같이 생성된다. (실제 단일 실행 파일이 아니라는거..)

 

 

우리가 원하는 것은 EXE 실행파일이 달랑 하나 생기는 것을 원하는 것이므로 프레임워크 종속 배포로 해야 한다. 

 

다만, 런타임 프레임워크는 사용자가 알아서 깔아야 하는 불편함이 있다...

 

반만...단일 실행 파일이라느거... 

 

Visual Studio 2019에서 하는 방법을 간단하게...실제로 간단하다... 

 

1. 프로젝트에서 게시 설정

 

2. 폴더 형태의 게시를 선택

 

3. 단일 실행 파일이 게시 될 곳(Debug 및 Release 폴더에 빌드 후 게시 폴더에 단일 실행 파일이 생성됨)

 

4. 게시 [편집]으로 설정 변경

 

5. 대상 런타임을 선택하면 "파일 게시 옵션"을 나타납니다. 

   [단일 파일 생성]을 체크합니다. 

   ※ ReadyToRun 컴파일 사용을 할 경우 파일 크기는 커지지만 시작 실행 속도가 향상됩니다. (개발한 프로그램이 시작 실행 속도가 느리다면 해당 옵션을 선택하는 것도 검토가 필요합니다. )

6. 프로필 설정을 저장하고, 해당 프로필을 게시를 진행합니다. 

 

7. 게시 위치에 가면 EXE 실행 파일만 생성 된 것이 보입니다. 

pdb 파일은 실제 없어도 실행에는 문제가 없습니다. 

 


여기까지가 프레임워크 종속 단일 배포 생성하는 방법이였습니다.

 

아래는 일반 빌드 및 자체 포함 빌드에 대해 참고할 수 있는 간단한 자료 들입니다. 

 

[Release] 폴더와 어떻게 차이가 나는지??

비교해보면 차이를 아시겠죠? Newtonsoft.Json.dll 및 기타 dll 파일, json 파일들이 없어졌네요... 

 

 

IF 배포모드를 [자체 배포]로 할 경우, 

단일 파일 옵션임에도 publish 폴더에는 다양한 dll 파일들이 생기네요.. 

런타임 프레임워크를 대체하는 것들이죠... 뭐 물론 단일 파일 생성을 안하고 자체배포로 할 경우 엄청나게 많은 파일이 생기니까..그거에 비하면 이정도는 엄청 적은거긴 합니다. 

 

[참고] 자체 배포로 일반 빌드 시

각 CPU마다 아래와 같이 엄청난 파일들이 생성됩니다.....