最稳方式是用--cache-dir启动参数迁移缓存:仅需在快捷方式目标末尾添加--cache-dir "D:\VSCode\Cache",即可将CachedData、工作区索引等缓存定向至非系统盘,无需管理员权限或修改注册表,且不影响插件与用户配置。

直接改启动参数最稳,--cache-dir 一行就能生效,不用动注册表、不依赖管理员权限、所有快捷方式可单独配置。
用 --cache-dir 启动参数迁移缓存目录
VS Code 的缓存(如 CachedData、工作区索引、临时日志)默认写入 %APPDATA%\Code\Cache 和 %APPDATA%\Code\CachedData,但这些路径无法通过设置界面修改——只有启动参数能覆盖它。
- 彻底关闭 VS Code,包括后台的
Code.exe和Code Helper.exe(任务管理器里确认) - 右键桌面或开始菜单的 VS Code 快捷方式 →「属性」→「快捷方式」选项卡
- 在「目标」栏末尾添加空格 +
--cache-dir "D:\VSCode\Cache"(路径必须用英文双引号包裹) - 示例完整目标值:
"C:\Program Files\Microsoft VS Code\Code.exe" --cache-dir "D:\VSCode\Cache" - 点「确定」保存,双击启动,新缓存会立刻写入 D 盘,原 C 盘对应目录不再增长
这个方法只影响缓存,插件(.vscode\extensions)和用户配置(%APPDATA%\Code)仍保留在原位置,适合只想快速释放几 GB 空间的场景。
迁移到 D 盘后,CachedData 目录还会长大吗
会,但可控。VS Code 会持续生成 CachedData(内核与插件编译产物),但它不会无限膨胀——只要没手动清空,旧缓存会在版本升级时被自动轮换淘汰。不过如果你频繁切换 VS Code 版本或大量安装/卸载插件,这个目录可能突破 3–5 GB。
-
--cache-dir指定的路径下,CachedData子目录仍会出现,体积取决于你装的插件数量和语言服务器复杂度 - 若想进一步限制,可配合定期清理脚本,例如用 PowerShell 删除 30 天前的
CachedData子目录:Get-ChildItem "$env:USERPROFILE\AppData\Roaming\Code\Cache\CachedData" -Directory | Where-Object {$_.LastWriteTime -lt (Get-Date).AddDays(-30)} | Remove-Item -Recurse -Force - 注意:
CachedData删除后首次启动会稍慢,因为要重新编译,但不会丢设置或破坏插件功能
为什么不用 mklink /J 迁移缓存目录
符号链接看似一劳永逸,但对缓存目录实际是高风险操作:
-
mklink /J需管理员权限,且一旦链接损坏(比如目标盘意外断开),VS Code 可能无法启动或反复报错EPERM: operation not permitted - VS Code 有些缓存文件是进程独占打开的,符号链接在多实例或热更新时容易触发文件锁冲突
-
--cache-dir是官方支持的启动参数,优先级高于任何系统级链接,行为可预测;而mklink是 Windows 底层机制,VS Code 并未对其做兼容性兜底 - 如果你已用
mklink迁移过%APPDATA%\Code整个目录,那--cache-dir依然有效——它会覆盖子路径,无需回退符号链接
真正容易被忽略的是:VS Code 启动后,哪怕你只改了 --cache-dir,它也会在新路径下重建完整缓存结构,包括 Cache、CachedData、logs 等子目录。别指望它“增量迁移”,第一次启动就是一次干净重置。所以迁移前不用手动清理原缓存,关掉再启动就行。


















