ist jetzt verfügbar! Lesen Sie über die neuen Funktionen und Fehlerbehebungen vom November.

Erweiterungshost

Der Extension Host ist verantwortlich für die Ausführung von Erweiterungen.

Extension Host-Konfigurationen

Abhängig von der Konfiguration von VS Code laufen mehrere Extension Hosts mit unterschiedlichen Laufzeiten an verschiedenen Orten.

  • local – Ein Node.js Extension Host, der lokal auf demselben Computer wie die Benutzeroberfläche läuft.
  • web – Ein Web-Extension Host, der im Browser oder lokal auf demselben Computer wie die Benutzeroberfläche läuft.
  • remote – Ein Node.js Extension Host, der remote in einem Container oder an einem entfernten Standort läuft.

Die folgende Tabelle zeigt, welche Extension Hosts in den verschiedenen Konfigurationen von VS Code verfügbar sind

Konfiguration lokaler Extension Host Web-Extension Host Remote-Extension Host
VS Code auf dem Desktop ✔️ ✔️
VS Code mit Remote (Container, SSH, WSL, GitHub Codespace, Tunnel) ✔️ ✔️ ✔️
VS Code für das Web (vscode.dev, github.dev) ✔️
VS Code für das Web mit Codespaces ✔️ ✔️

Extension Host-Laufzeiten

  • Node.js - Erweiterungen laufen in einer Node.js-Laufzeit. Wird von den lokalen und Remote-Extension Hosts verwendet. Erweiterungen benötigen eine main-Einstiegsdatei, um darin ausgeführt zu werden.
  • Browser - Erweiterungen laufen in einer Browser WebWorker-Laufzeit. Wird vom Web-Extension Host verwendet. Erweiterungen benötigen eine browser-Einstiegsdatei, um darin ausgeführt zu werden. Weitere Details finden Sie im Leitfaden für Web-Erweiterungen.

Bevorzugter Erweiterungsstandort

Der Extension Host, auf dem eine Erweiterung geladen wird, hängt ab von

  • Den verfügbaren Extension Hosts, die durch die Konfiguration von VS Code gegeben sind.
  • Den Fähigkeiten der Erweiterung: Kann sie unter Node.js und/oder im Web laufen oder, falls nicht angegeben, welche Beiträge liefert sie?
  • Wo die Erweiterung installiert ist: Auf dem lokalen Computer, auf dem Remote-Computer oder auf beiden.
  • Dem Standort, den die Erweiterung bevorzugt: Die Eigenschaft extensionKind.

extensionKind ist eine Eigenschaft im Erweiterungsmanifest. Sie ermöglicht es Erweiterungen, einen bevorzugten Ausführungsort anzugeben. Das kann der Computer sein, auf dem sich der Arbeitsbereich befindet (workspace), oder die Benutzeroberfläche (ui). Wenn eine Erweiterung auf beiden laufen kann, kann sie eine Präferenzreihenfolge angeben.

  • "extensionKind": ["workspace"] – Gibt an, dass die Erweiterung Zugriff auf Arbeitsbereichsinhalte benötigt und daher dort laufen muss, wo sich der Arbeitsbereich befindet. Das kann auf dem lokalen Computer, dem Remote-Computer oder einem Codespace sein. Die meisten Erweiterungen fallen in diese Kategorie.
  • "extensionKind": ["ui", "workspace"] – Gibt an, dass die Erweiterung bevorzugt als UI-Erweiterung ausgeführt werden soll, aber keine harten Anforderungen an lokale Assets, Geräte oder Fähigkeiten hat. Bei der Verwendung von VS Code wird die Erweiterung im lokalen Extension Host von VS Code ausgeführt, wenn dieser lokal vorhanden ist und bedeutet, dass der Benutzer die Erweiterung nicht auf dem Remote-Computer installieren muss. Andernfalls wird die Erweiterung im Arbeitsbereichs-Extension Host von VS Code ausgeführt, wenn dieser dort vorhanden ist. Bei der Verwendung von VS Code für das Web mit Codespaces wird sie immer im Remote-Extension Host ausgeführt (da kein lokaler Extension Host verfügbar ist).
  • "extensionKind": ["workspace", "ui"] – Gibt an, dass die Erweiterung bevorzugt als Arbeitsbereichs-Erweiterung ausgeführt werden soll, aber keine harten Anforderungen an den Zugriff auf Arbeitsbereichsinhalte hat. Bei der Verwendung von VS Code wird die Erweiterung im Arbeitsbereichs-Extension Host von VS Code ausgeführt, wenn dieser im Remote-Arbeitsbereich vorhanden ist, andernfalls wird sie im lokalen Extension Host von VS Code ausgeführt, wenn sie lokal vorhanden ist. Bei der Verwendung von VS Code für das Web mit Codespaces wird sie immer im Remote-Extension Host ausgeführt (da kein lokaler Extension Host verfügbar ist).
  • "extensionKind": ["ui"] – Gibt an, dass die Erweiterung nahe an der Benutzeroberfläche laufen muss, da sie Zugriff auf lokale Assets, Geräte oder Fähigkeiten benötigt oder weil eine niedrige Latenz erforderlich ist. Im Fall von VS Code für das Web mit Codespaces, wo kein lokaler Extension Host verfügbar ist, kann eine solche Erweiterung nicht geladen werden, es sei denn, sie ist auch eine Web-Erweiterung. Sie wird dann im Web-Extension Host geladen, mit der Einschränkung, dass sie keinen Web Worker instanziieren kann.

Hinweis: Frühere VS Code-Versionen (<1.40) erlaubten es einer Erweiterung, einen einzelnen Speicherort als Zeichenkette anzugeben, aber dies ist zugunsten mehrerer Speicherorte als Array veraltet.

Wenn eine Erweiterung unter Node.js und im Browser laufen kann, wird ein Node.js Extension Host ausgewählt, wenn verfügbar. Es gibt eine Ausnahme: Wenn die Konfiguration VS Code für das Web mit Codespaces ist und extensionKind auf ui gesetzt ist, wird der Web-Extension Host dem Remote-Extension Host vorgezogen.

Wenn eine Erweiterung nur für das Web bestimmt ist, wird sie immer im Web-Extension Host ausgeführt, unabhängig von der Einstellung extensionKind. Wir empfehlen in diesem Fall, extensionKind nicht zu definieren.

Stabilität und Leistung

VS Code zielt darauf ab, Benutzern einen stabilen und leistungsstarken Editor zu bieten, und fehlerhafte Erweiterungen sollten das Benutzererlebnis nicht beeinträchtigen. Der Extension Host in VS Code verhindert, dass Erweiterungen

  • Die Startleistung beeinträchtigen
  • UI-Operationen verlangsamen
  • Die Benutzeroberfläche ändern

Zusätzlich lässt VS Code Erweiterungen ihre Aktivierungsereignisse deklarieren und lädt sie bedarfsgesteuert. Zum Beispiel sollte die Markdown-Erweiterung nur geladen werden, wenn ein Benutzer eine Markdown-Datei öffnet. Dies stellt sicher, dass Erweiterungen keine unnötige CPU- und Speicherauslastung verursachen.

© . This site is unofficial and not affiliated with Microsoft.