Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

닌자고양이

[.NET Core/.NET 5] 단일 실행 파일로 배포하기 본문

C# .NET

[.NET Core/.NET 5] 단일 실행 파일로 배포하기

닌자고양이 2021. 3. 1. 08:20

1.콘솔에서 dotnet publish 명령어를 사용하는 portable한 방법

 

프로젝트 파일이 있는 디렉터리에서 다음 명령어를 입력한다.

dotnet publish -r win-x64 --self-contained true -p:PublishSingleFile=true -p:IncludeAllContentForSelfExtract=true

 

옵션 설명:

 

-r win-x64
대상 시스템의 Runtime-ID로 win-x64, win-x86, linux-x64, linux-arm, linux-arm64, osx-x64 등

--self-contained true
배포에 자체적으로 .NET 런타임을 포함한다.
false 또는 생략시 시스템에 설치된 런타임을 사용하며 일치하는 런타임 버전이 없을 시 실행이 안된다.

-p:PublishSingleFile=true
.NET 런타임과 프로그램 파일 및 그 종속 파일들을 하나의 파일로 묶어준다.
.NET 런타임과 종속 파일들은 다 포함하지만 일부 코어 파일들은 따로 출력된다.
실행이 약간 느리다. (실행시 묶인 파일들을 임시 폴더에 풀거나 검사하는 과정 때문에)

-p:IncludeAllContentForSelfExtract=true
PublishSingleFile 옵션으로 다 묶이지 않은 파일들까지 완전히 하나로 묶어준다.

 

-o: 출력디렉터리
프로젝트/출력디렉터리/ 에 배포 파일을 생성한다.
생략시 프로젝트/bin/Release/net5.0-windows/win-x64/publish/ 등의 깊고 깊은 곳에 생성한다.

 

 

2.Visual Studio 에서 IDE 를 사용하는 방법

 

IDE 의 [빌드]-[게시] 메뉴를 선택하고 GUI 안내를 따라가면 1번 방법 보다 많은 기능을 제공한다.

단, IncludeAllContentForSelfExtract 옵션이 없는데,
이 옵션은 한번 게시를 수행해 만들어지는 pubxml 파일에 수동으로 넣어주고 다시 게시를 해야한다.


프로젝트폴더/Properties/PublishProfiles/게시이름.pubxml 파일을 텍스트 편집기로 열어서
<IncludeAllContentForSelfExtract>true</IncludeAllContentForSelfExtract> 항목을 넣어주면 된다.

 

위 1번 방법의 옵션을 그대로 xml 로 옮기면 아래와 같다.

  <PropertyGroup>
  
    <RuntimeIdentifier>win-x64</RuntimeIdentifier>
    
    <SelfContained>true</SelfContained>
    
    <PublishSingleFile>true</PublishSingleFile>
    
    <IncludeAllContentForSelfExtract>true</IncludeAllContentForSelfExtract>
    
  </PropertyGroup>

(이 xml 을 pubxml 이 아닌 프로젝트(*.csproj) 파일에 넣으면 dotnet publish 명령의 기본 옵션으로 적용된다)

 

 

Comments