dotnet pack
이 문서의 적용 대상: ✔️ .NET Core 3.1 SDK 이상 버전
이름
dotnet pack
- 코드를 NuGet 패키지로 압축합니다.
개요
dotnet pack [<PROJECT>|<SOLUTION>] [--artifacts-path <ARTIFACTS_DIR>]
[-c|--configuration <CONFIGURATION>] [--force]
[--include-source] [--include-symbols] [--interactive]
[--no-build] [--no-dependencies] [--no-restore] [--nologo]
[-o|--output <OUTPUT_DIRECTORY>] [--runtime <RUNTIME_IDENTIFIER>]
[-s|--serviceable] [--tl:[auto|on|off]] [-v|--verbosity <LEVEL>]
[--version-suffix <VERSION_SUFFIX>]
dotnet pack -h|--help
설명
dotnet pack
명령은 프로젝트를 빌드하고 NuGet 패키지를 만듭니다. 이 명령의 결과가 NuGet 패키지(즉, .nupkg 파일)입니다.
디버그 기호를 포함하는 패키지를 만들려면 다음 두 가지 옵션을 사용할 수 있습니다.
--include-symbols
- 기호 패키지를 만듭니다.--include-source
- 내부에 원본 파일이 포함된src
폴더가 있는 기호 패키지를 만듭니다.
압축된 프로젝트의 NuGet 종속성은 .nuspec 파일에 추가되므로 패키지를 설치할 때 적절히 확인됩니다. 압축된 프로젝트에 다른 프로젝트에 대한 참조가 있는 경우 다른 프로젝트는 패키지에 포함되지 않습니다. 현재 프로젝트 간 종속성이 있는 경우 프로젝트당 패키지가 있어야 합니다.
dotnet pack
은 기본적으로 프로젝트를 먼저 빌드합니다. 이렇게 하지 않으려면 --no-build
옵션을 전달합니다. 이 옵션은 코드가 이미 빌드된 CI(연속 통합) 빌드 시나리오에서 유용합니다.
참고 항목
경우에 따라 암시적 빌드를 수행할 수 없습니다. 이는 빌드 대상과 압축 대상 간에 순환 종속성을 방지하기 위해 GeneratePackageOnBuild
가 설정된 경우에 발생할 수 있습니다. 잠긴 파일 또는 기타 문제가 있는 경우에도 빌드가 실패할 수 있습니다.
압축 프로세스에 대한 dotnet pack
명령에 MSBuild 속성을 제공할 수 있습니다. 자세한 내용은 NuGet 팩 대상 속성 및 MSBuild 명령줄 참조를 참조하세요. 예제 섹션에서는 몇 가지 시나리오에 MSBuild -p
스위치를 사용하는 방법을 보여 줍니다.
참고 항목
웹 프로젝트는 패키징할 수 없습니다.
암시적 복원
dotnet new
, dotnet build
, dotnet run
, dotnet test
, dotnet publish
및 dotnet pack
등 복원이 필요한 모든 명령에 의해 암시적으로 실행되므로 dotnet restore
를 실행할 필요가 없습니다. 암시적 복원을 사용하지 않으려면 --no-restore
옵션을 사용합니다.
dotnet restore
명령은 Azure DevOps Services의 연속 통합 빌드 또는 복원 발생 시점을 명시적으로 제어해야 하는 빌드 시스템과 같이 명시적으로 복원이 가능한 특정 시나리오에서 여전히 유용합니다.
NuGet 피드를 관리하는 방법에 대한 자세한 내용은 dotnet restore
설명서를 참조하세요.
이 명령은 긴 형식(예: --source
)으로 전달될 때 dotnet restore
옵션을 지원합니다. -s
와 같이 짧은 형식의 옵션은 지원되지 않습니다.
워크로드 매니페스트 다운로드
이 명령을 실행하면 워크로드에 대한 광고 매니페스트의 비동기 백그라운드 다운로드가 시작됩니다. 이 명령이 완료될 때 다운로드가 계속 실행되면 다운로드가 중지됩니다. 자세한 내용은 광고 매니페스트를 참조하세요.
인수
PROJECT | SOLUTION
압축할 프로젝트 또는 솔루션입니다. csproj, vbproj 또는 fsproj 파일, 솔루션 파일 또는 디렉터리의 경로입니다. 지정하지 않으면 이 명령은 현재 디렉터리에서 프로젝트 또는 솔루션 파일을 검색합니다.
옵션
--artifacts-path <ARTIFACTS_DIR>
실행된 명령의 모든 빌드 출력 파일은 지정된 경로 아래의 하위 폴더에서 프로젝트로 구분됩니다. 자세한 내용은 아티팩트 출력 레이아웃을 참조 하세요. .NET 8 SDK부터 사용할 수 있습니다.
-c|--configuration <CONFIGURATION>
빌드 구성을 정의합니다. .NET 8 SDK 이상 버전으로 개발하는 경우 이 명령은 TargetFramework가 이후 버전으로 설정된
net8.0
프로젝트에 대해 기본적으로 구성을 사용합니다Release
. 기본 빌드 구성은Debug
이전 버전의 SDK 및 이전 대상 프레임워크용입니다. 프로젝트 설정에서 또는 이 옵션을 사용하여 기본값을 재정의할 수 있습니다. 자세한 내용은 릴리스 구성을 사용하고 'dotnet pack'에서 릴리스 구성을 사용하는 'dotnet publish'를 참조하세요.
--force
마지막 복원이 성공한 경우에도 모든 종속성을 강제 확인합니다. 이 플래그를 지정하는 것은 project.assets.json 파일을 삭제하는 것과 같습니다.
-?|-h|--help
명령을 사용하는 방법에 대한 설명을 출력합니다.
--include-source
출력 디렉터리에 일반 NuGet 패키지 외에 디버그 기호 NuGet 패키지를 포함합니다. 원본 파일은 기호 패키지 내
src
폴더에 있습니다.--include-symbols
출력 디렉터리에 일반 NuGet 패키지 외에 디버그 기호 NuGet 패키지를 포함합니다.
--interactive
명령이 중지되고 사용자 입력 또는 작업을 대기할 수 있도록 허용합니다. 예를 들어 인증을 완료합니다. .NET Core 3.0 SDK 이후 사용할 수 있습니다.
--no-build
압축하기 전에 프로젝트를 빌드하지 않습니다. 또한
--no-restore
플래그를 암시적으로 설정합니다.--no-dependencies
프로젝트 간 참조를 무시하고 루트 프로젝트만 복원합니다.
--no-restore
명령을 실행할 때 암시적 복원을 실행하지 않습니다.
--nologo
시작 배너 또는 저작권 메시지를 표시하지 않습니다.
-o|--output <OUTPUT_DIRECTORY>
지정된 디렉터리에 빌드된 패키지를 배치합니다.
.NET 7.0.200 SDK
7.0.200 SDK에서는 솔루션에서 이 명령을 실행할 때
--output
옵션을 지정하면 CLI에서 오류가 발생합니다. 이는 회귀이며 .NET SDK의 7.0.201 이상 버전에서 수정되었습니다.
--runtime <RUNTIME_IDENTIFIER>
패키지를 복원할 대상 런타임을 지정합니다. RID(런타임 식별자) 목록은 RID 카탈로그를 참조하세요.
-s|--serviceable
패키지에 서비스 가능 플래그를 설정합니다. 자세한 내용은 .NET Blog: .NET Framework 4.5.1 Supports Microsoft Security Updates for .NET NuGet Libraries(NET 블로그: .NET 4.5.1에서 .NET NuGet 라이브러리에 대한 Microsoft 보안 업데이트를 지원함)를 참조하세요.
--tl:[auto|on|off]
터미널 로거가 빌드 출력에 사용할지 여부를 지정합니다. 기본값은
auto
(으)로 터미널 로깅을 사용하도록 설정하기 전에 먼저 환경을 확인하는 것입니다. 환경 검사는 터미널이 최신 출력 기능을 사용할 수 있고 새 로거를 사용하도록 설정하기 전에 리디렉션된 표준 출력을 사용하지 않는지 확인합니다.on
은(는) 환경 검사를 건너뛰고 터미널 로깅을 사용하도록 설정합니다.off
은(는) 환경 검사를 건너뛰고 기본 콘솔 로거를 사용합니다.터미널 로거에는 복원 단계와 빌드 단계가 표시됩니다. 각 단계에서 현재 빌드 프로젝트는 터미널 아래쪽에 표시됩니다. 빌드 중인 각 프로젝트는 현재 빌드 중인 MSBuild 대상과 해당 대상에 소요된 시간을 모두 출력합니다. 이 정보를 검색하여 빌드에 대해 자세히 알아볼 수 있습니다. 프로젝트 빌드가 완료되면 다음을 캡처하는 단일 "빌드 완료" 섹션이 작성됩니다.
- 빌드된 프로젝트의 이름입니다.
- 대상 프레임워크(다중 대상인 경우)입니다.
- 해당 빌드의 상태입니다.
- 해당 빌드의 기본 출력(하이퍼링크됨)입니다.
- 해당 프로젝트에 대해 생성된 모든 진단입니다.
이 옵션은 .NET 8부터 사용할 수 있습니다.
-v|--verbosity <LEVEL>
명령의 세부 정보 표시 수준을 설정합니다. 허용되는 값은
q[uiet]
,m[inimal]
,n[ormal]
,d[etailed]
,diag[nostic]
입니다. 자세한 내용은 LoggerVerbosity를 참조하세요.
--version-suffix <VERSION_SUFFIX>
VersionSuffix
MSBuild 속성에 대한 값을 정의합니다. 이 속성이 패키지 버전에 미치는 영향은 다음 표와 같이Version
및VersionPrefix
속성 값에 따라 다릅니다.값이 있는 속성 패키지 버전 없음 1.0.0
Version
$(Version)
VersionPrefix
에만 해당$(VersionPrefix)
VersionSuffix
에만 해당1.0.0-$(VersionSuffix)
VersionPrefix
및VersionSuffix
$(VersionPrefix)-$(VersionSuffix)
--version-suffix
를 사용하려면 프로젝트 파일에서Version
이 아닌VersionPrefix
를 지정합니다. 예를 들어VersionPrefix
가0.1.2
이고--version-suffix rc.1
을dotnet pack
에 전달하면 패키지 버전은0.1.2-rc.1
이 됩니다.Version
에 값이 있고--version-suffix
를dotnet pack
에 전달하면--version-suffix
에 지정된 값이 무시됩니다.
예제
현재 디렉터리에 있는 프로젝트를 압축합니다.
dotnet pack
app1
프로젝트를 압축합니다.dotnet pack ~/projects/app1/project.csproj
현재 디렉터리에 있는 프로젝트를 압축하고 결과 패키지를
nupkgs
폴더에 배치합니다.dotnet pack --output nupkgs
현재 디렉터리에 있는 프로젝트를
nupkgs
폴더로 압축하고 빌드 단계를 건너뜁니다.dotnet pack --no-build --output nupkgs
.csproj 파일에서 프로젝트의 버전 접미사를
<VersionSuffix>$(VersionSuffix)</VersionSuffix>
로 구성한 상태로 현재 프로젝트를 압축하고 결과 패키지 버전을 지정된 접미사로 업데이트합니다.dotnet pack --version-suffix "ci-1234"
PackageVersion
MSBuild 속성을 사용하여 패키지 버전을2.1.0
으로 설정합니다.dotnet pack -p:PackageVersion=2.1.0
특정 대상 프레임워크에 대한 프로젝트를 압축합니다.
dotnet pack -p:TargetFrameworks=net45
프로젝트를 압축하고 복원 작업에 특정 런타임(Windows)을 사용합니다.
dotnet pack --runtime win-x64
.nuspec 파일을 사용하여 프로젝트를 압축합니다.
dotnet pack ~/projects/app1/project.csproj -p:NuspecFile=~/projects/app1/project.nuspec -p:NuspecBasePath=~/projects/app1/nuget
NuspecFile
,NuspecBasePath
및NuspecProperties
를 사용하는 방법에 관한 자세한 내용은 다음 리소스를 참조하세요.
.NET