dotnet pack

이 문서의 적용 대상: ✔️ .NET Core 3.1 SDK 이상 버전

이름

dotnet pack - 코드를 NuGet 패키지로 압축합니다.

개요

dotnet pack [<PROJECT>|<SOLUTION>] [-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 publishdotnet pack 등 복원이 필요한 모든 명령에 의해 암시적으로 실행되므로 dotnet restore를 실행할 필요가 없습니다. 암시적 복원을 사용하지 않으려면 --no-restore 옵션을 사용합니다.

dotnet restore 명령은 Azure DevOps Services의 연속 통합 빌드 또는 복원 발생 시점을 명시적으로 제어해야 하는 빌드 시스템과 같이 명시적으로 복원이 가능한 특정 시나리오에서 여전히 유용합니다.

NuGet 피드를 관리하는 방법에 대한 자세한 내용은 dotnet restore 설명서를 참조하세요.

이 명령은 긴 형식(예: --source)으로 전달될 때 dotnet restore 옵션을 지원합니다. -s와 같이 짧은 형식의 옵션은 지원되지 않습니다.

워크로드 매니페스트 다운로드

이 명령을 실행하면 워크로드에 대한 광고 매니페스트의 비동기 백그라운드 다운로드가 시작됩니다. 이 명령이 완료될 때 다운로드가 계속 실행되면 다운로드가 중지됩니다. 자세한 내용은 광고 매니페스트를 참조하세요.

인수

PROJECT | SOLUTION

압축할 프로젝트 또는 솔루션입니다. csproj, vbproj 또는 fsproj 파일, 솔루션 파일 또는 디렉터리의 경로입니다. 지정하지 않으면 이 명령은 현재 디렉터리에서 프로젝트 또는 솔루션 파일을 검색합니다.

옵션

  • -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 속성에 대한 값을 정의합니다. 이 속성이 패키지 버전에 미치는 영향은 다음 표와 같이 VersionVersionPrefix 속성 값에 따라 다릅니다.

    값이 있는 속성 패키지 버전
    없음 1.0.0
    Version $(Version)
    VersionPrefix에만 해당 $(VersionPrefix)
    VersionSuffix에만 해당 1.0.0-$(VersionSuffix)
    VersionPrefixVersionSuffix $(VersionPrefix)-$(VersionSuffix)

    --version-suffix를 사용하려면 프로젝트 파일에서 Version이 아닌 VersionPrefix를 지정합니다. 예를 들어 VersionPrefix0.1.2이고 --version-suffix rc.1dotnet pack에 전달하면 패키지 버전은 0.1.2-rc.1이 됩니다.

    Version에 값이 있고 --version-suffixdotnet 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, NuspecBasePathNuspecProperties를 사용하는 방법에 관한 자세한 내용은 다음 리소스를 참조하세요.