다음을 통해 공유


패키지 복원 오류 문제 해결

이 아티클에서는 패키지를 복원할 때 일반적인 오류 및 해당 문제를 해결하는 단계를 집중적으로 살펴봅니다.

패키지 복원은 프로젝트 파일( .csproj) 또는 packages.config 파일에서 패키지 참조와 일치하는 올바른 상태에 대한 모든 패키지 종속성을 설치하려고 합니다. (Visual Studio에서 참조는 솔루션 탐색기의 종속성 \ NuGet 또는 참조 노드 아래에 표시됩니다.) 패키지를 복원하는 데 필요한 단계를 수행하려면 패키지 복원을 참조하세요. 프로젝트 파일( .csproj) 또는 packages.config 파일의 패키지 참조가 잘못된 경우(패키지 복원 이후 원하는 상태와 일치하지 않는 경우) 패키지 복원을 사용하는 대신 패키지를 설치하거나 업데이트해야 합니다.

이 지침으로 문제가 해결되지 않을 경우 귀하의 시나리오를 더 면밀히 살펴볼 수 있도록 GitHub에서 문제를 제출해 주세요. 이 페이지에 나타날 수 있는 “이 페이지가 유용한가요?” 컨트롤은 사용하지 마세요. Microsoft에서 귀하에게 연락하여 자세한 내용을 확인할 수 없기 때문입니다.

Visual Studio 사용자를 위한 빠른 해결책

Visual Studio를 사용하는 경우 먼저 다음과 같이 패키지 복원을 활성화합니다. 그러지 않을 경우 다음에 나오는 섹션으로 이동합니다.

  1. 도구 > NuGet 패키지 관리자 > 패키지 관리자 설정 메뉴 명령을 선택합니다.
  2. 패키지 복원에서 두 옵션을 설정합니다.
  3. 확인을 선택합니다.
  4. 프로젝트를 다시 빌드합니다.

Enable NuGet package restore in Tool/Options

이러한 설정은 NuGet.Config 파일에서도 변경할 수 있습니다. 동의 섹션을 참조하세요. 프로젝트가 MSBuild 통합 패키지 복원을 사용하는 이전 프로젝트인 경우 자동 패키지 복원으로 마이그레이션해야 할 수 있습니다.

이 프로젝트는 이 컴퓨터에 없는 NuGet 패키지를 참조합니다.

전체 오류 메시지:

This project references NuGet package(s) that are missing on this computer.
Use NuGet Package Restore to download them. The missing file is {name}.

이 오류는 하나 이상의 NuGet 패키지에 대한 참조를 포함하는 프로젝트를 빌드하려고 시도할 때 해당 패키지가 컴퓨터 또는 프로젝트에 현재 설치되지 않은 경우에 발생합니다.

  • PackageReference 관리 형식을 사용할 경우 이 오류는 packages.config에서 PackageReference로 마이그레이션한 결과일 수 있으며 프로젝트 파일에서 수동으로 제거해야 합니다.
  • packages.config를 사용할 경우 이 오류는 패키지가 솔루션 루트의 packages 폴더에 설치되어 있지 않음을 의미합니다.

이러한 상황은 일반적으로 소스 제어 또는 다른 다운로드에서 프로젝트의 소스 코드를 가져올 때 발생합니다. 패키지는 nuget.org 같은 패키지 피드에서 복원할 수 있으므로 일반적으로 소스 제어 또는 다운로드에는 패키지가 없습니다(패키지 및 소스 제어 참조). 그렇지 않고 이를 포함할 경우 리포지토리가 블로트되거나 불필요하게 큰 .zip 파일이 생성됩니다.

프로젝트 파일에 패키지 위치에 대한 절대 경로를 포함하고 프로젝트를 이동하는 경우에 오류가 발생할 수도 있습니다.

패키지를 복원하려면 다음 방법 중 하나를 사용하세요.

복원되면 패키지가 global-packages 폴더에 있어야 합니다. PackageReference를 사용하는 프로젝트의 경우 복원에서 obj/project.assets.json 파일을 다시 만들어야 하고, packages.config를 사용하는 프로젝트의 경우 패키지가 프로젝트의 packages 폴더에 표시되어야 합니다. 이제 프로젝트가 성공적으로 빌드됩니다. 그렇지 않을 경우 후속 조치를 위해 GitHub에서 문제를 제출해 주세요.

자산 파일 project.assets.json을 찾을 수 없음

전체 오류 메시지:

Assets file '<path>\project.assets.json' not found. Run a NuGet package restore to generate this file.

project.assets.json 파일은 PackageReference 관리 형식을 사용할 때 프로젝트의 종속성 그래프를 유지하며, 필요한 모든 패키지가 컴퓨터에 설치되어 있는지 확인하는 데 사용됩니다. 이 파일은 패키지 복원을 통해 동적으로 생성되므로 일반적으로 소스 제어에는 추가되지 않습니다. 따라서 이 오류는 패키지를 자동으로 복원하지 않는 msbuild와 같은 도구를 사용하여 프로젝트를 빌드할 때 발생합니다.

이 경우 msbuild -t:restoremsbuild를 차례로 실행하거나 dotnet build를 사용합니다(그러면 패키지가 자동으로 복원됨). 이전 섹션에서는 원하는 패키지 복원 방법을 사용할 수도 있습니다.

전체 오류 메시지:

One or more NuGet packages need to be restored but couldn't be because consent has
not been granted. To give consent, open the Visual Studio Options dialog, click on
the NuGet Package Manager node and check 'Allow NuGet to download missing packages
during build.' You can also give consent by setting the environment variable
'EnableNuGetPackageRestore' to 'true'. Missing packages: {name}

이 오류는 NuGet 구성에 패키지 복원이 비활성화되었음을 나타냅니다.

앞서 Visual Studio 사용자를 위한 빠른 해결책에서 설명한 것처럼 Visual Studio의 해당 설정을 변경할 수 있습니다.

또한 해당 nuget.config 파일에서 이러한 설정을 바로 편집할 수도 있습니다(일반적으로 Windows의 경우 %AppData%\NuGet\NuGet.Config, Mac/Linux의 경우 ~/.nuget/NuGet/NuGet.Config). packageRestore 아래의 enabledautomatic 키가 True로 설정되었는지 확인합니다.

<!-- Package restore is enabled -->
<configuration>
    <packageRestore>
        <add key="enabled" value="True" />
        <add key="automatic" value="True" />
    </packageRestore>
</configuration>

중요

nuget.config에서 packageRestore 설정을 바로 편집할 경우 Visual Studio를 다시 시작해야 옵션 대화 상자에 최신 값이 표시됩니다.

다른 잠재적 상태

  • 파일이 없을 경우 NuGet 복원을 사용하려면 해당 파일을 다운로드하라는 메시지와 함께 빌드 오류가 발생할 수 있습니다. 그러나 복원을 실행하면 "모든 패키지가 이미 설치되어 있고 복원할 것이 없습니다."라고 표시될 수 있습니다. 이 경우 packages 폴더(packages.config를 사용하는 경우) 또는 obj/project.assets.json 파일(PackageReference를 사용하는 경우)을 삭제하고 복원을 다시 실행합니다. 그래도 오류가 지속되면 명령줄에서 Managing the global packages and cache folders(전역 패키지 및 캐시 폴더 관리)에 설명된 대로 nuget locals all -clear 또는 dotnet nuget locals all --clear를 사용하여 global-packages 및 캐시 폴더를 지웁니다.

  • 소스 제어에서 프로젝트를 가져올 때 프로젝트 폴더가 읽기 전용으로 설정되어 있을 수 있습니다. 폴더 사용 권한을 변경하고 패키지를 다시 복원해 보세요.

  • 이전 버전의 NuGet를 사용 중일 수 있습니다. nuget.org/downloads에서 최신 권장 버전을 확인하세요. Visual Studio 2015의 경우 3.6.0을 권장합니다.

다른 문제가 발생할 경우 자세한 내용을 확인할 수 있도록 GitHub에서 문제를 제출해 주세요.