Я хочу встроить файл DLL в расширение VS Code и открыть его во время выполнения, когда расширение активировано.
Я могу легко включить DLL-файл в расширение vsix, но хочу знать, как получить к нему доступ во время выполнения.
При отладке расширения текущий каталог — C: \ Program Files \ Microsoft VS Code.
Думаю, я могу открыть доступ к файлу, если смогу получить текущую директорию выполнения, а затем добавить путь, например
var cwd = GetCurrentWorkingDirectory(); //to be found out
var dllPath = vscode.Uri.file(cwd+'\resources\app\extensions\myextension\dist');
Есть ли API расширения VS Code, который предоставит мне текущий корневой каталог расширения или каталог установки VS Code?
GL запускает DLL-код из расширения. VSC запускает только JavaScript. — person Morse schedule 13.08.2020
Спасибо. VSC построен на электроне, который поддерживает это. Я получил его работающим. — person Morse schedule 13.08.2020
Путь расширения может быть получен с помощью объекта контекста, который передается для активации функции;
context.extensionPath
, который является строкой илиcontext.extensionUri
В качестве альтернативы,
env.appRoot
Доступ к нему можно получить как
var cwd = vscode.env.appRoot;
соответствует
VS Code\resources\app
Если установка системы
C:\Program Files\Microsoft VS Code\resources\app
если установка пользователем
C:\Users\Prateek\AppData\Local\Programs\Microsoft VS Code\resources\app
В качестве альтернативы запись
activate(context: vscode.ExtensionContext)
дает вам объектcontext
. С его помощью вы всегда можете вызватьasAbsolutePath()
для преобразования относительных путей (к папке установки расширения) в полные пути, которые вы хотите. — person Morse; 13.08.2020Вы имеете в виду
context.extensionPath
илиcontext.extensionUri
? asAbsolutePath показывает путь отладки, который меня не интересует — person Morse; 13.08.2020