【问题标题】:How does an extension for VS Code get the install path of VS Code?VS Code 的扩展如何获取 VS Code 的安装路径?
【发布时间】:2023-03-05 12:33:01
【问题描述】:

我正在开发 VS 代码的扩展(使用 javascript)。现在我需要安装 VS Code 的路径。 windows有办法:

var child = require('child_process');
child.exec('reg query HKEY_CLASSES_ROOT\\*\\shell\\VSCode /v Icon', function (error, strOut, strError) { 
//some code...
})

但它仅在用户正确安装 VS Code 时才有效。如果这个文件夹是从其他机器上复制过来的(这意味着注册表中没有 VS Code),这个函数会失败。

另一方面,它根本无法在 Linux 或 OS X 上运行。

我想知道是否有可以提供帮助的 API(我什么也没找到),或者其他方法可以获取该路径。

【问题讨论】:

    标签: visual-studio-code vscode-extensions


    【解决方案1】:

    我不知道你为什么需要 VSCODE 的目录,但我需要我的扩展所在的目录。 并且可以通过如下方式访问:

    var myExtDir = vscode.extensions.getExtension ("publisher.name").extensionPath;
    

    发布者和名称在 package.json 中的位置

    【讨论】:

    • 好吧,我需要 vscode 的目录,因为我想修改其中的 HTML 文件。而且我在github上发现了一个项目(shalldie/vscode-background),刚才提供了一个方法。否则,我放弃了在 vscode 上的开发,因为我发现开发 Atom 的扩展更容易。
    【解决方案2】:

    VSCode 是使用 node.js 编写的,因此您可以访问计算机、用户和节点环境变量。

    要获取 VSCode 使用的安装路径,您可以使用以下命令;

    process.env.VSCODE_CWD

    例如,如果我的扩展程序做的第一件事是; console.log(process.env.VSCODE_CWD) 它将在调试控制台C:\Program Files\Microsoft VS Code 中打印出以下内容(这是我安装 VSCode 的位置)。

    【讨论】:

      【解决方案3】:

      您现在可以使用

      const vscodeInstallPath = vscode.env.appRoot;
      

      【讨论】:

        【解决方案4】:

        我想我会添加你自己找到的答案,以防其他人来寻找同样的东西。

        path.dirname(require.main.filename);
        

        在 Ubuntu 中返回(对我而言)

        /usr/share/code/resources/app/out
        

        在 Windows 中,返回

        c:\Program Files\Microsoft VS Code\resources\app\out
        

        它也应该返回适​​合 OSX 的东西。

        这是包含 bootstrap.js 的文件夹,足以确定应用程序的安装位置(本例中的默认位置)。

        在我的例子中,我想要一个节点模块 (vscode-ripgrep) 的路径,它是作为 vscode 的一部分构建的,所以我必须对路径进行更多处理,但它可以完成工作。

        【讨论】:

          猜你喜欢
          • 2017-01-26
          • 1970-01-01
          • 2017-07-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-10-04
          • 1970-01-01
          相关资源
          最近更新 更多