必须完成注册发布者、打包.vsix、vsce publish三步才能发布;需用Microsoft账户注册不可修改的publisher名,vsce login后执行vsce publish上传,首次发布自动生成Marketplace条目。

能发,但必须走完三步:注册发布者身份、打包成 .vsix、用 vsce publish 推送。漏掉任何一步,市场都收不到你的插件。
注册发布者身份前先确认 Microsoft 账户可用
VS Code Marketplace 强制绑定 Microsoft 账户(不是 GitHub 或 Google 账号)。如果你用的是 Outlook、Hotmail、OneDrive 邮箱,那已经具备资格;如果是公司邮箱或自建邮箱,需先去 account.microsoft.com 注册一个个人 Microsoft 账户。
关键点:
- 发布者名称(
publisher)一旦注册,无法修改,建议用真实姓名缩写或长期使用的 ID,比如zhangsan-dev,别用test123这类临时名 - 注册时会要求验证邮箱,注意查收并点击链接,否则后续
vsce create-publisher会报Unauthorized - 不要跳过“组织类型”选“Individual”,这是个人开发者唯一合法选项
vsce 工具安装与首次登录
vsce 是官方 CLI 工具,负责打包和发布。它不依赖项目结构,但必须全局安装:
npm install -g vsce
安装后执行:
vsce login <your-publisher-name>
这时会弹出浏览器窗口,用刚注册的 Microsoft 账户登录。成功后终端显示 Successfully logged in,且本地生成 ~/.vscode/extensions/.vsix/publishers.json(Windows 在 %USERPROFILE%\.vscode\extensions\.vsix\publishers.json)。
常见卡点:
- 如果提示
Command 'vsce' not found,检查npm bin -g是否在系统PATH中 - Mac/Linux 用户遇到权限错误,不要加
sudo,改用npm config set prefix ~/.local后重装 - 国内网络偶尔会卡在登录页,可手动复制 URL 到代理浏览器打开
打包前必须校验的三个文件字段
运行 vsce package 前,package.json 必须包含且格式正确的三项,缺一不可:
-
"publisher":必须与vsce login时用的发布者名称完全一致(大小写敏感) -
"name":全小写、无空格、无下划线,只允许字母、数字、短横线,例如my-code-helper,不能是MyCodeHelper -
"version":语义化版本(MAJOR.MINOR.PATCH),首次发布建议从0.0.1开始,别写1.0或v1.0.0
另外两个容易被忽略但会直接导致 vsce package 失败的项:
- 根目录必须存在
README.md,哪怕只写一行# My Extension - 必须有
license字段或LICENSE文件(推荐 MIT,新建LICENSE文件内容为MIT即可)
执行打包命令:
vsce package
成功后生成 your-extension-0.0.1.vsix,这个文件可双击在 VS Code 中手动安装测试。
第一次发布必须用 vsce publish,不能只打包
vsce package 只生成本地安装包,vsce publish 才真正上传到 Marketplace。首次发布要多一步:
vsce publish
它会自动完成:vsce package → 上传 → 创建新条目 → 设置可见性为 public。
注意事项:
- 发布过程不校验代码质量,但 Marketplace 后台会扫描恶意行为(如远程代码执行、未声明的网络请求),一旦触发自动下架
- 发布后约 5–15 分钟才能在 Marketplace 搜索到,URL 格式固定为
https://marketplace.visualstudio.com/items?itemName=<publisher>.<name> - 更新版本时,只需改
package.json的version,再跑一次vsce publish,无需重新login或create-publisher
真正麻烦的不是步骤本身,而是 Marketplace 对 activationEvents 和 contributes 的隐式约束——比如你声明了 "onCommand:my-ext.doSomething" 却没在代码里注册该命令,插件会被静默禁用,但发布流程不会报错。这种问题只能靠本地调试 + 发布后手动验证来捕获。


















