VS Code 内置更新常卡在“正在下载”因直连微软CDN失败且无重试机制;Mac用Homebrew可能装错架构;Linux Snap版因沙箱限制无法读取.gitconfig;Windows更新后旧进程残留致新版本打不开。

VS Code 内置更新为什么经常卡在“正在下载”
内置更新走的是微软官方 CDN,国内直连常因网络波动或 DNS 解析失败卡住,表现为界面停在 正在下载 VS Code... 超过 2 分钟,且无错误提示。
这不是你网络差,而是 VS Code 更新逻辑不重试、不 fallback——它不会自动切源,也不会显示真实失败原因(比如 net::ERR_CONNECTION_TIMED_OUT)。
- 临时解决:关掉 VS Code,手动删掉
~/.vscode/updates/(macOS/Linux)或%USERPROFILE%\AppData\Roaming\Code\Updates\(Windows),再重启触发重试 - 长期规避:禁用内置更新,在设置里关掉
update.mode,改用其他方式 - 注意:
update.mode设为manual后,通知栏不再弹更新提醒,得自己查版本
Mac 上用 Homebrew 更新 VS Code 为什么有时装错架构
Apple Silicon(M1/M2/M3)机器如果装了 Intel 版本的 VS Code,Homebrew 可能误判为需要 vscode(Intel)而非 vscode-arm64(原生),导致运行卡顿或插件兼容问题。
根本原因是 brew install --cask visualstudiocode 默认指向通用版(Universal),但部分旧镜像或缓存会回落到 x86_64。
- 确认当前安装架构:终端运行
file /Applications/Visual\ Studio\ Code.app/Contents/MacOS/Electron,输出含arm64才对 - 强制重装原生版:先
brew uninstall --cask visualstudiocode,再brew install --cask visualstudiocode-arm64 - 别用
brew update && brew upgrade批量升级——它可能跳过 cask,或把visualstudiocode和visualstudiocode-arm64混在一起处理
Linux 下 Snap 安装的 VS Code 为什么无法读取 $HOME/.gitconfig
Snap 包默认启用严格沙箱,home 接口只挂载主目录顶层,但不递归授权子目录权限。而 Git 配置路径 $HOME/.gitconfig 在某些发行版(如 Ubuntu 22.04+)被 snapd 默认屏蔽,导致 Git 扩展报 fatal: unable to read config file '/home/xxx/.gitconfig': Permission denied。
- 验证是否受限:运行
snap connections code,看home行是否为:home(已连接)还是-(未连接) - 手动授权:执行
sudo snap connect code:home :home - 替代方案:直接卸载 snap 版(
sudo snap remove code),改用.deb或.rpm官方包,避免沙箱干扰开发流程
Windows 上手动下载更新后,旧进程残留导致新版本打不开
VS Code 更新器解压新版本时,并不强制杀掉所有 Code.exe 进程。如果后台有隐藏的窗口(比如托盘里的 Git 同步进程、终端子进程),新版本启动会因端口/锁文件冲突直接退出,且无明确报错。
- 检查残留:任务管理器里搜
Code.exe,结束所有相关进程(包括“后台进程”标签页里的) - 更彻底:进
%APPDATA%\Code\logs\,删掉最近的日期文件夹,再启动新版本,看日志里是否有Failed to create window或EACCES - 预防:更新前关闭所有 VS Code 窗口,右键托盘图标选“退出”,别只点叉
真正麻烦的不是更新动作本身,而是三种方式背后权限模型、路径隔离和进程生命周期的差异——它们不会报错,但会让你花半小时怀疑是不是自己配错了什么。










