簡體   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