繁体   English   中英

如何在 Visual Studio 代码扩展中获取项目文件夹路径

[英]How to get project folder path in visual studio code extension

我试图在 visual studio 代码扩展中获取项目文件夹路径,但很难找到答案。 我的代码不工作。 我不知道这可能与否。 我已经在谷歌上查过这个问题没有人回答。 任何人都知道这个请帮我找到答案。

在此处输入图像描述

扩展.js:

var vscode = require("vscode");
var path = require("path");

exports.activate = context => {
const findPath = 
vscode.commands.registerCommand('extension.search', () => {

   let findprojectfolderPath = vscode.workspace.uri.fsPath; // Not working

   console.log(findprojectfolderPath);

});
}

如果打开文件夹,则可以获得workspace变量。

let folderName = vscode.workspace.name; // get the open folder name
let folderPath = vscode.workspace.rootPath; // get the open folder path

我想更新 Pushprajsinh Chudasama 的答案,因为vscode.workspace.rootPath现在已弃用 它被vscode.workspace.workspaceFolders取代,它返回一个WorkspaceFolders | undefined数组WorkspaceFolders | undefined WorkspaceFolders | undefined 要检索所有工作区文件夹的路径,您现在可以使用:

vscode.workspace.workspaceFolders?.map(folder => folder.uri.path)

如果你想找到当前用户打开的文件的路径,那么你需要这个

console.log(vscode.window.activeTextEditor.document.uri.fsPath);

阅读此文档以获取更多信息: https : //code.visualstudio.com/api/references/vscode-api#TextDocument

事实证明,不推荐使用vscode.workspace.rootPath并且我在此答案中描述了迄今为止我找到的唯一解决方案

VS Code 扩展 - 获取完整路径

此函数获取当前打开的文件的工作区目录。 如果没有活动编辑器或文件不属于工作区,则返回undefined

import * as vscode from "vscode";

function getDocumentWorkspaceFolder(): string | undefined {
  const fileName = vscode.window.activeTextEditor?.document.fileName;
  return vscode.workspace.workspaceFolders
    ?.map((folder) => folder.uri.fsPath)
    .filter((fsPath) => fileName?.startsWith(fsPath))[0];
}

您必须更改代码。 就像下面的例子。

vscode.commands.registerCommand('extension.search', (p: { fsPath: string }) => {

   // p is an object whose path is fsPath.

   console.log(p.fsPath);

});

也许这个链接可以帮助你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM