VSCode离线下载地址非静态,需动态构造API链接:https://marketplace.visualstudio.com/_apis/public/gallery/publishers/{publisher}/vsextensions/{extension-name}/{version}/vspackage,其中publisher和extension-name取自itemName参数首尾段,version须严格匹配Version History中最新版(如2024.10.1),填错或过期均导致404。

VSCode 离线下载地址不是公开静态链接,必须动态构造
VSCode Marketplace 不提供固定、长期有效的 .vsix 下载地址。所有“Download Extension”按钮背后都是带时效的重定向链接,通常 24 小时内失效;一旦插件更新,旧链接直接返回 404。你不能收藏一个 URL 并长期复用,每次下载前都得重新生成。
最可靠的方式是手动拼出官方 API 地址,它结构稳定、不依赖页面渲染,且和浏览器下载行为完全一致:
https://marketplace.visualstudio.com/_apis/public/gallery/publishers/{publisher}/vsextensions/{extension-name}/{version}/vspackage- 其中
{publisher}是插件 ID 中点号(.)前的部分,比如ms-python.python的发布者是ms-python -
{extension-name}是点号后的部分,如python -
{version}必须精确匹配——去插件页点开 “Version History”,取顶部最新版(或你需要的历史版),不能省略补零(2024.10.1≠2024.10.01)
如何快速定位 publisher 和 extension-name
别靠肉眼猜,也别信第三方聚合页的 ID。唯一可信来源是插件详情页 URL 中的 itemName 参数:
- 打开
https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode - 复制
itemName值:esbenp.prettier-vscode - 用
.切分:左边是publisher(esbenp),右边是extension-name(prettier-vscode) - 注意:有些 ID 含多个点(如
ms-dotnettools.csharp),只切第一个点,publisher是ms-dotnettools,extension-name是csharp
版本号填错会导致 404,但错误提示不明确
访问拼好的 URL 时如果返回 404 Not Found,90% 是版本号不匹配。Marketplace 不会告诉你“版本不存在”,只会静默失败。排查步骤如下:
- 确认插件页 “Version History” 标签里显示的版本号是否带空格或括号(例如
v10.4.0或(10.4.0)—— 全部去掉,只留10.4.0) - 检查大小写:部分扩展名含大写字母(如
Git-Graph),但extension-name字段一律小写(git-graph),否则 404 - 若需历史版本,不要依赖搜索引擎缓存页,必须进官方 Version History 手动翻页找真实发布记录
不要依赖浏览器“Download Extension”按钮的跳转地址
点击该按钮后,浏览器实际跳转的是一个中间页,再重定向到真正的 vspackage 地址。这个重定向 URL 里含临时 token,无法复用。抓包看 Location 响应头虽可行,但容易被反爬或限流;而手动拼 API 地址无此风险,且可脚本化批量处理。
真正容易被忽略的一点是:某些插件(如 Pylance)在离线安装时必须同时下载其依赖项(如 Python 扩展本身),否则启用时报 Extension 'ms-python.pylance' is not compatible with the current version of VS Code —— 这类兼容性报错和网络无关,纯属依赖缺失。


















