vs code marketplace 上传失败主因是 publisher 字段大小写不一致、extension name 含非法字符或超长、engines.vscode 版本范围过严、vsce login 使用错误 token 类型;须严格匹配注册 publisher(全小写)、name 仅含小写字母数字和短横线、engines 范围合理、pat 勾选 marketplace 权限,并重新 vsce package 验证。

package.json 中 publisher 字段大小写不一致导致上传失败
VS Code Marketplace 对 publisher 字段严格区分大小写,哪怕只差一个字母,vsce publish 就会报 Publisher not found 或 Unauthorized。这不是网络问题,而是身份校验直接被拒绝。
- 登录 marketplace.visualstudio.com/manage,确认你创建的发布者 ID(如
myname),注意全部小写、无空格、无特殊字符 - 打开本地
package.json,检查"publisher": "MyName"是否与后台注册名完全一致(比如MyName≠myname) - 修改后务必重新运行
vsce package再试,旧缓存的 .vsix 不会自动更新该字段
extension name 包含非法字符或长度超限
Marketplace 不允许 name 字段含空格、下划线、中文或超过 64 个字符,否则 vsce publish 会在预检阶段直接退出,错误信息常为 Invalid extension name。
- 合法示例:
"name": "word-counter"(仅允许小写字母、数字、短横线) - 非法示例:
"name": "Word Counter"、"name": "my_plugin"、"name": "这是一个插件" - 如果已有用户安装过旧版,改名会导致新版本无法覆盖——此时应保持
name不变,仅更新version和功能
engines.vscode 版本范围写死引发校验失败
某些 CI 环境或新版 vsce 会对 engines.vscode 做更严格解析,若写成 "^1.85.0" 却未安装对应 VS Code 运行时,vsce publish 可能提前中止并提示包不合规。
- 推荐写法:
"engines": {"vscode": "^1.78.0"}(覆盖近一年主流版本) - 避免写法:
"engines": {"vscode": "1.85.0"}(精确匹配,极难通过校验) - 本地测试可用
code --version查当前 VS Code 版本,确保它落在engines.vscode范围内
vsce login 使用了错误 token 类型
vsce login 必须用 Azure DevOps 的 PAT(Personal Access Token),不是 GitHub Token、微软账号密码,也不是 Marketplace 页面上的“复制令牌”按钮生成的短期链接。
- 生成地址:dev.azure.com/your-org/_usersSettings/tokens
- Scopes 至少勾选:
Marketplace (Manage);若插件依赖私有 Git 仓库,还需Code (Read) - 首次
vsce login后,token 会存到~/.vscode/extensions/下某配置文件,但不会自动刷新——换 token 后必须再执行一次vsce login
vsce package 看能否成功生成 .vsix——能打包,才说明元数据基本过关。











