当前位置:

首页 > 编程开发 > Visual Studio2017修改NuGet包缓存存放路径

Visual Studio2017修改NuGet包缓存存放路径

Visual Studio Code macOS版
Visual Studio Code macOS版

Visual Studio Code 是微软提供的免费代码编辑器,支持 macOS,并为 Intel 与 Apple 芯片 Mac 提供适配版本。软件集代码编辑、调试、Git 源代码管理、集成终端和扩展市场于一体。

立即下载
macOS 2026-10-13
数据库 编程开发 VS Code 服务器管理 装机必备

本文详细介绍在Visual Studio 2017中修改NuGet包全局缓存存放路径的实用方案,包括修改全局NuGet.Config文件、配置系统环境变量以及利用NTFS目录联接进行透明迁移,并提供验证与旧缓存清理步骤。

在默认情况下,Visual Studio 2017 会将所有通过 PackageReference 引用的 NuGet 依赖项下载到系统盘的用户目录(C:\Users\<用户名>\.nuget\packages)。随着开发项目数量增加和依赖库频繁升级,该缓存目录常常迅速膨胀至数十吉字节(GB),成为导致 C 盘可用空间紧张的主要原因之一。解决该问题的核心路径十分明确:通过修改 NuGet 全局配置文件(NuGet.Config)中的 globalPackagesFolder 节点、或者设置系统环境变量 NUGET_PACKAGES,将全局包存放地址永久重定向到数据盘;亦或通过 Windows NTFS 目录联接(Junction)实现无感重定向。本文将详细讲解具体实施步骤、验证方法及迁移注意事项。

一、Visual Studio 2017 的 NuGet 缓存存放机制

在动手调整路径之前,需要明确 Visual Studio 2017 涉及的两套不同依赖管理模式与缓存分类:

  • 全局包缓存(global-packages):VS 2017 开始广泛使用 PackageReference 格式(.NET Core 及部分现代 .NET Framework 项目),下载的包会统一保存在全局缓存目录。默认路径为 %userprofile%\.nuget\packages。所有引用相同版本库的项目共享该文件,不再重复复制到工程目录下。
  • 解决方案级包目录(packages.config):若维护的是较早的传统 .NET Framework 项目,项目根目录同级会生成一个 packages 文件夹。该位置受配置项 repositoryPath 控制。
  • HTTP 缓存(http-cache):下载包时的元数据与压缩流缓存,默认存放于 %localappdata%\NuGet\v3-cache。

因此,对于大多数开发者而言,占用空间最大的通常是 global-packages 目录。将其迁移至其他分区(例如 D:\NuGet\packages)是释放系统盘空间的关键操作。

Visual Studio2017修改NuGet包缓存存放路径
图 1:Visual Studio 2017 与 NuGet 依赖缓存存储架构及重定向示意图

二、方法一:修改全局 NuGet.Config 文件(官方推荐)

修改用户的全局 NuGet.Config 配置文件是最规范且推荐的方式。该配置文件控制当前登录用户所有使用 NuGet 的开发工具(包括 VS 2017、dotnet CLI 以及独立 nuget.exe)。

1. 定位配置文件

在 Windows 资源管理器地址栏输入以下路径并回车:

%AppData%\NuGet\NuGet.Config

对应物理完整路径通常为:C:\Users\<用户名>\AppData\Roaming\NuGet\NuGet.Config。如果该目录下尚未存在 NuGet.Config,可以在该位置新建一个文本文件并命名为 NuGet.Config。

2. 添加配置节点

使用文本编辑器(例如记事本或 VS Code)打开 NuGet.Config,在 根节点内部,添加或修改 节。完整示例如下:



  
    
    
    
    
  
  
    
  
注意: XML 语法区分大小写,键名必须是 globalPackagesFolder,首字母 g 小写、P 与 F 大写;目标路径(如 D:\NuGet\packages)中建议使用英文字符和标准反斜杠,避免包含特殊符号或空格。

3. 使用 NuGet 命令行快速写入(备选操作)

如果不希望手动编辑 XML,也可以在命令提示符(cmd)中执行以下命令自动写入:

nuget config -set globalPackagesFolder=D:\NuGet\packages

该命令会自动定位并修改上述的 NuGet.Config 文件,避免因 XML 标签未闭合导致格式错误。

Visual Studio2017修改NuGet包缓存存放路径
图 2:修改全局 NuGet.Config 标准实施步骤流程图

三、方法二:配置系统环境变量 NUGET_PACKAGES

除修改配置文件外,NuGet 支持通过系统环境变量 NUGET_PACKAGES 覆盖默认全局包路径。该方法的优势在于对自动化构建环境、持续集成(CI/CD)以及多工具链环境拥有极高的适配度。

1. 操作步骤

  1. 右键点击桌面或文件资源管理器的“此电脑”图标,选择“属性”。
  2. 在弹出的系统窗口左侧点击“高级系统设置”,随后点击“环境变量”按钮。
  3. 在“系统变量”(对全机所有用户生效)或“用户变量”(仅对当前用户生效)区域,点击“新建”:
    • 变量名:NUGET_PACKAGES
    • 变量值:D:\NuGet\packages(填入期望的物理目标路径)
  4. 连续点击“确定”保存退出。
  5. 必须完全退出并重新启动 Visual Studio 2017。由于环境变量由进程启动时从系统继承,不重启 VS 2017 则新变量无法生效。

四、方法三:利用 NTFS 目录联接(mklink /J)

如果当前开发环境存在一些老旧自定义构建脚本、或者第三方扩展固执地写死了 %userprofile%\.nuget\packages 路径,修改配置或环境变量可能会引发兼容性问题。此时,利用 Windows NTFS 文件系统的目录联接(Directory Junction)是最无感、最稳妥的解决方案。

1. 操作原理与步骤

目录联接能够在操作系统内核层面将指向 C 盘默认目录的访问请求透明导向 D 盘实际目录,对所有软件完全透明。

  1. 关闭 Visual Studio 2017 及其相关进程。
  2. 在目标盘创建存放目录,例如 D:\NuGet\packages。
  3. 如果原路径 C:\Users\<用户名>\.nuget\packages 中已有大量缓存,将其内部文件剪切迁移至 D:\NuGet\packages。
  4. 迁移完成后,必须删除原 C 盘下的 packages 文件夹(否则创建软链接时会报“当文件已存在时,无法创建该文件”错误)。
  5. 以管理员身份运行“命令提示符”(cmd),执行以下命令:
    mklink /J "C:\Users\<你的用户名>\.nuget\packages" "D:\NuGet\packages"

创建成功后,命令提示符会输出:为 C:\Users\<用户名>\.nuget\packages <<===>> D:\NuGet\packages 创建的联接。在资源管理器中查看该目录时,图标上会带有一个快捷方式小箭头,其实际磁盘空间占用完全转移至 D 盘。

Visual Studio2017修改NuGet包缓存存放路径
图 3:三种路径重定向方案特性与选型决策对比图

五、生效验证与磁盘空间清理

完成上述配置后,必须通过标准化动作核验新路径是否生效,并彻底清理留在系统盘上的过期无用缓存,完成空间释放的闭环。

1. 在 Visual Studio 2017 中验证

  1. 打开 Visual Studio 2017,依次点击顶部菜单:工具 (Tools) > 选项 (Options)。
  2. 在左侧树状列表中展开 NuGet 包管理器 (NuGet Package Manager) > 常规 (General)。
  3. 在右侧可以看到“清除所有 NuGet 缓存”按钮。点击该按钮可清除已有的临时包缓存。
  4. 新建或打开一个包含 NuGet 依赖的项目,在“解决方案资源管理器”中右键解决方案,点击“还原 NuGet 程序包”。
  5. 还原完成后,打开设定的目标目录(如 D:\NuGet\packages),确认内部是否正常生成了对应依赖包(如 Newtonsoft.Json 等)及其版本子文件夹。

2. 使用命令行查询当前激活路径

在开发人员命令提示符(Developer Command Prompt for VS 2017)中执行以下命令查看 NuGet 识别的位置:

nuget locals all -list

控制台将输出三类缓存的具体物理路径:

http-cache: C:\Users\<用户名>\AppData\Local\NuGet\v3-cache
global-packages: D:\NuGet\packages
temp: C:\Users\<用户名>\AppData\Local\Temp\NuGetScratch

若 global-packages 对应路径已成功变更为 D 盘地址,说明配置已完全生效。

3. 安全删除原 C 盘历史缓存

确认新路径已承接后续还原后,对于没有使用 mklink 方案的用户,可以直接将 C:\Users\<用户名>\.nuget\packages 目录内的文件夹全部清空。这一步通常能立即为 C 盘回收数 GB 至数十 GB 的宝贵空间。

Visual Studio2017修改NuGet包缓存存放路径
图 4:迁移生效核验与清理维护流程图

六、常见问题与注意事项

  • 中文路径与空格问题:自定义路径中尽量避免包含中文或空格(如不要使用 D:\我的文档\NuGet)。虽然部分现代版本的 CLI 能够支持,但 VS 2017 内部部分早期构建任务工具链可能出现路径截断或转义异常。
  • 解决方案级 overrides:如果团队项目中包含 Directory.Build.props 文件并显式配置了 属性,则该工程级配置优先级高于全局 NuGet.Config。排查特定项目为何仍落入其他路径时应优先检索该属性。
  • 外置移动硬盘风险:切勿将缓存路径设置在可能随时拔出的移动硬盘或网络映射驱动器(NAS)上。若开发时驱动器盘符未就绪或断开,Visual Studio 2017 编译项目时会直接抛出找不到依赖项或无法写入文件的严重错误。
本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
作者最新文章
编程开发
相关文章 更多
VisualStudio2019安装完成后缺少.NET组件修复方案
VisualStudio2019安装完成后缺少.NET组件修复方案

详细介绍Visual Studio 2019安装完成后缺少.NET组件的完整修复方案,涵盖Visual Studio Installer组件增补、Targeting Pack目标包修复、已弃用历史框架安装及命令行环境排查。

Visual Studio2022Git提交代码出现冲突如何手动合并
Visual Studio2022Git提交代码出现冲突如何手动合并

在 Visual Studio 2022 中提交或同步 Git 代码遇到冲突时,如何通过内置的三向合并工具定位冲突文件、对比当前与传入更改、手动编辑并完成最终提交的实用操作指南。

Visual Studio2017C++项目配置Release发布编译选项
Visual Studio2017C++项目配置Release发布编译选项

详细讲解在Visual Studio 2017中配置C++项目Release发布编译选项的具体步骤与关键参数,包括优化级别、运行库选择、调试信息生成及整程序优化。

如何修改Visual Studio2022默认浏览器调试Web项目
如何修改Visual Studio2022默认浏览器调试Web项目

详细介绍在Visual Studio 2022中修改Web项目调试默认浏览器的具体操作方法,包括工具栏即时切换、通过“浏览方式”管理与自定义调试实例,以及与launchSettings.json配置的分工逻辑与常见排错技巧。

VisualStudio2017离线安装包文件校验MD5方法
VisualStudio2017离线安装包文件校验MD5方法

针对Visual Studio 2017离线安装包体积大、散包多的特点,详细介绍使用Windows内置CertUtil与PowerShell批量校验文件MD5哈希值的方法、自动化脚本与损坏文件修复流程。

3dmax插件开发入门教程:工具 语言与基本流程
3dmax插件开发入门教程:工具 语言与基本流程

从零开始学习3ds Max插件开发。本教程详解开发工具链安装、MaxScript与C++的选择策略,并通过一个创建立方体的实例,演示完整的编码、加载与测试流程。

winforms教程自学入门与基础开发步骤详解
winforms教程自学入门与基础开发步骤详解

本教程详细讲解如何使用Visual Studio创建WinForms项目,通过添加按钮和标签控件并编写点击事件代码,实现一个基础的计数器功能,适合C#初学者快速上手Windows窗体应用开发。

揭开PHP集成开发工具的神秘面纱:详细介绍3种常见工具
揭开PHP集成开发工具的神秘面纱:详细介绍3种常见工具

PHP集成开发工具大揭秘:常见的3种工具一览,需要具体代码示例随着互联网的不断发展,PHP作为一种开发Web应用程序的脚本语言,被广泛应用于各个领域。为了提高开发效率和代码质量,许多程序员选择使用集成开发工具(IntegratedDevelopmentEnvironment,简称IDE)来进行PHP开发。本文将揭秘常见的3种PHP集成开发工具,并提供具体

查看更多
精品专题 更多
装机必备
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows
Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

PDF教程
PDF教程

正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

Mac软件 更多
Aperty macOS版
Aperty macOS版
macOS

Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

火山引擎 网页版
火山引擎 网页版
Windows/ macOS/ Linux

火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

立刻MV 网页版
立刻MV 网页版
Windows/ macOS/ Linux

立刻MV 面向音乐人、内容创作者和品牌团队,帮助用户低成本完成歌曲 MV、歌词视频、AI 分镜、图生视频与最终合成。

WINDOWS 更多
Aperty Windows版
Aperty Windows版
Windows

Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

火山引擎 网页版
火山引擎 网页版
Windows/ macOS/ Linux

火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

立刻MV 网页版
立刻MV 网页版
Windows/ macOS/ Linux

立刻MV 面向音乐人、内容创作者和品牌团队,帮助用户低成本完成歌曲 MV、歌词视频、AI 分镜、图生视频与最终合成。

即将离开本站
您即将前往第三方网站,请确认是否继续?