В настоящее время я занимаюсь разработкой простой надстройки для веб-проектов .NET Core 3.0 blazor. В этом случае я хочу включить надстройку, если блазорные проекты .net core 3.0 и если проект не является блазорным проектом .net core 3.0, моя пользовательская надстройка не будет отображаться.
Я гуглил насчет расширения надстройки vscode и нашел по умолчанию выражение «когда» для vscode, например «когда»: «explorerResourceIsFolder» и т. Д. Но я хочу, чтобы надстройка в заголовке рабочей области была с таким условием, как если бы проект был .net core 3.0 blazor,Я не знаю, как и где добавить логику для этого.
Мне нужно добавить собственное условие для предложения When, чтобы показать моедобавить в. Кроме того, если в проекте есть мои пользовательские сборки, мне нужно показать другую надстройку в контекстном меню заголовка проводника с моим собственным пользовательским предложением when.
Не могли бы вы подсказать, как мне этого добиться?
Ниже моя часть кодирования:
Package.Json
"commands": [
{
"command": "extension.openTemplatesFolder",
"title": "Open Templates Folder",
"category": "Project"
},
{
"command": "extension.saveProjectAsTemplate",
"title": "Save Project as Template",
"category": "Project"
},
{
"command": "extension.deleteTemplate",
"title": "Delete Existing Template",
"category": "Project"
},
{
"command": "extension.createProjectFromTemplate",
"title": "Create Project from Template",
"category": "Project"
}
],
"menus": {
"explorer/context": [
{
"command": "extension.saveProjectAsTemplate",
"when": "myContext == success && explorerResourceIsRoot",
"group": "projectTemplates@1"
}
]
}
extension.ts
const value = "success";
vscode.commands.executeCommand('setContext', 'myContext', `${value}`);
export function activate(context: vscode.ExtensionContext) {
// create manager and initialize template folder
let projectTemplatesPlugin = new ProjectTemplatesPlugin(context, vscode.workspace.getConfiguration('projectTemplates'));
projectTemplatesPlugin.createTemplatesDirIfNotExists();
// register commands
// open templates folder
let openTemplatesFolder = vscode.commands.registerCommand('extension.openTemplatesFolder',
OpenTemplatesFolderCommand.run.bind(undefined, projectTemplatesPlugin));
context.subscriptions.push(openTemplatesFolder);
// save as template
let saveProjectAsTemplate = vscode.commands.registerCommand('extension.saveProjectAsTemplate',
SaveProjectAsTemplateCommand.run.bind(undefined, projectTemplatesPlugin));
context.subscriptions.push(saveProjectAsTemplate);
}
Примечание: vscode.commands.executeCommand ('setContext', 'myContext', value
);не выполняется до показа надстройки. Был выполнен после нажатия надстройки