← 返回笔记
Developer Tools整理中

VS Code 扩展从被发现到运行:manifest、激活与 Extension Host

梳理 VS Code 为什么能发现一个本地扩展、命令如何注册,以及 TreeView、Webview 和 SecretStorage 分别处于什么边界。

VS CodeTypeScriptExtension APIVSIX

VS Code 扩展从被发现到运行

发现

VS Code 不会扫描任意源码目录。扩展需要出现在已安装扩展目录中,或者由调试配置启动一个 Extension Development Host。名称、入口和能力声明来自扩展的 package.json

激活

activationEvents 决定何时启动扩展进程;activate(context) 是运行时入口。声明一个命令只会让 VS Code 知道它存在,仍需在激活函数中注册真正的处理逻辑。

export function activate(context: vscode.ExtensionContext) {
  const disposable = vscode.commands.registerCommand(
    "cppLearning.analyze",
    analyzeCurrentFile,
  );
  context.subscriptions.push(disposable);
}

三种常用能力

  • TreeView:适合稳定、可导航的层级数据。
  • Webview:适合自定义报告和复杂交互,但需要处理消息协议和内容安全策略。
  • SecretStorage:保存 API Key 等密钥,不应把它们写入 settings.json 或仓库。