Change:
Running the command is activating various unnecessary extensions
This is by design - we have to activate any extensions which contribute tasks to fetch the build tasks, if any, that they contribute.
is that the case even if there's a default task configured? I have a suspicion something has changed because building, for example, vscode repo or just a new extension repo with didn't use to activate, e.g., ocaml extension (and there weren't any changes on the ocaml ext side). I would imagine we in general don't need to activate many extensions if there's a default build task?
Note to self - this was happening before the change where we resolve workspace tasks
This is happening because we check for glob tasks as the default - since we aren't sure which it might be, we have to call with no args and that activates all task providers
this originated here seems like not worth it in most cases. this should probably behind a setting

Discussion:
title: strings.fetching }; const promise = (async () => { <del> let taskGroupTasks: (Task | ConfiguringTask)[] = []; </del> <ins> let groupTasks: (Task | ConfiguringTask)[] = []; </ins> async function runSingleTask(task: Task | undefined, problemMatcherOptions: IProblemMatcherRunOptions | undefined, that: AbstractTaskService) { that.run(task, problemMatcherOptions, TaskRunSource.User).then(undefined, reason => {

}); }); }; <ins> let globTasksDetected = false; </ins> // First check for globs before checking for the default tasks of the task group const absoluteURI = EditorResourceAccessor.getOriginalUri(this._editorService.activeEditor); if (absoluteURI) { const workspaceFolder = this._contextService.getWorkspaceFolder(absoluteURI); <del> // fallback to absolute path of the file if it is not in a workspace or relative path cannot be found const relativePath = workspaceFolder?.uri ? (resources.relativePath(workspaceFolder.uri, absoluteURI) ?? absoluteURI.path) : absoluteURI.path; </del> <ins> if (workspaceFolder) { const configuredTasks = this._getConfiguration(workspaceFolder)?.config?.tasks; if (configuredTasks) { globTasksDetected = configuredTasks.filter(task => task.group && typeof task.group !== 'string' && typeof task.group.isDefault === 'string').length > 0; // This will activate extensions, so only do so if necessary #185960 if (globTasksDetected) { // Fallback to absolute path of the file if it is not in a workspace or relative path cannot be found const relativePath = workspaceFolder?.uri ? (resources.relativePath(workspaceFolder.uri, absoluteURI) ?? absoluteURI.path) : absoluteURI.path; groupTasks = await this._findWorkspaceTasks((task) => { const currentTaskGroup = task.configurationProperties.group; if (currentTaskGroup && typeof currentTaskGroup !== 'string' && typeof currentTaskGroup.isDefault === 'string') { return (currentTaskGroup._id === taskGroup._id && glob.match(currentTaskGroup.isDefault, relativePath)); } </ins> <del> taskGroupTasks = await this._findWorkspaceTasks((task) => { const currentTaskGroup = task.configurationProperties.group; if (currentTaskGroup && typeof currentTaskGroup !== 'string' && typeof currentTaskGroup.isDefault === 'string') { return (currentTaskGroup._id === taskGroup._id && glob.match(currentTaskGroup.isDefault, relativePath)); </del> <ins> return false; }); } </ins> } <ins> } } </ins> <del> return false; }); </del> <ins> if (!globTasksDetected && groupTasks.length === 0) { groupTasks = await this._findWorkspaceTasksInGroup(TaskGroup.Build, true); </ins> } const handleMultipleTasks = (areGlobTasks: boolean) => {

}; // A single default glob task was returned, just run it directly <del> if (taskGroupTasks.length === 1) { return resolveTaskAndRun(taskGroupTasks[0]); </del> <ins> if (groupTasks.length === 1) { return resolveTaskAndRun(groupTasks[0]); </ins> } // If there's multiple globs that match we want to show the quick picker for those tasks // We will need to call splitPerGroupType putting globs in defaults and the remaining tasks in none. // We don't need to carry on after here <del> if (taskGroupTasks.length > 1) { </del> <ins> if (globTasksDetected && groupTasks.length > 1) { </ins> return handleMultipleTasks(true); } // If no globs are found or matched fallback to checking for default tasks of the task group <del> if (!taskGroupTasks.length) { taskGroupTasks = await this._findWorkspaceTasksInGroup(taskGroup, false); </del> <ins> if (!groupTasks.length) { groupTasks = await this._findWorkspaceTasksInGroup(taskGroup, false); </ins> } // A single default task was returned, just run it directly <del> if (taskGroupTasks.length === 1) { return resolveTaskAndRun(taskGroupTasks[0]); </del> <ins> if (groupTasks.length === 1) { return resolveTaskAndRun(groupTasks[0]); </ins> } // Multiple default tasks returned, show the quickPicker