Share via


전역 패키지, 캐시 및 임시 폴더 관리

패키지를 설치, 업데이트 또는 복원할 때마다 NuGet은 프로젝트 구조 외부의 여러 폴더에서 패키지 및 패키지 정보를 관리합니다.

속성 설명 및 위치(사용자별)
global-packages global-packages 폴더는 NuGet이 다운로드한 패키지를 설치하는 위치입니다. 각 패키지는 패키지 식별자 및 버전 번호와 일치하는 하위 폴더로 완전히 확장됩니다. PackageReference 형식을 사용하는 프로젝트는 항상 이 폴더의 직접 패키지를 직접 사용합니다. packages.config를 사용할 경우 패키지가 global-packages 폴더에 설치된 다음, 프로젝트의 packages 폴더에 복사됩니다.
  • Windows: %userprofile%\.nuget\packages
  • Mac/Linux: ~/.nuget/packages
  • NUGET_PACKAGES 환경 변수 globalPackagesFolder 또는 repositoryPath구성 설정(각각 PackageReference 및 packages.config를 사용할 경우) 또는 RestorePackagesPath MSBuild 속성(MSBuild에만 해당)을 사용하여 재정의합니다. 환경 변수가 구성 설정보다 우선 합니다.
http-cache Visual Studio 패키지 관리자(NuGet 3.x 이상) 및 dotnet 도구는 다운로드한 패키지의 복사본을 이 캐시에 .dat 파일로 저장하고, 각 패키지 소스에 대해 하위 폴더를 구성합니다. 패키지는 확장되지 않으며 캐시의 만료 시간은 30분입니다.
  • Windows: %localappdata%\NuGet\v3-cache
  • Mac/Linux: ~/.local/share/NuGet/v3-cache
  • NUGET_HTTP_CACHE_PATH 환경 변수를 사용하여 재정의합니다.
temp NuGet이 다양한 작업을 수행하는 중 임시 파일을 저장하는 폴더입니다.
  • Windows: %temp%\NuGetScratch
  • Mac: /tmp/NuGetScratch
  • Linux: /tmp/NuGetScratch<username>
  • NUGET_SCRATCH 환경 변수를 사용하여 재정의합니다.
  • plugins-cache 4.8+ NuGet이 작업 클레임 요청의 결과를 저장하는 폴더입니다.
    • Windows: %localappdata%\NuGet\plugins-cache
    • Mac/Linux: ~/.local/share/NuGet/plugins-cache
    • NUGET_PLUGINS_CACHE_PATH 환경 변수를 사용하여 재정의합니다.

    참고 항목

    NuGet 3.5 이전에서는 %localappdata%\NuGet\Cache에 있는 http-cache 대신 packages-cache를 사용합니다.

    NuGet은 캐시 및 global-packages 폴더를 사용하여 일반적으로 컴퓨터에 있는 이미 있는 패키지 다운로드를 방지하여 설치, 업데이트 및 복원 작업의 성능을 개선합니다. PackageReference를 사용하는 경우 global-packages 폴더는 다운로드한 패키지를 프로젝트 폴더 내에 보관하는 것도 막아 이러한 패키지가 소스 제어에 실수로 추가될 수 있는 문제를 방지하고 NuGet이 컴퓨터 스토리지에 미치는 전반적인 영향도 줄입니다.

    패키지를 검색하라는 요청을 받으면 NuGet은 먼저 global-packages 폴더를 찾습니다. 정확한 버전의 패키지가 없는 경우 NuGet은 모든 비 HTTP 패키지 소스를 확인합니다. 그래도 패키지를 못 찾으면 NuGet은 dotnet.exe 명령에 --no-http-cache 또는 nuget.exe 명령에 -NoHttpCache를 지정하지 않은 경우 http-cache에서 패키지를 찾습니다. 패키지가 캐시에 없거나 캐시가 사용되지 않는 경우에는 NuGet은 HTTP를 통해 패키지를 검색합니다.

    자세한 내용은 패키지를 설치하면 어떻게 되나요?를 참조하세요.

    폴더 위치 보기

    nuget locals 명령을 사용하여 위치를 확인할 수 있습니다.

    # Display locals for all folders: global-packages, http cache, temp and plugins cache
    nuget locals all -list
    

    일반적인 출력(Windows. “user1”은 현재 사용자 이름):

    http-cache: C:\Users\user1\AppData\Local\NuGet\v3-cache
    global-packages: C:\Users\user1\.nuget\packages\
    temp: C:\Users\user1\AppData\Local\Temp\NuGetScratch
    plugins-cache: C:\Users\user1\AppData\Local\NuGet\plugins-cache
    

    (package-cache는 NuGet 2.x에서 사용되며 NuGet 3.5 이전 버전에서 표시됩니다. )

    dotnet nuget locals 명령을 사용하여 폴더 위치를 확인할 수도 있습니다.

    dotnet nuget locals all --list
    

    일반적인 출력(Mac; "user1"은 현재 사용자 이름입니다.

    info : http-cache: /home/user1/.local/share/NuGet/v3-cache
    info : global-packages: /home/user1/.nuget/packages/
    info : temp: /tmp/NuGetScratch
    info : plugins-cache: /home/user1/.local/share/NuGet/plugins-cache
    

    일반적인 출력(Linux; "user1"은 현재 사용자 이름입니다.

    info : http-cache: /home/user1/.local/share/NuGet/v3-cache
    info : global-packages: /home/user1/.nuget/packages/
    info : temp: /tmp/NuGetScratchuser1
    info : plugins-cache: /home/user1/.local/share/NuGet/plugins-cache
    

    단일 폴더의 위치를 표시하려면 all 대신http-cache, global-packages, temp 또는 plugins-cache를 사용합니다.

    로컬 폴더 지우기

    패키지 설치 문제가 발생하는 경우 또는 원격 갤러리의 패키지를 설치하려는 경우 locals --clear(dotnet.exe) 또는 locals -clear(nuget.exe) 옵션을 사용하여 지울 폴더를 지정하거나 all을 사용하여 모든 폴더를 지웁니다.

    # Clear the 3.x+ cache (use either command)
    dotnet nuget locals http-cache --clear
    nuget locals http-cache -clear
    
    # Clear the 2.x cache (NuGet CLI 3.5 and earlier only)
    nuget locals packages-cache -clear
    
    # Clear the global packages folder (use either command)
    dotnet nuget locals global-packages --clear
    nuget locals global-packages -clear
    
    # Clear the temporary cache (use either command)
    dotnet nuget locals temp --clear
    nuget locals temp -clear
    
    # Clear the plugins cache (use either command)
    dotnet nuget locals plugins-cache --clear
    nuget locals plugins-cache -clear
    
    # Clear all caches (use either command)
    dotnet nuget locals all --clear
    nuget locals all -clear
    

    현재 Visual Studio에서 열려 있는 프로젝트에서 사용되는 모든 패키지는 global-packages 폴더에서 지워지지 않습니다.

    Visual Studio 2017부터 도구 > NuGet 패키지 관리자 > 패키지 관리자 설정 메뉴 명령을 사용한 다음, 모든 NuGet 캐시 지우기를 선택합니다. 캐시 관리는 현재 패키지 관리자 콘솔을 통해 사용할 수 없습니다. Visual Studio 2015에서 CLI 명령을 대신 사용합니다.

    NuGet option command for clearing caches

    오류 문제 해결

    nuget locals 또는 dotnet nuget locals를 사용하는 경우 다음과 같은 오류가 발생할 수 있습니다.

    • 오류: 다른 프로세스에서 사용 중이거나 로컬 리소스 지우기에 실패했기 때문에 프로세스에서 파일 <패키지>에 액세스할 수 없습니다. 하나 이상의 파일을 삭제할 수 없습니다.

      폴더에 있는 하나 이상의 파일이 다른 프로세스에서 사용 중입니다. 예를 들어 global-packages 폴더의 패키지를 참조하는 Visual Studio 프로젝트가 열려 있습니다. 해당 프로세스를 닫고 다시 시도합니다.

    • 오류: 경로 <경로> 에 대한 액세스가 거부되었 거나 디렉터리가 비어 있지 않습니다.

      캐시에서 파일을 삭제할 수 있는 권한이 없습니다. 가능한 경우 폴더 권한을 변경하고 다시 시도합니다. 또는 시스템 관리자에게 문의하세요.

    • 오류: 지정된 경로, 파일 이름 중 하나 또는 둘 다가 너무 깁니다. 정규화된 파일 이름은 260자 미만이어야 하며 디렉터리 이름은 248자 미만이어야 합니다.

      폴더 이름을 줄이고 다시 시도하세요.