닌자고양이
[.NET Core/.NET 5] 단일 실행 파일로 배포하기 본문
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 명령의 기본 옵션으로 적용된다)
'C# .NET' 카테고리의 다른 글
[C#] 문자열을 특정 길이(chunk size)로 쪼개기 (0) | 2020.09.18 |
---|---|
[C#] C#에서 C언어의 printf, scanf, getch 사용하기 (0) | 2020.06.25 |
[C#] 시간 범위 겹침 여부 체크 (0) | 2020.02.19 |
[C#] LINQ 를 사용한 DataTable 의 Outter Join (0) | 2019.10.18 |