グローバル パッケージ、キャッシュ、および一時フォルダーを管理するManaging the global packages, cache, and temp folders

NuGet では、パッケージのインストール、更新、または復元を行う場合は常に、プロジェクト構造の外にある複数のフォルダーで、以下のようなパッケージとパッケージ情報を管理します。Whenever you install, update, or restore a package, NuGet manages packages and package information in several folders outside of your project structure:

nameName 説明および場所 (ユーザーごと)Description and Location (per user)
global‑packagesglobal‑packages "グローバル パッケージ" フォルダーは、ダウンロードされた任意のパッケージが NuGet でインストールされる場所です。The global-packages folder is where NuGet installs any downloaded package. 各パッケージは、パッケージ ID とバージョン番号と一致するサブフォルダーに完全に展開されます。Each package is fully expanded into a subfolder that matches the package identifier and version number. PackageReference 形式を使用するプロジェクトでは常に、このフォルダーから直接パッケージを使用します。Projects using the PackageReference format always use packages directly from this folder. packages.config を使用する場合、パッケージは "グローバル パッケージ" フォルダーにインストールされ、プロジェクトの packages フォルダーにコピーされます。When using the packages.config, packages are installed to the global-packages folder, then copied into the project's packages folder.
  • Windows: %userprofile%\.nuget\packagesWindows: %userprofile%\.nuget\packages
  • Mac/Linux: ~/.nuget/packagesMac/Linux: ~/.nuget/packages
  • NUGET_PACKAGES 環境変数、globalPackagesFolderまたは repositoryPath構成設定 (それぞれ、PackageReference および packages.config を使用している場合)、あるいは RestorePackagesPath MSBuild プロパティ (MSBuild のみ) を使用して、オーバーライドします。Override using the NUGET_PACKAGES environment variable, the globalPackagesFolder or repositoryPath configuration settings (when using PackageReference and packages.config, respectively), or the RestorePackagesPath MSBuild property (MSBuild only). 環境変数は、構成設定よりも優先されます。The environment variable takes precedence over the configuration setting.
http‑cachehttp‑cache Visual Studio パッケージ マネージャー (NuGet 3.x 以降) および dotnet ツールでは、ダウンロードしたパッケージのコピーをこのキャッシュに格納し (.dat ファイルとして保存)、各パッケージ ソースのサブフォルダーに整理します。The Visual Studio Package Manager (NuGet 3.x+) and the dotnet tool store copies of downloaded packages in this cache (saved as .dat files), organized into subfolders for each package source. パッケージは展開されず、キャッシュには 30 分の有効期限があります。Packages are not expanded, and the cache has an expiration time of 30 minutes.
  • Windows: %localappdata%\NuGet\v3-cacheWindows: %localappdata%\NuGet\v3-cache
  • Mac/Linux: ~/.local/share/NuGet/v3-cacheMac/Linux: ~/.local/share/NuGet/v3-cache
  • NUGET_HTTP_CACHE_PATH 環境変数を使用してオーバーライドします。Override using the NUGET_HTTP_CACHE_PATH environment variable.
temptemp NuGet が、さまざまな操作中に一時ファイルを格納するフォルダーです。A folder where NuGet stores temporary files during its various operations.
  • Windows: %temp%\NuGetScratchWindows: %temp%\NuGetScratch
  • Mac/Linux: /tmp/NuGetScratchMac/Linux: /tmp/NuGetScratch
  • plugins-cache 4.8+plugins-cache 4.8+ NuGet が、操作要求の結果を格納するフォルダーです。A folder where NuGet stores the results from the operation claims request.
    • Windows: %localappdata%\NuGet\plugins-cacheWindows: %localappdata%\NuGet\plugins-cache
    • Mac/Linux: ~/.local/share/NuGet/plugins-cacheMac/Linux: ~/.local/share/NuGet/plugins-cache
    • NUGET_PLUGINS_CACHE_PATH 環境変数を使用してオーバーライドします。Override using the NUGET_PLUGINS_CACHE_PATH environment variable.

    注意

    NuGet 3.5 以前では、"HTTP キャッシュ" ではなく、%localappdata%\NuGet\Cache にある "パッケージ キャッシュ" を使用していました。NuGet 3.5 and earlier uses packages-cache instead of the http-cache, which is located in %localappdata%\NuGet\Cache.

    キャッシュと "グローバル パッケージ" フォルダーを使用することで、NuGet は多くの場合、コンピューター上に既に存在するパッケージのダウンロードを回避して、インストール、更新、および復元処理のパフォーマンスを改善しました。By using the cache and global-packages folders, NuGet generally avoids downloading packages that already exist on the computer, improving the performance of install, update, and restore operations. また、PackageReference を使用する場合、"グローバル パッケージ" フォルダーによって、プロジェクト フォルダー内にダウンロードされたパッケージを保持することを回避できます。プロジェクト フォルダーでは、パッケージがソース コントロールに誤って追加される可能性があります。グローバル パッケージ フォルダーによって、コンピューター ストレージでの NuGet の全体の影響が緩和されます。When using PackageReference, the global-packages folder also avoids keeping downloaded packages inside project folders, where they might be inadvertently added to source control, and reduces NuGet's overall impact on computer storage.

    パッケージの取得を求められたら、NuGet は最初に "グローバル パッケージ" フォルダー内を調べます。When asked to retrieve a package, NuGet first looks in the global-packages folder. パッケージの正確なバージョンがここになかった場合、NuGet は HTTP 以外のすべてのパッケージ ソースを確認します。If the exact version of package is not there, then NuGet checks all non-HTTP package sources. それでもパッケージが見つからない場合、--no-cache を付加した dotnet.exe コマンドまたは -NoCache を付加した nuget.exe コマンドを指定していないかぎり、NuGet は "HTTP キャッシュ" でパッケージを探します。If the package is still not found, NuGet looks for the package in the http-cache unless you specify --no-cache with dotnet.exe commands or -NoCache with nuget.exe commands. パッケージがキャッシュになかった場合、またはキャッシュが使用されていない場合、NuGet は HTTP 経由でパッケージを取得します。If the package is not in the cache, or the cache isn't used, NuGet then retrieves the package over HTTP .

    詳細については、「パッケージ インストールのしくみ」を参照してください。For more information, see What happens when a package is installed?.

    フォルダーの場所を表示するViewing folder locations

    次のように nuget locals コマンドを使用して場所を表示できます。You can view locations using the nuget locals command:

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

    典型的な出力は次のとおりです (Windows、"user1" は現在のユーザー名)。Typical output (Windows; "user1" is the current username):

    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 以前で表示されます。)(package-cache is used in NuGet 2.x and appears with NuGet 3.5 and earlier.)

    次のように dotnet nuget locals コマンドを使用して、フォルダーの場所を表示することもできます。You can also view folder locations using the dotnet nuget locals command:

    dotnet nuget locals all --list
    

    典型的な出力は次のとおりです (Mac/Linux、"user1" は現在のユーザー名)。Typical output (Mac/Linux; "user1" is the current username):

    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
    

    単一フォルダーの場所を表示するには、all ではなく、http-cacheglobal-packagestemp、または plugins-cache を使用します。To display the location of a single folder, use http-cache, global-packages, temp, or plugins-cache instead of all.

    ローカル フォルダーをクリアするClearing local folders

    パッケージのインストールに関する問題が発生した場合、または、リモート ギャラリーからパッケージをインストールしていることを確認する場合は、フォルダーを指定してクリアする locals --clear オプションまたは locals -clear (nuget.exe) を使用するか、すべてのフォルダーをクリアする all を使用します。If you encounter package installation problems or otherwise want to ensure that you're installing packages from a remote gallery, use the locals --clear option (dotnet.exe) or locals -clear (nuget.exe), specifying the folder to clear, or all to clear all folders:

    # 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 で開いているプロジェクトで使用されているパッケージはすべて、"グローバル パッケージ" フォルダーからクリアされません。Any packages used by projects that are currently open in Visual Studio are not cleared from the global-packages folder.

    Visual Studio 2017 以降、 [ツール]、[NuGet パッケージ マネージャー]、[パッケージ マネージャー設定] メニュー コマンドを使用して、 [すべての NuGet キャッシュをクリア] を選択します。Starting in Visual Studio 2017, use the Tools > NuGet Package Manager > Package Manager Settings menu command, then select Clear All NuGet Cache(s). キャッシュの管理は現在、パッケージ マネージャー コンソール経由では利用できません。Managing the cache isn't presently available through the Package Manager Console. Visual Studio 2015 では、代わりに CLI コマンドを使用します。In Visual Studio 2015, use the CLI commands instead.

    キャッシュをクリアするための NuGet オプション コマンド

    エラーのトラブルシューティングTroubleshooting errors

    以下のエラーは、nuget locals または dotnet nuget localsを使用した場合に発生する可能性があります。The following errors can occur when using nuget locals or dotnet nuget locals:

    • エラー: 別のプロセスで使用されているため、プロセスはファイルにアクセスできませんまたはローカル リソースをクリアできませんでした。1 つ以上のファイルを削除できませんError: The process cannot access the file because it is being used by another process or Clearing local resources failed: Unable to delete one or more files

      フォルダーにある 1 つまたは複数のファイルが、別のプロセスで使用中です。たとえば、"グローバル パッケージ" フォルダー内のパッケージを参照する Visual Studio プロジェクトが開いています。One or more files in the folder are in use by another process; for example, a Visual Studio project is open that refers to packages in the global-packages folder. それらのプロセスを閉じて、もう一度やり直してください。Close those processes and try again.

    • エラー: パスへのアクセスが拒否されますまたはディレクトリが空ではありませんError: Access to the path is denied or The directory is not empty

      キャッシュのファイルを削除するためのアクセス許可がありません。You don't have permission to delete files in the cache. 可能であれば、フォルダーのアクセス許可を変更して、もう一度やり直してください。Change the folder permissions, if possible, and try again. それができない場合は、システム管理者に問い合わせてください。Otherwise, contact your system administrator.

    • エラー: 指定されたパスかファイル名、またはその両方が長すぎます。完全修飾ファイル名は 260 文字未満で指定し、ディレクトリ名は 248 文字未満で指定してください。 "Error: The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters.

      フォルダー名を短くして、もう一度やり直してください。Shorten the folder names and try again.