dotnet restore

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

이름

dotnet restore - 프로젝트의 종속성 및 도구를 복원합니다.

개요

dotnet restore [<ROOT>] [--configfile <FILE>] [--disable-build-servers]
    [--disable-parallel]
    [-f|--force] [--force-evaluate] [--ignore-failed-sources]
    [--interactive] [--lock-file-path <LOCK_FILE_PATH>] [--locked-mode]
    [--no-cache] [--no-dependencies] [--packages <PACKAGES_DIRECTORY>]
    [-r|--runtime <RUNTIME_IDENTIFIER>] [-s|--source <SOURCE>]
    [--tl:[auto|on|off]] [--use-current-runtime, --ucr [true|false]]
    [--use-lock-file] [-v|--verbosity <LEVEL>]

dotnet restore -h|--help

설명

.NET 프로젝트는 일반적으로 추가 기능을 제공하는 NuGet 패키지의 외부 라이브러리를 참조하세요. 이러한 외부 의존 관계는 프로젝트 파일(.csproj 또는 .vbproj)에서 참조됩니다. dotnet restore 명령을 실행하면 .NET CLI는 NuGet을 사용하여 이러한 종속성을 찾고 필요한 경우 다운로드합니다. 또한 프로젝트에 필요한 모든 종속성이 서로 호환되고 충돌이 없는지 확인합니다. 명령이 완료되면 프로젝트에 필요한 모든 종속성을 로컬 캐시에서 사용할 수 있으며 .NET CLI에서 애플리케이션을 빌드하고 실행하는 데 사용할 수 있습니다.

대부분의 경우 NuGet 복원이 필요한 경우 다음 명령이 암시적으로 실행되므로 dotnet restore 명령을 명시적으로 사용할 필요가 없습니다.

경우에 따라 이러한 명령으로 암시적 NuGet 복원을 실행하는 것이 불편할 수 있습니다. 예를 들어 빌드 시스템과 같은 자동화된 일부 시스템은 네트워크 사용량을 제어할 수 있도록 복원이 발생하는 경우를 제어하기 위해 명시적으로 dotnet restore를 호출해야 합니다. 암시적 NuGet 복원을 방지하려면 이러한 명령과 함께 --no-restore 플래그를 사용할 수 있습니다.

참고 항목

복원 작업 중에 서명된 패키지를 확인하려면 코드 서명 및 타임스탬프 모두에 유효한 인증서 루트 저장소가 필요합니다. 자세한 내용은 NuGet 서명 패키지 확인을 참조하세요.

피드 지정

종속성을 복원하려면 NuGet에 패키지가 있는 피드가 필요합니다. 피드는 일반적으로 nuget.config 구성 파일을 통해 제공됩니다. 기본 구성 파일은 .NET SDK가 설치될 때 제공됩니다. 추가 피드를 지정하려면 다음 중 하나를 수행합니다.

-s 옵션을 사용하여 nuget.config를 재정할 수 있습니다.

인증된 피드를 사용하는 방법에 대한 자세한 내용은 인증된 피드의 패키지 사용을 참조하세요.

글로벌 패키지 폴더

종속성의 경우 복원 작업 중 --packages 인수를 사용하여 복원된 패키지가 배치될 위치를 지정할 수 있습니다. 지정하지 않으면 모든 운영 체제에서 사용자의 홈 디렉터리의 .nuget/packages 디렉터리에 있는 기본 NuGet 패키지 캐시가 사용됩니다. 예를 들어 Linux의 경우 /home/user1 또는 Windows의 경우 C:\Users\user1입니다.

프로젝트별 도구

프로젝트 관련 도구의 경우 dotnet restore는 먼저 도구가 압축된 패키지를 복원한 다음 프로젝트 파일에 지정된 대로 도구의 종속성을 계속 복원합니다.

nuget 구성 차이점

dotnet restore 명령의 동작은 있는 경우 nuget.config 파일에 있는 일부 설정의 영향을 받습니다. 예를 들어 nuget.configglobalPackagesFolder를 설정하면 복원된 NuGet 패키지가 지정한 폴더에 저장됩니다. dotnet restore 명령의 --packages 옵션을 지정하는 대신 이 방법을 사용할 수 있습니다. 자세한 내용은 nuget.config 참조를 참조하세요.

dotnet restore에서 무시하는 3가지 특정 설정은 다음과 같습니다.

  • bindingRedirects

    바인딩 리디렉션은 <PackageReference> 요소에서 작동하지 않으며 .NET에서는 NuGet 패키지의 <PackageReference> 요소만 지원합니다.

  • 솔루션

    이 설정은 Visual Studio에만 적용되며 .NET에는 적용되지 않습니다. .NET에서는 packages.config 파일을 사용하지 않고, 대신 NuGet 패키지의 <PackageReference> 요소를 사용합니다.

  • trustedSigners

    플랫폼 간 패키지 시그니처 확인을 위한 지원이 .NET 5.0.100 SDK에 추가되었습니다.

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

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

인수

  • ROOT

    프로젝트 파일을 복원하는 선택적 경로입니다.

옵션

  • -a|--arch <ARCHITECTURE>

    대상 아키텍처를 지정합니다. 이는 제공된 값이 기본 RID와 결합되는 RID(런타임 식별자)를 설정하는 약식 구문입니다. 예를 들어, win-x64 머신에서 --arch x86을 지정하면 RID가 win-x86으로 설정됩니다. 이 옵션을 사용하는 경우 -r|--runtime 옵션을 사용하지 마세요. .NET 6 미리 보기 7 이후 사용 가능합니다.

  • --configfile <FILE>

    사용할 NuGet 구성 파일(nuget.config)입니다. 지정된 경우 이 파일의 설정만 사용됩니다. 지정되지 않으면 현재 디렉터리의 구성 파일의 계층 구조가 사용됩니다. 자세한 내용은 일반적인 NuGet 구성을 참조하세요.

  • --disable-build-servers

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

  • --disable-parallel

    여러 프로젝트를 병렬로 복원을 사용하지 않도록 설정합니다.

  • --force

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

  • --force-evaluate

    잠금 파일이 이미 존재하는 경우에도 모든 종속성을 다시 평가하기 위해 복원합니다.

  • -?|-h|--help

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

  • --ignore-failed-sources

    버전 요구 사항을 충족하는 패키지가 있는 경우 실패한 소스에 대해서만 경고합니다.

  • --interactive

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

  • --lock-file-path <LOCK_FILE_PATH>

    프로젝트 잠금 파일이 작성되는 출력 위치입니다. 기본적으로 PROJECT_ROOT\packages.lock.json입니다.

  • --locked-mode

    프로젝트 잠금 파일 업데이트를 허용하지 않습니다.

  • --no-cache

    HTTP 요청을 캐시하지 않도록 지정합니다.

  • --no-dependencies

    프로젝트 간(P2P) 참조를 사용하여 프로젝트를 복원할 경우 참조가 아닌 루트 프로젝트를 복원하세요.

  • --packages <PACKAGES_DIRECTORY>

    복원된 패키지에 대한 디렉터리를 지정합니다.

  • -r|--runtime <RUNTIME_IDENTIFIER>

    패키지 복원의 런타임을 지정합니다. .csproj 파일의 <RuntimeIdentifiers> 태그에 명시적으로 나열되지 않은 런타임의 패키지를 복원하는 데 사용됩니다. RID(런타임 식별자) 목록은 RID 카탈로그를 참조하세요.

  • -s|--source <SOURCE>

    복원 작업 중 사용할 NuGet 패키지 소스의 URI를 지정합니다. 이 설정은 nuget.config 파일에 지정된 모든 소스를 재정의합니다. 이 옵션을 여러 번 지정하여 여러 소스를 제공할 수 있습니다.

  • --tl:[auto|on|off]

    터미널 로거가 빌드 출력에 사용할지 여부를 지정합니다. 기본값은 auto(으)로 터미널 로깅을 사용하도록 설정하기 전에 먼저 환경을 확인하는 것입니다. 환경 검사는 터미널이 최신 출력 기능을 사용할 수 있고 새 로거를 사용하도록 설정하기 전에 리디렉션된 표준 출력을 사용하지 않는지 확인합니다. on은(는) 환경 검사를 건너뛰고 터미널 로깅을 사용하도록 설정합니다. off은(는) 환경 검사를 건너뛰고 기본 콘솔 로거를 사용합니다.

    터미널 로거에는 복원 단계와 빌드 단계가 표시됩니다. 각 단계에서 현재 빌드 프로젝트는 터미널 아래쪽에 표시됩니다. 빌드 중인 각 프로젝트는 현재 빌드 중인 MSBuild 대상과 해당 대상에 소요된 시간을 모두 출력합니다. 이 정보를 검색하여 빌드에 대해 자세히 알아볼 수 있습니다. 프로젝트 빌드가 완료되면 다음을 캡처하는 단일 "빌드 완료" 섹션이 작성됩니다.

    • 빌드된 프로젝트의 이름입니다.
    • 대상 프레임워크(다중 대상인 경우)입니다.
    • 해당 빌드의 상태입니다.
    • 해당 빌드의 기본 출력(하이퍼링크됨)입니다.
    • 해당 프로젝트에 대해 생성된 모든 진단입니다.

    이 옵션은 .NET 8부터 사용할 수 있습니다.

  • --use-current-runtime, --ucr [true|false]

    컴퓨터 중 하나를 기반으로 RuntimeIdentifier를 플랫폼 이식 가능한 RuntimeIdentifier로 설정합니다. 이는 SelfContained, PublishAot, PublishSelfContained, PublishSingleFilePublishReadyToRun과 같이 RuntimeIdentifier가 필요한 속성에서 암시적으로 발생합니다. 속성이 false로 설정되면 해당 암시적 해결이 더 이상 발생하지 않습니다.

  • --use-lock-file

    복원에 사용되고 생성될 프로젝트 잠금 파일을 사용합니다.

  • -v|--verbosity <LEVEL>

    명령의 세부 정보 표시 수준을 설정합니다. 허용되는 값은 q[uiet], m[inimal], n[ormal], d[etailed], diag[nostic]입니다. 기본값은 minimal입니다. 자세한 내용은 LoggerVerbosity를 참조하세요.

  • 현재 디렉터리에 있는 프로젝트에 대한 종속성 및 도구를 복원합니다.

    dotnet restore
    
  • 지정된 경로에 있는 app1 프로젝트에 대한 종속성 및 도구를 복원합니다.

    dotnet restore ./projects/app1/app1.csproj
    
  • 소스로 제공된 파일 경로를 사용하여 현재 디렉터리에 있는 프로젝트에 대한 종속성 및 도구를 복원합니다.

    dotnet restore -s c:\packages\mypackages
    
  • 소스로 제공된 2개의 파일 경로를 사용하여 현재 디렉터리에 있는 프로젝트에 대한 종속성 및 도구를 복원합니다.

    dotnet restore -s c:\packages\mypackages -s c:\packages\myotherpackages
    
  • 자세한 출력을 표시하는 현재 디렉터리에 있는 프로젝트에 대한 종속성 및 도구를 복원합니다.

    dotnet restore --verbosity detailed
    

보안 취약성 감사

.NET 8부터 dotnet restore에 대한 NuGet 보안 감사를 옵트인할 수 있습니다. 이 감사에서는 영향을 받은 패키지 이름, 취약성의 심각도 및 자세한 내용을 볼 수 있는 권고 링크가 포함된 보안 취약성 보고서를 생성합니다.

보안 감사를 옵트인하려면 프로젝트 파일에서 <NuGetAudit> MSBuild 속성을 true로 설정합니다. 또한 알려진 취약성 데이터 세트를 검색하려면 NuGet.org 중앙 레지스트리가 패키지 원본 중 하나로 정의되어 있는지 확인합니다.

<packageSources>
    <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
</packageSources>

<NuGetAuditLevel> MSBuild 속성을 설정하여 감사가 실패하는 수준을 구성할 수 있습니다. 가능한 값은 low, moderate, highcritical입니다. 예를 들어, 보통, 높음, 중요 권고 사항만 보려면 속성을 moderate로 설정하면 됩니다.