有没有办法检测调试器是否创建了VSC窗口



创建扩展时,调试和运行侧边栏用于启动 vsc 实例并将您正在创建的扩展安装到其中。是否有一些属性可以指示扩展是否在这样的 vsc 实例中运行?就像调试器启动的用于测试扩展而不是 VSC 的普通实例一样?

听起来您想检测该窗口是否是"扩展开发主机"。这里有一个功能请求:

  • 允许检测我的扩展何时在开发主机中运行 (#10272(

虽然似乎还没有官方的方法来实现这一点,但PowerShell扩展的维护者已经找到了解决方法:

// When in development mode, VS Code's session ID is a fake
// value of "someValue.machineId".  Use that to detect dev
// mode for now until Microsoft/vscode#10272 gets implemented.
private readonly inDevelopmentMode =
vscode.env.sessionId === "someValue.sessionId";

我做了一个快速测试,看起来这仍然有效,但它似乎相当脆弱/就像那种随时可能破裂的东西。

问题 10272 已与问题 95926 合并,应通过 VSCode v1.46(2020 年 5 月(和 PR 97081 解决

ExtensionContext上提供了ExtensionMode,指示特定扩展的运行模式。
这是特定于当前扩展的。

  • 一个扩展可能处于ExtensionMode.Development状态(扩展从--extensionDevelopmentPath运行,扩展主机正在运行单元测试(,而
  • 主机中的其他扩展在ExtensionMode.Release中运行(扩展正常安装,例如,从 VSCode 中的市场或 VSIX 安装(。

最新更新