每当安装、更新或还原包时,NuGet 将管理项目结构多个文件夹之外的包和包信息:

name 说明和位置(每个用户)
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/Linux:/tmp/NuGetScratch
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 中的 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-cacheglobal-packagestemp 或 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 个字符。

    缩短文件夹名称,然后重试。

管理全局包、缓存和临时文件夹相关推荐

  1. java从jar包中拷贝资源文件到临时文件夹

    具体方法: /*** 拷贝资源问件** @param path*/public static void extract(String path) {try {//创建临时文件夹File tempDir ...

  2. npm 默认全局、缓存路径及国内镜像地址修改

    文章目录 npm 默认全局.缓存路径及国内镜像地址修改 修改全局.缓存地址 命令修改 .npmrc 配置文件修改 验证 修改 npm 镜像源 命令修改 .npmrc 配置文件修改 多镜像地址管理工具 ...

  3. 如何使用命令行清除NuGet包缓存?

    本文翻译自:How to clear NuGet package cache using command line? I can clear my dev computer's NuGet packa ...

  4. linux wptmp文件分析,wordpress上传图片提示“缺少临时文件夹”的解决方法

    摘要:使用wordpress编辑器上传图片时出现了"缺少临时文件夹"的提示,该提示通常是由于服务器php配置的原因,如果之前上... 使用wordpress编辑器上传图片时出现了& ...

  5. linux基础-第十六单元 yum管理RPM包

    第十六单元 yum管理RPM包 yum的功能 本地yum配置 光盘挂载和镜像挂载 本地yum配置 网络yum配置 网络yum配置 Yum命令的使用 使用yum安装软件 使用yum删除软件 安装组件 删 ...

  6. npm修改全局包安装路径

    npm的安装方式 全局安装 npm install -g <package_name> 安装路径默认为C:\Users\xxx\AppData\Roaming\npm,缓存路径为C:\Us ...

  7. python模块 包 文件_Python临时文件模块

    python模块 包 文件 Python临时文件 (Python Tempfile) In every programming languages, it's often that program n ...

  8. Android缓存,删除网络依赖包缓存

    Android依赖包缓存目录:C:-gradle\caches\ 操作步骤 1.删除transforms-2文件夹下的依赖包缓存 2.删除module-2文件夹下的依赖包缓存 测试方法 1.先通过im ...

  9. npm安装的全局包/工具不能使用,不是内部/外部命令

    事情经过 今天通过npm安装全局工具,安装完成后,使用新安装的工具命令,竟然显示"不是内部或外部命令,也不是可运行的程序" 之前通过npm安装全局包,就可以正常使用,为什么今天就不 ...

最新文章

  1. java安全编码指南之:堆污染Heap pollution
  2. 【解决办法】read_csv()第一列作为index
  3. 几个Linux命令输出的各列含义
  4. 复制不用说yes的方法
  5. boost::mp11::mp_list_c相关用法的测试程序
  6. 饿了么EMonitor演进史
  7. 如果测试没有梦想,那跟咸鱼有什么区别?
  8. livecharts中仪表盘_Vue中使用Echarts仪表盘展示实时数据的实现
  9. 只要沾上婚恋焦虑,她们就王者变青铜
  10. java中 有return 的情况,return以及try,finally代码块的执行顺序
  11. SingalR 构建 推送服务器初探
  12. 我的第一篇cnds文章
  13. mysql如何创建模式_sql - MySQL'创建模式'和'创建数据库' - 有什么区别
  14. 西门子伺服驱动器6SE70上电无显示故障分析
  15. 广度优先搜索BFS-P3456 [POI2007]GRZ-Ridges and Valleys
  16. 独立IP和共享IP、网络地址转换NAT
  17. 目前计算机科学领域的前沿,计算机科学前沿热点及发展趋势
  18. 3.go mod的依赖文件所在位置
  19. 车载导航android音频策略,Android车载导航全局声控装置及方法
  20. 《深入理解MySQL主从原理32讲》推荐篇

热门文章

  1. 图像质量评价之数据库
  2. Python全栈开发——面向对象的三大特性(继承 多态 封装)
  3. IT英语2-编程词汇编程英语词汇
  4. @jsonignore的作用
  5. [转]listview中设置背景图片后 拉动变黑
  6. java.util.stream_java.util.stream.Stream 接口中的常用方法
  7. matlab晶闸管整流电路,采用Matlab/Simulink对三相桥式全控整流电路的仿真分析
  8. XYZ DOWN-电子书
  9. java 文件输出流_Java 文件输出流
  10. python stringstrip方法详解_Python 基础知识全篇-字符串(Strings)