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

问题描述 投票:0回答:7

我正在尝试在 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);

});
}
javascript visual-studio-code vscode-extensions
7个回答
10
投票

我想更新 Pushprajsinh Chudasama 的答案,因为

vscode.workspace.rootPath
现在已已弃用。它被
vscode.workspace.workspaceFolders
取代,它返回
WorkspaceFolders | undefined
数组。要检索所有工作区文件夹的路径,您现在可以使用:

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

7
投票

如果打开文件夹,则可以获得

workspace
变量。

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

3
投票

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

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

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


1
投票

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

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];
}

1
投票

事实证明

vscode.workspace.rootPath
已被弃用,到目前为止我找到的唯一解决方案在这个答案中描述了

VS Code 扩展 - 获取完整路径


0
投票

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

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

   // p is an object whose path is fsPath.

   console.log(p.fsPath);

});

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


0
投票
            const folderPath = vscode.workspace.workspaceFolders[0].uri
            .toString()
            .split(':///')[1].replace('%3A', ':');

我就是这样做的,而且效果很好。 请注意,单元 (C) 未被替换。只是“%3A”对应的字符“:”。

© www.soinside.com 2019 - 2024. All rights reserved.