管理全局包、缓存和临时文件夹
每當安裝、更新或還原包時,NuGet 將管理項目結構多個文件夾之外的包和包信息:
| global?packages | global-packages 文件夾是 NuGet 安裝任何下載包的位置。?每個包完全展開到匹配包標識符和版本號的子文件夾。?使用?PackageReference?格式的項目始終直接從該文件夾中使用包。?使用?packages.config?時,包將安裝到 global-packages 文件夾,然后復制到項目的?packages?文件夾。
|
| http?cache | Visual Studio 包管理器 (NuGet 3.x+) 和?dotnet?工具存儲此緩存中下載包的副本(另存為?.dat?文件),這些副本被組織到每個包源的子文件夾中。?未展開包,且緩存中有 30 分鐘的到期時間。
|
| temp | NuGet 在各操作期間在其中存儲臨時文件的文件夾。
|
| plugins-cache?4.8 + | NuGet 存儲來自操作聲明請求的結果的文件夾。
|
?備注
NuGet 3.5 和早期版本使用?%localappdata%\NuGet\Cache?中的 packages-cache 而不是 http-cache 。
通過使用緩存和 global-packages 文件夾,NuGet 通常會避免下載計算機上已存在的包,以提高安裝、更新和還原操作的性能。?在使用 PackageReference 時,global-packages 文件夾還會避免在項目文件夾中保存下載的包,其中它們可能會在無意間被添加到源代碼管理,并減少 NuGet 對計算機存儲的總體影響。
當要求檢索包時,NuGet 會首先查看 global-packages 文件夾。?如果不存在包的確切版本,NuGet 將檢查所有非 HTTP 包源。?如果仍未找到包,NuGet 將查找 http-cache 中的包,除非使用?dotnet.exe?命令指定?--no-cache,或使用?nuget.exe?命令指定?-NoCache。如果包不在緩存中,或未使用緩存,那么 NuGet 將通過 HTTP 檢索包。
有關詳細信息,請參閱安裝包時會發生什么情況?。
查看文件夾位置
可以使用?nuget locals 命令查看位置:
cli復制
# Display locals for all folders: global-packages, http cache, temp and plugins cache nuget locals all -list典型輸出(Windows;“user1”為當前用戶名):
output復制
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 命令查看文件夾位置:
.NET Core CLI復制
dotnet nuget locals all --list典型輸出(Mac/Linux;“user1”為當前用戶名):
output復制
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若要顯示單個文件夾的位置,請使用?http-cache、global-packages、temp?或?plugins-cache,而不是?all。
清除本地文件夾
如果安裝包時遇到問題或想要確保從遠程庫安裝包,請使用?locals --clear?選項 (dotnet.exe) 或?locals -clear?(nuget.exe),指定要清除的文件夾,或使用?all?清除所有文件夾:
cli復制
# 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 locals?或?dotnet nuget locals?時可能出現以下錯誤:
-
錯誤:進程無法訪問文件?,因為另一個進程正在使用該文件?或清除本地資源失敗:無法刪除一個或多個文件
另一個進程正在使用文件夾中的一個或多個文件;例如,Visual Studio 項目處于打開狀態,它指的是 global-packages 文件夾中的包。?關閉這些進程,然后重試。
-
錯誤:訪問路徑?被拒絕或目錄不為空
你沒有刪除緩存文件的權限。?如果可能,請更改文件夾權限,然后重試。?否則,請與系統管理員聯系。
-
錯誤:指定的路徑和/或文件名太長。完全限定文件名必須少于 260 個字符,而目錄名必須少于 248 個字符。
縮短文件夾名稱,然后重試。
總結
以上是生活随笔為你收集整理的管理全局包、缓存和临时文件夹的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 民生白条联名卡申请不通过/被拒怎么办
- 下一篇: [你必须知道的.NET]第三十三回,深入