다음을 통해 공유


dotnet pack

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

이름

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

개요

dotnet pack [<PROJECT>|<SOLUTION>]
  [--artifacts-path <ARTIFACTS_DIR>] [-c|--configuration <CONFIGURATION>]
  [--disable-build-servers] [--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

Description

dotnet pack 명령은 프로젝트를 빌드하고 NuGet 패키지를 만듭니다. 이 명령의 결과는 NuGet 패키지(즉, .nupkg 파일)입니다.

디버그 기호가 포함된 패키지를 생성하려면 다음 두 가지 옵션을 사용할 수 있습니다.

  • --include-symbols - 기호 패키지를 만듭니다.
  • --include-source - 원본 파일을 포함하는 폴더가 src 포함된 기호 패키지를 만듭니다.

압축된 프로젝트의 NuGet 종속성이 .nuspec 파일에 추가되므로 패키지가 설치될 때 제대로 확인됩니다. 압축된 프로젝트에 다른 프로젝트에 대한 참조가 있는 경우 다른 프로젝트는 패키지에 포함되지 않습니다. 현재 프로젝트-프로젝트 종속성이 있는 경우 프로젝트당 패키지가 있어야 합니다.

기본적으로 dotnet pack 프로젝트를 먼저 빌드합니다. 이 동작을 방지하려면 옵션을 전달합니다 --no-build . 이 옵션은 코드가 이전에 빌드된 것을 알고 있는 CI(연속 통합) 빌드 시나리오에서 유용한 경우가 많습니다.

비고

암시적 빌드를 수행할 수 없는 경우도 있습니다. 이 문제는 빌드 대상과 팩 대상 간의 순환 종속성을 방지하기 위해 설정된 경우에 GeneratePackageOnBuild 발생할 수 있습니다. 잠긴 파일 또는 기타 문제가 있는 경우에도 빌드가 실패할 수 있습니다.

패킹 프로세스에 dotnet pack 대한 명령에 MSBuild 속성을 제공할 수 있습니다. 자세한 내용은 NuGet 팩 대상 속성MSBuild Command-Line 참조를 참조하세요. 예제 섹션에서는 몇 가지 다른 시나리오에 대해 MSBuild -p 스위치를 사용하는 방법을 보여 줍니다.

비고

웹 프로젝트는 압축할 수 없습니다.

암시적 복원

dotnet restore, dotnet new, dotnet build, dotnet run, dotnet testdotnet publish 등 복원이 필요한 모든 명령에 의해 암시적으로 실행되므로 dotnet pack를 실행할 필요가 없습니다. 암시적 복원을 사용하지 않으려면 --no-restore 옵션을 사용합니다.

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

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

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

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

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

Arguments

PROJECT | SOLUTION

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

Options

  • --artifacts-path <ARTIFACTS_DIR>

    실행된 명령의 모든 빌드 출력 파일은 지정된 경로 아래의 하위 폴더에서 프로젝트로 구분됩니다. 자세한 내용은 아티팩트 출력 레이아웃참조하세요. .NET 8 SDK부터 사용할 수 있습니다.

  • -c|--configuration <CONFIGURATION>

    빌드 구성을 정의합니다. .NET 8 SDK 이상 버전으로 개발하는 경우 이 명령은 TargetFramework가 Release 이상 버전으로 설정된 프로젝트에 대해 기본적으로 net8.0 구성을 사용합니다. 기본 빌드 구성은 이전 버전의 SDK 및 이전 대상 프레임워크에 대해 Debug. 프로젝트 설정에서 또는 이 옵션을 사용하여 기본값을 재정의할 수 있습니다. 자세한 내용은 'dotnet publish'가 릴리스 구성 사용하고 'dotnet pack'이 릴리스 구성사용하는 참조하세요.

  • --disable-build-servers

    명령이 영구 빌드 서버를 무시하도록 강제합니다. 이 옵션은 처음부터 빌드하도록 하는 모든 빌드 캐싱을 사용하지 않도록 설정하는 일관된 방법을 제공합니다. 캐시에 의존하지 않는 빌드는 어떤 이유로 캐시가 손상되거나 올바르지 않을 때 유용합니다. .NET 7 SDK부터 사용할 수 있습니다.

  • --force

    마지막 복원이 성공한 경우에도 모든 종속성을 강제 확인합니다. 이 플래그를 지정하는 것은 project.assets.json 파일을 삭제하는 것과 같습니다.

  • --include-source

    출력 디렉터리의 일반 NuGet 패키지 외에도 NuGet 패키지 디버그 기호를 포함합니다. 원본 파일은 기호 패키지 내의 src 폴더에 포함됩니다.

  • --include-symbols

    출력 디렉터리의 일반 NuGet 패키지 외에도 NuGet 패키지 디버그 기호를 포함합니다.

  • --interactive

    명령이 중지되고 사용자 입력 또는 작업을 대기할 수 있도록 허용합니다. 예를 들어 인증을 완료합니다.

  • --no-build

    압축하기 전에 프로젝트를 빌드하지 않습니다. 또한 --no-restore 플래그를 암시적으로 설정합니다.

  • --no-dependencies

    프로젝트-프로젝트 참조를 무시하고 루트 프로젝트만 복원합니다.

  • --no-restore

    명령을 실행할 때 암시적 복원을 실행하지 않습니다.

  • --nologo

    시작 배너 또는 저작권 메시지를 표시하지 않습니다.

  • -o|--output <OUTPUT_DIRECTORY>

    지정된 디렉터리에 빌드된 패키지를 배치합니다.

    • .NET 7.0.200 SDK

      7.0.200 SDK에서 솔루션에서 이 명령을 실행할 때 옵션을 지정 --output 하면 CLI에서 오류가 발생합니다. 이는 회귀이며 7.0.201 이상 버전의 .NET SDK에서 수정되었습니다.

  • --runtime <RUNTIME_IDENTIFIER>

    패키지를 복원할 대상 런타임을 지정합니다. RID(런타임 식별자) 목록은 RID 카탈로그를 참조하세요.

  • -s|--serviceable

    패키지에서 서비스 가능한 플래그를 설정합니다. 자세한 내용은 .NET 블로그: .NET Framework 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>

    MSBuild 속성의 VersionSuffix 값을 정의합니다. 이 속성이 패키지 버전에 미치는 영향은 다음 표와 같이 속성 및 VersionVersionPrefix 에 따라 달라집니다.

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

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

    값이 있고 전달 Version 하면 --version-suffixdotnet pack지정된 --version-suffix 값이 무시됩니다.

  • -?|-h|--help

    명령을 사용하는 방법에 대한 설명을 출력합니다.

예시

  • 현재 디렉터리에 프로젝트를 압축합니다.

    dotnet pack
    
  • app1 프로젝트 압축:

    dotnet pack ~/projects/app1/project.csproj
    
  • 현재 디렉터리에 프로젝트를 압축하고 결과 패키지를 폴더에 nupkgs 배치합니다.

    dotnet pack --output nupkgs
    
  • 현재 디렉터리의 프로젝트를 폴더에 nupkgs 압축하고 빌드 단계를 건너뜁니다.

    dotnet pack --no-build --output nupkgs
    
  • <VersionSuffix>$(VersionSuffix)</VersionSuffix> 파일에서와 같이 프로젝트의 버전 접미사가 구성된 상태에서 현재 프로젝트를 압축하고 지정된 접미사로 결과 패키지 버전을 업데이트합니다.

    dotnet pack --version-suffix "ci-1234"
    
  • MSBuild 속성을 사용하여 2.1.0PackageVersion 패키지 버전을 설정합니다.

    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
    

    및 사용 NuspecFileNuspecBasePathNuspecProperties방법에 대한 자세한 내용은 다음 리소스를 참조하세요.