如何阻止 VS Code 在 WSL 中反复尝试更新 Server?
结论
从日志看,失败发生在下载 VS Code Server 安装包时。WSL 将 update.code.visualstudio.com 解析为 127.0.0.1,随后连接被拒绝。日志显示客户端正在安装与 commit 1e3c50d64110be466c0b4a45222e81d2c9352888 对应的 Server,但无法确认 VS Code 是否还向另一个独立地址查询了 Server 更新。
VS Code 官方文档说明,Remote - WSL 会自动安装和管理 VS Code Server。连接 WSL 需要访问 update.code.visualstudio.com 和 vscode.download.prss.microsoft.com。我没有在官方 WSL 文档中找到受支持的设置,可以永久禁止 Server 安装或更新。WSL 文档 Remote Development FAQ
根据日志以及 Server 由客户端管理的机制,可以推断:如果客户端提供的版本 commit 与 WSL 中可用的 Server 不匹配,连接时就会尝试安装对应版本。阻断下载域名会导致安装失败,但不会改变客户端要求的版本。单独屏蔽某个“更新检查 IP”也未必能解决问题。
已尝试设置分别控制什么
update.mode控制桌面版 VS Code 的更新行为。设为none可以关闭应用更新;官方将其定义为应用更新设置,并未说明它会停止 Remote - WSL 安装匹配版本的 Server。VS Code 更新管理extensions.autoUpdate和extensions.autoCheckUpdates控制扩展更新,不等同于 VS Code Server 更新设置。扩展更新说明- 当前官方 WSL 文档没有将
remote.WSL.downloadInBackground、remote.WSL.autoCheckUpdates和remote.WSL.serverUpdate列为禁用 Server 更新的设置。如果设置编辑器提示无法识别这些设置,应以当前安装版本的设置说明为准,不要依赖它们永久停更。
可行的处理方式
如果想避免客户端版本变化后再次触发下载,可以先固定 Windows 上的 VS Code 版本,并关闭桌面版和扩展的自动更新。例如,在 Windows 端的用户设置中配置:
{
"update.mode": "none",
"extensions.autoUpdate": false
}
这些设置可以减少客户端或扩展自动升级带来的版本变化,但无法保证 Server 永不更新。手动升级 VS Code、更新 Remote - WSL 扩展,或 WSL 中对应版本的 Server 文件缺失时,客户端仍可能再次尝试安装。企业环境也可以由管理员通过 UpdateMode 策略管理桌面版 VS Code 的应用更新;该策略不控制 WSL Server 更新。企业更新策略
如果必须使用较新的 Windows 端 VS Code,又无法让 WSL 访问官方更新服务,通常需要在可联网环境获取与客户端 commit 完全匹配的 Server 安装包,再按对应版本放入 WSL。安装路径和文件结构需要与当前版本的 Remote - WSL 实现匹配。手动部署维护成本较高,而且 Server 是由客户端管理的组件,官方不建议脱离客户端独立使用。Remote Development FAQ
关于 /etc/hosts 和域名
日志中的 127.0.0.1 解析结果与 /etc/hosts 中的映射一致,说明下载请求被重定向到本机,并在那里遭到拒绝。仅凭这一结果,无法判断是否还有其他更新检查请求。官方列出的 WSL Server 安装连接域名包括 update.code.visualstudio.com 和 vscode.download.prss.microsoft.com。现有材料无法确认某个独立的检查域名或 IP,因此不应据此指定需要屏蔽的地址。WSL 网络要求
备注:内容仅供参考。
