有没有一种方法可以检测调试器是否创建了VSC窗口

时间:2020-01-18 20:03:53

标签: visual-studio-code vscode-extensions

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

2 个答案:

答案 0 :(得分:1)

听起来您想检测窗口是否为“扩展开发主机”。这里有一个功能要求:

虽然似乎还没有官方的方法可以实现,但是PowerShell扩展has found a workaround的维护者:

// 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";

我做了一个快速测试,看起来它仍然可以工作,但是它似乎很脆弱,就像随时可能破裂的东西。

答案 1 :(得分:0)

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

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

  • 一个扩展名可能位于ExtensionMode.Development中(该扩展名正在--extensionDevelopmentPath上运行,而扩展主机正在运行单元测试),而
  • 主机中的其他扩展在ExtensionMode.Release中运行(例如,通常从市场或VSIX中以VSCode安装扩展)。
相关问题