【问题标题】:VSCode extensions location variableVSCode 扩展位置变量
【发布时间】:2019-01-11 05:19:43
【问题描述】:

在我正在编写的扩展程序中,我想重新定义工作区中的现有设置以指向我与扩展程序一起打包的脚本。例如,在 Mac 上,此脚本位于 ~/.vscode/extensions/publisher.name.version/script 中。

如果我假设这是扩展程序所在的位置,那么在我的激活函数中,我可以使用

更新此值
export async function activate(context: vscode.ExtensionContext) {
  const home = process.env.HOME;
  const execLocation = home + "/.vscode/extensions/publisher.name.version/script";
  ...

然后更新工作区设置。

但是 - 我想访问本地安装的扩展程序位置,以及我的扩展程序的 id 和版本 - 我在 VSCode 中找不到正确的设置来执行此操作。如果有人知道正确的环境变量以便我可以访问它们,我将不胜感激。

我知道可以使用选项--extensionHomePath 从命令行调用代码 - 我不确定如何以编程方式访问此变量。

我也不确定如何从 context 参数中找到版本、发布者和名称 - 显然我从 package.json 文件中知道这些,但如果可能的话,能够以编程方式访问它们会很好。

【问题讨论】:

    标签: visual-studio-code vscode-extensions


    【解决方案1】:

    您可以通过ExtensionContextasAbsolutePath() 方法获取该信息。
    此方法为您获取给定相对路径的资源的绝对路径(关于您的项目根目录)。

    因此我建议您将代码更改为以下内容:

    export async function activate(context: vscode.ExtensionContext) {
        const execLocation = context.asAbsolutePath("script");
        console.log("Absolute exec location: " + execLocation);
    

    【讨论】:

    • 非常感谢您的回复。我注意到调试它不起作用(asAbsolutePath 是本地开发目录),但是在创建 vsix 并从 vsix 安装时,asAbsolutePath 确实给出了正确的位置。再次感谢。
    猜你喜欢
    • 2021-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 2019-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多