April 2021 (Version 1.56)
Update 1.56.1: Das Update behebt diese Sicherheitsprobleme.
Update 1.56.2: Das Update behebt diese Probleme.
Downloads: Windows: x64 Arm64 | Mac: Universal Intel Silicon | Linux: deb rpm tarball Arm snap
Willkommen zur April 2021-Version von Visual Studio Code. Das VS Code-Team war diesen Monat fleißig und hat an mehreren längerfristigen Updates gearbeitet. Werfen Sie einen Blick in den Abschnitt Vorschaufunktionen, um zu erfahren, was als Nächstes kommt. Hier sind einige der Highlights dieser Version
- Verbessertes Hover-Feedback - Hilft Ihnen, anklickbare Editor-Aktionen schnell zu finden.
- Verbesserungen bei Terminalprofilen - Erstellen Sie ein benutzerdefiniertes Standard-Terminalprofil.
- Inline-Werte standardmäßig für einige Sprachen - Zeigen Sie Variablenwerte direkt im Editor während Debugging-Sitzungen an.
- KaTeX-Unterstützung für Notebooks - Mathematische Unterstützung in Markdown-Zellen von Notebooks.
- Dev Containers Volume-Ansicht - Verwalten Sie gemountete Volumes in Docker-Containern.
- winget-Installation - VS Code ist über den Windows Package Manager verfügbar.
- Neue Einführungsvideos - Videos für den Einstieg in VS Code sowie die Arbeit mit C++.
- Vorschau auf Terminal-Tabs - Erhalten Sie einen ersten Einblick in die Verwaltung geöffneter Terminals mit der neuen Tab-Ansicht.
Wenn Sie diese Release Notes online lesen möchten, gehen Sie zu Updates auf code.visualstudio.com.
Begleiten Sie uns live am Dienstag, 11. Mai, um 8 Uhr Pacific Time (16 Uhr London) beim Livestream des VS Code-Teams, um eine Demo der Neuerungen dieser Version zu sehen und uns live Fragen zu stellen.
Insiders: Möchten Sie neue Funktionen so schnell wie möglich ausprobieren? Sie können den nächtlichen Insiders-Build herunterladen und die neuesten Updates ausprobieren, sobald sie verfügbar sind.
Workbench
Verbessertes Hover-Feedback für Aktionen
Wir haben das Maus-Hover-Feedback für Aktionen im gesamten Workbench geändert, um eine bessere Benutzererfahrung für anklickbare Aktionen zu bieten.

Hinweis für unbenannte Editoren
Wir haben festgestellt, dass viele neue Benutzer nicht wissen, dass eine Sprache festgelegt werden muss, um die volle Sprachunterstützung von VS Code zu erhalten. Um dieses Problem zu beheben, haben wir einen Hinweis für unbenannte Editoren eingeführt, der Benutzern hilft, den richtigen Sprachmodus einzustellen. Der Hinweis für unbenannte Editoren ist für fortgeschrittene Benutzer möglicherweise nicht hilfreich, verschwindet sofort, wenn Sie mit der Eingabe beginnen, oder Sie können Nicht mehr anzeigen auswählen, um den Hinweis nie wieder anzuzeigen.

Standard-Editor und Notebook-Auflösung
Wenn Sie zwei Editoren haben, die beide angeben, dass sie Ihr Standard-Editor für eine Ressource sein sollen (z. B. ein Bildbetrachter und ein Bildbearbeitungsprogramm), erhalten Sie eine Aufforderung zur Lösung des Konflikts.
Im kurzen Video unten öffnet der Benutzer eine PNG-Datei, die zwei Editoren zugeordnet ist. Die Benachrichtigung ermöglicht es dem Benutzer, den Luna Paint Image Editor weiterhin zu verwenden oder einen neuen Standard zu konfigurieren, was er tut und mit dem Hex-Editor beginnt, der Binärdateien bearbeiten kann.

Aktualisierte benutzerdefinierte Dialogfelder
Wir haben unsere benutzerdefinierten Dialogstile aktualisiert, die Sie über "window.dialogStyle": "custom" aktivieren können. VS Code dimmt nun den Hintergrund, um den Dialog stärker hervorzuheben, und verwendet den Stil der sekundären Schaltfläche, wenn mehr als eine Aktion vorhanden ist.

Produkt-Symbolik-Thema: Fluent Icons
Sie können den Stil der sekundären Schaltfläche über die folgenden Farbtokens thematisieren
button.secondaryBackgroundbutton.secondaryForegroundbutton.secondaryHoverBackground
Automatische Aktualisierung nur aktivierter Erweiterungen
Sie können VS Code jetzt so konfigurieren, dass nur Ihre aktuell aktivierten Erweiterungen automatisch aktualisiert werden.

Thema: GitHub Light Theme
Terminal
Verbesserungen bei Profilen
In der letzten Iteration haben wir Terminalprofile eingeführt. Das Terminal unterstützt jetzt die Einstellung eines Standardprofils mit den Einstellungen terminal.integrated.defaultProfile.<platform>.
Umgebung und Symbolunterstützung wurden ebenfalls zum Profilsystem hinzugefügt
"terminal.integrated.profiles.windows": {
"PowerShell": {
"source": "PowerShell",
"overrideName": true,
"icon": "terminal-powershell",
"env": {
"TEST_VAR": "value"
}
}
},
"terminal.integrated.defaultProfile.windows": "PowerShell",
Zukünftig sind diese Einstellungen der empfohlene Weg, die Standard-Terminalkonfiguration zu wechseln, und die Einstellungen terminal.integrated.shell und terminal.integrated.shellArgs wurden als veraltet markiert.
Neuer Terminal-Selektor
Profile und Einstellung Shortcuts wurden aus dem Dropdown-Menü entfernt und in einen neuen +-Button mit einem Dropdown-Menü verschoben.

Dies unterstützt auch die Erstellung eines neuen geteilten Terminals basierend auf einem Nicht-Standardprofil.
Neue Tastenkombinationen
Das Terminal hat in dieser Version mehrere neue Standard-Tastenkombinationen
- Zum vorherigen Terminal wechseln -
Strg+BildAuf(macOSCmd+Umschalt+]) - Zum nächsten Terminal wechseln -
Strg+BildAb(macOSCmd+Umschalt+[) - Fokus auf Terminal-Tabs-Ansicht -
Strg+Umschalt+\(macOSCmd+Umschalt+\) - Vorschau auf Terminal-Tabs
Wie immer kann die vollständige Liste der Änderungen im Tastenkombinationssystem eingesehen oder benutzerdefinierte Tastenkombinationen hinzugefügt werden.
Linux Auswahl-Einfügebefehl
Der neue Befehl workbench.action.terminal.pasteSelection ist unter Linux verfügbar, um vom Auswahl-Clipboard in das Terminal einzufügen.
Berechtigungen für Terminal-Arbeitsbereichs-Shells geändert
Um zukünftige Änderungen im Zusammenhang mit Profilen zu unterstützen, wurde die Aufforderung, die angezeigt wurde, wenn Terminaleinstellungen in .vscode/settings.json vorhanden waren, entfernt und durch eine Einstellung ersetzt, um die Verwendung von Arbeitsbereichseinstellungen zu ermöglichen. Beachten Sie, dass dies in nicht vertrauenswürdigen Arbeitsbereichen gefährlich sein kann.
"terminal.integrated.allowWorkspaceConfiguration": true
Wenn Arbeitsbereich-Vertrauen standardmäßig aktiviert ist, werden wir dies entfernen und dieses System verwenden.
Aufgaben
Entfernung von Tasks 0.1.0 mit Upgrade
Tasks 2.0.0 ist seit über drei Jahren verfügbar und funktioniert gut. Tasks 0.1.0 wurden während dieser Zeit als veraltet markiert. Angesichts unseres Ziels, Node.js-freie Renderer, wurden Tasks 0.1.0 gelöscht, anstatt in die Node.js-freie Welt übernommen zu werden. Wenn Sie einen Ordner öffnen, der 0.1.0 Tasks enthält, werden diese automatisch für Sie auf Version 2.0.0 aktualisiert.

Kein "Task"-Präfix in Terminal-Tabs
Bei Verwendung der neuen Funktion Terminal-Tabs wird das Präfix "Task" nicht mehr vor dem Terminalnamen hinzugefügt. Stattdessen werden Tasks durch das "Werkzeug"-Symbol angezeigt, um den verfügbaren Platz besser zu nutzen.

Bessere Übereinstimmung mit eslint-stylish
Der Problem-Matcher $eslint-stylish stimmt besser mit mehrzeiligen Problemen überein.
Debugging
Verbesserungen der Breakpoints-Ansicht
Zugriffstyp wird für Daten-Breakpoints angezeigt
Für Daten-Breakpoints zeigt VS Code nun den Zugriffstyp ("Read", "Write" oder "Access") neben dem Namen in der Breakpoints-Ansicht an.

Bessere Status-/Fehlerberichte für Ausnahme-Breakpoints
Für Ausnahme-Breakpoints zeigt VS Code nun deren individuellen Verifizierungsstatus und detaillierte Gründe in der Breakpoints-Ansicht an. Wenn ein Ausnahme-Breakpoint nicht verifiziert werden kann (z. B. weil seine Bedingung einen Syntaxfehler enthält), wird er ausgegraut und beim Überfahren mit der Maus wird die entsprechende Fehlermeldung angezeigt.

Weitere UI-Verbesserungen
Alternierendes Verhalten für Stopp- und Trennen-Befehle
Eine Debugging-Sitzung wird normalerweise über die Befehle Debug: Stopp und Debug: Trennen beendet. Wenn die Debugging-Sitzung vom Typ launch ist, stoppt der Befehl Stopp nicht nur die Sitzung, sondern beendet auch den Debuggee. Für Debugging-Sitzungen vom Typ attach gibt es den Befehl Trennen, der das Debugging stoppt und die Ausführung des Debuggees fortsetzt.
Mit dieser Version ist es nun möglich, dieses Verhalten umzukehren, indem die Alt-Taste gedrückt gehalten wird, während der Befehl über die Debug-Toolbar ausgelöst wird. Das Ändern des Verhaltens ermöglicht es, den Debuggee für Debugging-Sitzungen vom Typ launch weiterlaufen zu lassen und den Debuggee für Debugging-Sitzungen vom Typ attach zu beenden. Neben der Verwendung von Alt mit den Standardbefehlen ist es auch möglich, sowohl die Befehle Debug: Stopp als auch Debug: Trennen über die Befehlspalette für Debugging-Sitzungen vom Typ launch und attach aufzurufen.
Das alternative Verhalten ist nur für Debug-Erweiterungen verfügbar, die sich für diese Funktion entschieden haben.
Verbesserter Ablauf für die Installation fehlender Debug-Erweiterungen
Wir haben den Ablauf verbessert, falls ein Benutzer mit dem Debugging beginnen möchte, aber die erforderliche Sprach-Erweiterung, die Debugging-Unterstützung bietet (wie Python oder Java), nicht installiert hat. Wenn dies geschieht, fordert VS Code den Benutzer nun auf, die entsprechende Erweiterung zu installieren.

Aufrufstapel-Spalten-Stopp-Indikator
VS Code rendert nun den Indikator der Aufrufstapel-Spalte jedes Mal, wenn ein Debuggee an einer Zeile angehalten wird. Dies sollte helfen, zu identifizieren, wo in einer Zeile das Programm gerade angehalten ist.

Inline-Werte standardmäßig für einige Sprachen
Die Debugger-UI von VS Code unterstützt Inline-Werte, die Variablenwerte inline im Editor anzeigen, wenn durch den Quellcode geschritten wird. Diese Funktion basiert auf einer generischen Implementierung im VS Code-Kern und ist daher möglicherweise nicht für alle Sprachen perfekt geeignet, zeigt manchmal sogar falsche Werte an, da der generische Ansatz die zugrunde liegende Quellsprache nicht versteht. Aus diesen Gründen war die Funktion nicht standardmäßig aktiviert.
Mit einer neuen Debugger-Erweiterungs-API ist es nun möglich, dass Sprach-Erweiterungen eine korrekte Inline-Werte-Unterstützung bieten, und wir aktivieren die Funktion Verbesserte Inline-Werte standardmäßig.
Um diese Funktion zu aktivieren, hat die Einstellung debug.inlineValues einen neuen (standardmäßigen) Wert auto. Wenn auf auto gesetzt, werden Inline-Werte automatisch für diejenigen Sprachen aktiviert, die eine "verbesserte Inline-Wert"-Unterstützung haben.
Die Debugger for Java-Erweiterung ist eine der ersten Debugger-Erweiterungen, die die API übernimmt. In der unten stehenden Abbildung werden die korrekten Werte der Java-Variablen neben ihrer Verwendung angezeigt.

Sie können Inline-Werte beim Debuggen von PowerShell-Skripten mit der Erweiterung Inline Values support for PowerShell erhalten.
Debug-Ansicht beim Unterbrechen angezeigt
Der Standardwert der Einstellung debug.openDebug ist nun openOnDebugBreak, sodass VS Code bei jedem Treffer eines Breakpoints die Debug-Ansicht öffnet. Die Debug-Ansicht wird auch beim ersten Start einer Sitzung angezeigt.
JavaScript-Debugging
Wie üblich finden Sie die vollständige Liste der Änderungen im Changelog von vscode-js-debug.
Verbesserte Auffindbarkeit des Breakpoint-Diagnosetools
Basierend auf Heuristiken zeigt VS Code eine Benachrichtigung an, die das Öffnen des Breakpoint-Diagnosetools vorschlägt, wenn es erkennt, dass der Benutzer möglicherweise Schwierigkeiten hat, Breakpoints zu binden.

Diese Aufforderung wird zunächst nur für eine Teilmenge von Benutzern angezeigt, während wir die Wirksamkeit und Durchsetzbarkeit testen.
Unterstützung für private Klassenfelder
Private Klassenfelder sind nun sichtbar und können im Debugger inspiziert werden.
Notebooks
Zeilennummern umschalten
Sie können die Zeilennummern einer Zelle in der aktuellen Sitzung jetzt temporär über die Zell-Toolbar umschalten oder die Sichtbarkeit von Zeilennummern für alle Notebooks über die Einstellung notebook.lineNumbers ändern.

Position der Zell-Toolbar pro Dateityp
Die Position der Zell-Toolbar kann nun pro Dateityp über die Einstellung notebook.cellToolbarLocation angepasst werden. Sie können beispielsweise die Zell-Toolbar auf der rechten Seite für GitHub Issue Notebooks haben, aber auf der linken Seite für Jupyter Notebooks.
Mathematikunterstützung in Markdown-Zellen
Sie können jetzt mathematische Gleichungen innerhalb von Markdown-Zellen in Notebooks verwenden.

VS Code verwendet KaTeX zum Rendern der Gleichungen. Es gibt zwei Möglichkeiten, eine mathematische Gleichung in eine Markdown-Zelle einzubetten
- Mit einfachen Dollarzeichen:
$...$. Dies erstellt eine Inline-Mathematikgleichung. - Mit doppelten Dollarzeichen:
$$...$$. Dies erstellt eine zentrierte Block-Mathematikgleichung.
Wir haben die Mathematikunterstützung mithilfe einer experimentellen Notebook-Markup-Renderer-API implementiert, die sich noch in der Entwicklung befindet. Unser zukünftiges Ziel mit dieser API ist es, auch Erweiterungen zu ermöglichen, die das Rendern von Markdown in Notebooks zu erweitern.
Sprachen
Markdown-Vorschau Typografiestützung
Die neue Einstellung markdown.preview.typographer ermöglicht die Aktivierung von intelligenten Anführungszeichen und einfachen typografischen Ersetzungen in der integrierten Markdown-Vorschau.
Im folgenden Beispiel wird Markdown-Text wie (c) automatisch durch das Copyright-Symbol © in der Vorschau ersetzt.

Die Einstellung markdown.preview.typographer ist standardmäßig deaktiviert.
Mehr Dateien als Shellskripte erkannt
Dateien mit den Dateiendungen .xsession und .xprofile werden automatisch als Shellskripte erkannt.
Vorschau-Funktionen
Terminal-Tabs
Tabs im Terminal sind als Vorschaufunktion verfügbar und können mit der folgenden Einstellung aktiviert werden
"terminal.integrated.tabs.enabled": true

Wenn aktiviert, wird die neue Tab-Ansicht standardmäßig nur angezeigt, wenn mindestens zwei Terminals vorhanden sind. Bei einzelnen Terminals wird der Tab wie folgt in den Panel-Titel "eingebettet"

Jeder Tab unterstützt über das Kontextmenü mehrere Aktionen.

Teilen und Terminal schließen sind bei Hover verfügbar.

Wir haben versucht, das Verhalten der neuen Tabs an das des Explorers anzupassen. Hier sind einige der anderen Verhaltensweisen
- Doppelklicken auf den leeren Bereich erstellt ein neues Terminal.
- Doppelklicken auf den Trennstrich schaltet die Breite der Tab-Ansicht zwischen der "idealen" Größe, die alle Titel ohne Kürzung anzeigt, und einer schmalen Ansicht, die nur die Symbole anzeigt, um.
- Die Tabs können über die Einstellung
terminal.integrated.tabs.locationnach links verschoben werden. - Verschiedene andere Konfigurationseinstellungen sind unter
terminal.integrated.tabsverfügbar.
Terminal-Status
Neben Tabs haben wir das Konzept der Status im Terminal eingeführt. Ein Terminal kann viele Status haben, die jeweils einen Zustand darstellen, in dem sich das Terminal vorübergehend befinden kann, wobei der mit der höchsten Schwere neben dem Tab angezeigt wird. Statussymbole erscheinen rechts vom Terminaltitel in der Tab-Ansicht. Beim Hover werden Details zum Status und alle zugehörigen Aktionen angezeigt.
![]()
Derzeit werden diese Zustände unterstützt
- Neustart erforderlich: Ein Warnsymbolstatus wird verwendet, wenn eine Erweiterung die Umgebung eines Terminals ändern möchte.
- Getrennt: Ein Steckersymbolstatus wird verwendet, wenn das Terminal die Verbindung zu seinem Prozess verliert.
- Glocke: Ein Glockensymbol erscheint, wenn die Glocke über die Einstellung
terminal.integrated.enableBellaktiviert ist und die Terminalglocke ausgelöst wird.
Wir planen, bald Task-Status zu unterstützen, damit der Laufzeitstatus von Tasks auf einen Blick verfügbar ist, auch ohne den Tab zu aktivieren.
Walkthroughs auf der Startseite
Wir haben die walkthroughs-Beiträge zur Platzierung von Inhalten auf der Startseite erweitert, um Markdown sowohl in den Schrittbeschreibungen als auch im Hauptinhalt der Schritte zu ermöglichen. Erweiterungsbeiträge zur Startseite sind eine experimentelle Funktion und können mit "workbench.welcomePage.experimental.extensionContributions": true, aktiviert werden.
Das kurze Video unten zeigt ein Beispiel-Walkthrough, um Benutzern die Luna Paint-Erweiterung zu vermitteln.

Unterstützung für benutzerdefiniertes Hover in der Aktivitätsleiste und im Panel
In diesem Meilenstein haben wir experimentelle Unterstützung für benutzerdefinierte Hovers in der Aktivitätsleiste und im Panel hinzugefügt. Sie können benutzerdefinierte Hovers mit der Einstellung workbench.experimental.useCustomHover aktivieren.

Thema: GitHub Light Theme Produkt-Symbolik-Thema: Fluent Icons
Remote-Repositorys (RemoteHub)
Als Teil dieser Version veröffentlichen wir eine neue integrierte Erweiterung, Remote-Repositorys (RemoteHub), mit der Sie jedes GitHub-Repository direkt von VS Code aus durchsuchen, durchsuchen, bearbeiten und committen können, ohne das Repository klonen oder lokal haben zu müssen. Sie ist derzeit nur in der Insiders-Version von VS Code verfügbar.
Erste Schritte
Um zu beginnen, führen Sie den Befehl Remote-Repository öffnen... aus der Befehlspalette aus. Von dort aus können Sie jede GitHub-URL einfügen oder nach einem bestimmten Repository oder Pull Request suchen.

Thema: Amethyst Dark Theme
Sobald Sie eine URL eingeben oder ein Repository oder einen Pull Request auswählen, öffnet VS Code einen neuen Arbeitsbereich für dieses Repository. Die Remote-Statusanzeige auf der linken Seite der Statusleiste zeigt den verbundenen Remote-Anbieter-Namen, z. B. GitHub, für das Remote-Repository an.

Thema: Amethyst Dark Theme
Funktionen
- Öffnen Sie sofort jedes GitHub-Repository, ohne es zu klonen oder lokal zu haben.
- Bearbeiten und beitragen Sie einfach zu jedem GitHub-Repository – committen Sie Ihre Änderungen direkt auf GitHub oder öffnen Sie einen Pull Request.
- In einer anderen Umgebung fortfahren – über den Befehl Fortfahren mit... (zugänglich über die Befehlspalette oder das Quick-Pick-Menü des Remote-Indikators).
- Repository lokal klonen
- Repository in einem Container klonen – erfordert die Dev Containers-Erweiterung
- Bietet eine vertraute Benutzeroberfläche, ähnlich der Arbeit an einem lokalen Repository (*siehe "Einschränkungen" unten).
- Explorer – Dateien und Ordner öffnen, kopieren, verschieben, umbenennen und löschen
- Suchen – Schnelle Volltextsuche*
- Quellcodeverwaltung – Ihre Änderungen stagen und committen, sowie viele andere Aktionen zur Quellcodeverwaltung
- Zeitachsenansicht – Dateihistorie mit Diff-Unterstützung anzeigen
- Schnell öffnen – Schnell Dateien zum Öffnen finden
- Remote-Indikator – Zeigt den Anbieter an, mit dem das Remote-Repository verbunden ist (z. B. GitHub)
- Gleichzeitig an verschiedenen Branches arbeiten – Jeder Remote-Branch wird wie ein separater Arbeitsbaum (im Git-Sinne) behandelt, d. h. alle von Ihnen vorgenommenen Änderungen sind auf diesen Branch beschränkt. Sie müssen Ihre Änderungen nicht stashen, nur um zu einem neuen Branch zu wechseln, um einen PR auszuchecken oder mit einem neuen Arbeitselement zu beginnen. Und wenn Sie zum vorherigen Branch zurückkehren, sind Ihre Änderungen immer noch da.
- Installieren Sie die GitHub Pull Requests and Issues-Erweiterung und zeigen Sie schnell Pull Requests an, durchsuchen und checken Sie sie aus, und zeigen Sie Issues an und beginnen Sie mit der Arbeit an ihnen.
Einschränkungen
- Begrenzte Sprachintelligenz – Viele Sprachserver verstehen diese virtualisierte Umgebung noch nicht. TypeScript unterstützt die Einzeldateienintelligenz für Remote-Repositorys.
- Begrenzte Erweiterungsunterstützung – Wie bei den Sprachservern funktionieren viele Erweiterungen nicht mit Remote-Repositorys. Erweiterungen können sich abmelden und werden für virtuelle Arbeitsbereiche nicht aktiviert. Weitere Details finden Sie im Abschnitt Erweiterungsentwicklung unten.
- Suchen – Volltextsuche erfordert einen vordefinierten Index für exakte Textübereinstimmung, andernfalls wird auf die native Standard-Branch-eigene Fuzzy-Suche von GitHub zurückgegriffen.
- Terminals – Nicht unterstützt. Alle geöffneten Terminals befinden sich auf Ihrem lokalen Dateisystem.
- Debugging – Nicht unterstützt.
- Tasks – Nicht unterstützt.
Teilen Sie uns Ihre Meinung mit
Wir freuen uns sehr darauf, dass Sie Remote-Repositorys (RemoteHub) ausprobieren und sind gespannt auf Ihre Gedanken und Ihr Feedback. Wir stehen erst am Anfang dieser Reise, daher erwarten Sie, dass die Funktionen wachsen und die Einschränkungen mit fortschreitender Entwicklung abnehmen werden. Wir werden auch die Menge der unterstützten Anbieter erweitern. GitHub ist nur der erste Anbieter, den wir unterstützen, Azure Repos wird bald folgen.
TypeScript 4.3
Diese Version verbessert weiterhin unsere Unterstützung für die kommende TypeScript 4.3-Version. Sie können mehr über die neuen Sprachfunktionen und Verbesserungen in TypeScript 4.3 auf dem TypeScript-Blog lesen. Hier sind einige der Editor-Verbesserungen, die sie ermöglicht
- Unterstützung für
override. Es gibt auch Schnelle Fixes zum Hinzufügen desoverride-Schlüsselworts. - Importanweisungs-Vervollständigungen. Dies ist wie Auto-Import, nur dass Sie die Importanweisung selbst eingeben.
- Unterstützung für JSDoc
@link-Tag.
Um die TypeScript 4.3 Nightly Builds zu verwenden, installieren Sie einfach die TypeScript Nightly extension. Bitte geben Sie uns Ihr Feedback und lassen Sie uns wissen, wenn Sie auf Fehler mit TypeScript 4.3 stoßen.
Vertrauen in Arbeitsbereiche
In den Release Notes der letzten Meilenstein haben wir unsere Arbeit an Workspace Trust speziell für Erweiterungsautoren geteilt. Wir haben in diesem Meilenstein große Fortschritte sowohl bei der Erweiterungs-API als auch bei den Benutzererfahrungen gemacht. Dennoch wird Workspace Trust für diese Version deaktiviert bleiben, aber wir würden uns freuen, wenn Sie es ausprobieren und Feedback geben würden.
Sie können die Funktion mit der folgenden Einstellung security.workspace.trust.enabled aktivieren. Sobald sie aktiviert ist, sehen Sie den folgenden Dialog beim Öffnen von Ordnern in VS Code.

Dieser Dialog ist wichtig, damit der Benutzer frühzeitig eine Entscheidung treffen und die Auswirkungen seiner Entscheidung verstehen kann. Sobald Sie die Funktion verstanden haben, möchten Sie vielleicht anpassen, wann der Dialog angezeigt werden soll, indem Sie die Einstellung security.workspace.trust.startupPrompt verwenden.
Sie können die Entwicklung von Workspace Trust verfolgen und Feedback in Issue #106488 geben.
Beiträge zu Erweiterungen
Remote-Entwicklung
Die Arbeit an den Remote Development-Erweiterungen wird fortgesetzt. Diese ermöglichen es Ihnen, einen Container, eine Remote-Maschine oder das Windows Subsystem for Linux (WSL) als voll ausgestattete Entwicklungsumgebung zu nutzen.
Funktions-Highlights in 1.56 umfassen
- Neue Volumenansicht beim Repository in Container-Volume klonen.
- Lokale Terminalwarnung bei Verbindung mit einem Remote-Server.
- Aufforderung zur Installation von Docker Desktop beim Start mit der Dev Containers-Erweiterung.
Sie können sich über neue Erweiterungsfunktionen und Fehlerbehebungen in den Remote Development Release Notes informieren.
GitHub Pull Requests und Issues
Die Arbeit an der GitHub Pull Requests and Issues-Erweiterung wird fortgesetzt, die es Ihnen ermöglicht, Pull Requests und Issues zu bearbeiten, zu erstellen und zu verwalten.
Um alle neuen Funktionen und Updates kennenzulernen, können Sie das vollständige Changelog für die Version 0.26.0 der Erweiterung einsehen.
Erweiterungs-Authoring
Definieren Sie, ob Ihre Erweiterung einen virtuellen Arbeitsbereich unterstützt
Die neue Erweiterung Remote-Repositorys ermöglicht es Ihnen, einen Ordner mit Inhalten direkt von GitHub zu öffnen. Sie tut dies, indem sie ein virtuelles Dateisystem bereitstellt und einen Arbeitsbereich darauf öffnet. Andere Erweiterungen tun dasselbe. Sie liefern Inhalte von FTP-Servern, Cloud-Speichern oder Datenbanken und stellen diese nahtlos als Dateien für den Benutzer in VS Code bereit.
Das virtuelle Dateisystem-Feature existiert schon seit einiger Zeit. Wir haben jedoch festgestellt, dass nicht alle Erweiterungen in einem virtuellen Arbeitsbereich ausgeführt werden können, in dem die Arbeitsbereichsdateien nicht physisch auf der Festplatte vorhanden sind. Aus diesem Grund haben wir Unterstützung für Erweiterungen hinzugefügt, um zu signalisieren, ob sie für virtuelle Arbeitsbereiche unterstützt werden oder nicht. Wenn eine Erweiterung sich abgemeldet hat, wird sie von VS Code für einen virtuellen Arbeitsbereich nicht aktiviert und der Benutzer sieht keine Fehler von dieser Erweiterung.
Eine Erweiterung meldet sich in der package.json wie unten gezeigt von einem virtuellen Arbeitsbereich ab
{
"capabilities": {
"virtualWorkspaces": false
}
}
Das Ziel ist, dass so viele Erweiterungen wie möglich die Ausführung in einem virtuellen Arbeitsbereich unterstützen. Dies ist jedoch nicht immer möglich, insbesondere wenn eine Erweiterung Komponenten verwendet, die davon ausgehen, dass Dateien physisch vorhanden sind. Die Anleitung für virtuelle Arbeitsbereiche beschreibt, wie eine Erweiterung einen virtuellen Arbeitsbereich unterstützen kann.
Aufruf zum Handeln: Bitte prüfen Sie, ob Ihre Erweiterung virtuelle Arbeitsbereiche verarbeiten kann, und setzen Sie die virtualWorkspaces-Fähigkeit entsprechend in Ihrer package.json.
Es wird eine Übergangszeit geben, bis die Erweiterungen die neue Eigenschaft virtualWorkspaces übernommen haben. Bis dahin pflegen wir eine interne Liste für Erweiterungen, bei denen wir der Meinung sind, dass die virtualWorkspaces-Fähigkeit auf false gesetzt sein sollte. Dies geschah basierend auf einer Analyse, ob die Erweiterung das Node.js fs-Modul verwendet und somit direkt auf das Dateisystem zugreift. Der Erweiterungsautor ist jedoch in einer viel besseren Position, um zu beurteilen, ob eine Erweiterung die virtualWorkspaces-Fähigkeit unterstützt. Um die Übernahme zu verfolgen, haben wir die folgende Tracking-Ausgabe #122836 erstellt. Wenn Ihre Erweiterung in der Liste steht und Sie die virtualWorkspaces-Fähigkeit übernommen haben, fügen Sie bitte einen Kommentar in die obige Ausgabe ein.
Menü für Remote-Indikator
Erweiterungen können nun zum Menü des Remote-Indikators beitragen

Der Menübeitragspunkt statusBar/remoteIndicator fügt einen Befehl zum Menü des Remote-Indikators hinzu.
"contributes": {
"menus": {
"statusBar/remoteIndicator": [
{
"command": "remote-wsl.newWindow",
"when": "!remoteName && isWindows",
"group": "remote_10_wsl_0_local@1"
}
]},
"commands": [
{
"command": "remote-wsl.newWindow",
"title": "New WSL Window",
"category": "Remote-WSL"
}
]
}
Damit das Menü Einträge basierend auf dem Anbieter sortieren kann, muss die group einer bestimmten Syntax folgen
Für Befehle von Remotes: remote_${orderOfGroups}_${remoteName)_${internalGrouping}@${orderInGroup}
Für Befehle von virtuellen Dateisystemen: virtualfs_${orderOfGroups}_${fileScheme)_${internalGrouping}@${orderInGroup}
orderOfGroupsist eine zweistellige Zahl, die zum Sortieren der Gruppen verwendet wirdremoteNameist der erste Teil der remoteAuthority (wsl, ssh,...)fileSchemeist das URI-Schema des virtuellen DateisystemsinternalGroupingist zur freien Verwendung für jeden BeitragorderInGroupwird zum Sortieren von Einträgen innerhalb Ihrer Gruppe verwendet
Beispiel: remote_10_wsl_1-open@1
iframes werden nun für die meisten Webviews verwendet
Seit der Einführung der Webview-API haben wir Webviews mithilfe des webview-Tags von Electron implementiert. Im Web werden VS Code-Webviews stattdessen mithilfe von Standard-<iframe>-Elementen implementiert, da <webview> nicht verfügbar ist.
Wir haben die Migration von Desktop-Versionen von VS Code zur Verwendung von <iframe>-basierten Webviews untersucht, da diese Änderung Erweiterungen eine konsistentere Webview-Umgebung zwischen Desktop und Web bietet. Die Migration von <webview> wird auch unsere Bemühungen zur Electron-Sandboxing unterstützen.
In dieser Iteration haben wir die meisten Webviews auf die Verwendung von Iframes umgestellt. Das <webview>-Tag wird nun nur noch für Webviews verwendet, die das Find-Widget aktivieren, und wir planen, diese nach etwas mehr technischer Arbeit ebenfalls auf Iframes umzustellen.
Diese Änderung sollte keine Probleme verursachen, es gibt jedoch einige Eckfälle, in denen sich das Verhalten von <iframe>- und <webview>-Elementen unterscheidet. Testen Sie Ihre Erweiterung gründlich, um sicherzustellen, dass alles wie erwartet funktioniert.
Einfacheres Untersuchen von Webviews
Ein klarer Vorteil von <iframe>-basierten Webviews ist, dass sie nun viel einfacher zu inspizieren sind.
Wenn Sie zuvor mit Webviews gearbeitet haben, erinnern Sie sich vielleicht, dass Sie den Befehl Entwickler: Webview-Entwicklertools öffnen verwenden mussten, um den Inhalt Ihres Webviews zu inspizieren. Dies öffnete ein neues Entwicklertools-Panel nur für Ihren Webview.

Mit <iframe>-basierten Webviews können Sie stattdessen die Standard-Entwicklertools von VS Code (Entwickler: Entwicklertools umschalten) zum Inspizieren von Webviews verwenden.

Dies macht es einfach, mehrere Webviews zu inspizieren. Die Entwicklertools werden auch nicht mehr geschlossen, wenn Ihr Webview verschwindet.
Zusätzlich werden Ausnahmen und Konsolenmeldungen, die in Webviews auftreten, nun in der Konsolend der übergeordneten Entwicklertools ausgegeben.

Sie können die Entwicklertools auch verwenden, um Ausdrücke im Kontext eines Webviews auszuwerten. Nachdem Sie die Dev-Tools von VS Code mit Entwickler: Entwicklertools umschalten geöffnet haben, öffnen Sie die Konsole und wählen Sie aus dem Kontextselektor active-frame für Ihren Webview aus.

Insgesamt sollte die Möglichkeit, die Standard-Entwicklertools von VS Code zu verwenden, eine angenehmere Entwicklungserfahrung für Webviews bieten.
CodeActionTriggerKind
Die neue Eigenschaft triggerKind in CodeActionContext verfolgt, warum Code Actions von einem CodeActionProvider angefordert werden. Die möglichen Werte dieser Eigenschaft sind
Invoke- Code Actions wurden explizit angefordert, entweder mit einer Tastenkombination oder einem Befehl.Automatic- Code Actions wurden ohne explizite Benutzeraktion angefordert. Dazu gehört die Anforderung von Code Actions, wenn sich der Inhalt eines Dokuments ändert.
Anbieter können triggerKind verwenden, um unterschiedliche Ergebnissätze zurückzugeben, je nachdem, wie Code Actions angefordert werden. Beispielsweise kann ein Refactoring-Code-Action-Anbieter, der automatisch ausgelöst wird, nur Refactorings für die exakte aktuelle Auswahl zurückgeben, um zu begrenzen, wie oft die Glühbirne für Code Actions angezeigt wird. Wenn jedoch Code Actions explizit angefordert werden, kann derselbe Anbieter die aktuelle Auswahl automatisch erweitern, um alle Refactorings anzuzeigen, an denen ein Benutzer an der aktuellen Stelle interessiert sein könnte.
Aktualisierte Codicons
Wir haben die folgenden neuen Symbole zu unserer Codicon-Bibliothek hinzugefügt
arrow-swapcopydebug-line-by-linefilter-filledperson-addterminal-bashterminal-cmdterminal-debianterminal-linuxterminal-powershellterminal-tmuxterminal-ubuntuStift
![]()
Farben für Tastenkombinationsbeschriftungen
Tastenkombinationsbeschriftungen werden angezeigt, wenn einem Befehl eine Tastenkombination zugeordnet ist. Verwendungen der Tastenkombinationsbeschriftung umfassen (sind aber nicht beschränkt auf)
- Die Befehlspalette
- Der Editor für Tastenkombinationen
- Das Modalfenster zur Aufnahme von Tastenkombinationen
- Der Abschnitt "Featurebeitrag" auf der Marktplatzseite einer Erweiterung
Die folgenden Anpassungen sind verfügbar
keybindingLabel.background: Hintergrundfarbe der Tastenkombinationsbeschriftung. Die Tastenkombinationsbeschriftung wird verwendet, um eine Tastenkombination darzustellen.keybindingLabel.foreground: Vordergrundfarbe der Tastenkombinationsbeschriftung. Die Tastenkombinationsbeschriftung wird verwendet, um eine Tastenkombination darzustellen.keybindingLabel.border: Randfarbe der Tastenkombinationsbeschriftung. Die Tastenkombinationsbeschriftung wird verwendet, um eine Tastenkombination darzustellen.keybindingLabel.bottomBorder: Untere Randfarbe der Tastenkombinationsbeschriftung. Die Tastenkombinationsbeschriftung wird verwendet, um eine Tastenkombination darzustellen.
Workspace Trust Extension API
Im letzten Meilenstein haben wir die Arbeit an einem Feature namens Workspace Trust erwähnt. Wir haben die Erweiterungsautoren gebeten, Issue #120251 auf Updates zu beobachten, und tun dies weiterhin. Die folgenden Informationen und Updates finden Sie ebenfalls in diesem Issue.
In diesem Meilenstein haben wir die Workspace Trust Extension API von "proposed" auf "stable" verschoben. Dies ermöglichte uns die Veröffentlichung des ersten Teils unseres Leitfadens für die Integration Ihrer Erweiterung in Workspace Trust. Die API ist klein, hier ist ein kurzer Überblick.
Sie können Ihre Erweiterung so deklarieren, dass sie in nicht vertrauenswürdigen Arbeitsbereichen eine vollständige, teilweise oder keine Unterstützung bietet, indem Sie die Fähigkeit untrustedWorkspaces in package.json verwenden.
Das folgende Beispiel deklariert, dass die Erweiterung in nicht vertrauenswürdigen Arbeitsbereichen vollständig unterstützt wird. In diesem Fall ist die Erweiterung in nicht vertrauenswürdigen Arbeitsbereichen aktiviert.
"capabilities": {
"untrustedWorkspaces": {
"supported": true
}
}
Das nächste Beispiel deklariert, dass die Erweiterung in nicht vertrauenswürdigen Arbeitsbereichen nicht unterstützt wird. In diesem Fall ist die Erweiterung in nicht vertrauenswürdigen Arbeitsbereichen deaktiviert.
"capabilities": {
"untrustedWorkspaces": {
"supported": false
}
}
Die dritte Option ist die Deklaration von limited Unterstützung. Es gibt drei Werkzeuge, die Ihnen zur Verfügung stehen, wenn Sie die Option limited wählen.
Erstens, wenn Sie eine Einstellung haben, die im Arbeitsbereich konfiguriert werden kann, aber einen vertrauenswürdigen Arbeitsbereich erfordert, um den Wert des Arbeitsbereichs anzuwenden, dann können Sie die Einstellung über die Eigenschaft restrictedConfigurations im Objekt untrustedWorkspaces einbeziehen. Wenn Sie dies tun, wird VS Code den Arbeitsbereichswert dieser eingeschränkten Einstellungen ignorieren, wenn Ihre Erweiterung diese Einstellungswerte über die VS Code Workspace Configuration API liest.
Das folgende Beispiel deklariert die Einstellungen, die in nicht vertrauenswürdigen Arbeitsbereichen eingeschränkt sind.
"capabilities": {
"untrustedWorkspaces": {
"supported": "limited",
"restrictedConfigurations": [
"markdown.styles"
]
}
}
Als Nächstes können Sie auch programmatisch prüfen und abhören, ob der aktuelle Arbeitsbereich vertrauenswürdig ist oder nicht, indem Sie die folgende API verwenden.
export namespace workspace {
/**
* When true, the user has explicitly trusted the contents of the workspace.
*/
export const isTrusted: boolean;
/**
* Event that fires when the current workspace has been trusted.
*/
export const onDidGrantWorkspaceTrust: Event<void>;
}
Zuletzt können Sie Befehle oder Ansichten deklarativ mit dem Kontextschlüssel isWorkspaceTrusted in Ihren "when"-Klauseln ausblenden.
Handlungsaufforderung: Bitte überprüfen Sie den "Workspace Trust Extension Guide" in Issue #120251 und legen Sie den Wert untrustedWorkspaces.supported für Ihre Erweiterung entsprechend fest.
Vorgeschlagene Erweiterungs-APIs
Jeder Meilenstein bringt neue vorgeschlagene APIs mit sich und Erweiterungsautoren können sie ausprobieren. Wie immer wünschen wir uns Ihr Feedback. Hier erfahren Sie, wie Sie eine vorgeschlagene API ausprobieren können
- Sie müssen Insiders verwenden, da sich vorgeschlagene APIs häufig ändern.
- Sie müssen diese Zeile in der Datei
package.jsonIhrer Erweiterung haben:"enableProposedApi": true. - Kopieren Sie die neueste Version der Datei vscode.proposed.d.ts in den Quellcode-Speicherort Ihres Projekts.
Sie können keine Erweiterung veröffentlichen, die eine vorgeschlagene API verwendet. Es kann zu Breaking Changes in der nächsten Version kommen und wir möchten niemals bestehende Erweiterungen beeinträchtigen.
Native Notebooks
Wir bereiten große Teile der nativen Notebook-API zur Finalisierung vor. Wir haben zahlreiche kleine Anpassungen und auch einige größere Änderungen vorgenommen.
Notebook-Serialisierer
Wir haben die NotebookSerializer API hinzugefügt. Sie bietet eine vereinfachte Möglichkeit, "Bytes" in NotebookData zu übersetzen und umgekehrt. Wenn Sie diese API implementieren, erhält Ihr Notebook kostenlos Features wie Sicherung, Wiederherstellung, Änderungsstatus und andere. Wir empfehlen Erweiterungsautoren, diese neue API zu übernehmen und nicht die vorherige, auf Inhaltsanbietern basierende API zu verwenden.
Notebook-Controller
Die Notebook-Controller-API ersetzt die Kernel-Provider-API. Notebook-Controller stellen die Ausführungs-Engine Ihres Notebooks bereit, die die Notebook-Ausgabe erzeugt. Notebooks können mehrere Controller oder keine bereitstellen, und VS Code ermöglicht es Benutzern, Controller auszuwählen. Im Gegenzug steht es Erweiterungen frei, Controller zu erstellen, zu ändern und zu entfernen, je nach ihrem Domänenmodell.
Notebook-Zellen-Statusleiste
Die NotebookCellStatusBarItemProvider API ersetzt die Methode createCellStatusBarItem. Sie ermöglicht es Erweiterungen, Elemente mit Beschriftungen, Symbolen und Befehlen zur Statusleiste am unteren Rand jedes Zellen-Editors beizutragen. Sie folgt demselben Anbieter-Muster wie viele andere VS Code-Erweiterungs-APIs.
Testen
Wir hatten vor, diesen Monat einen Teil der neuen Test-APIs zu finalisieren, haben uns jedoch auf die Verfeinerung konzentriert und die Finalisierung auf nächsten Monat verschoben, verfolgt in Issue #122208. Die in dieser Iteration vorgenommenen API-Änderungen waren hauptsächlich
- Der
TestProviderwurde inTestControllerumbenannt und seine Methoden entsprechend. - Die
TestItems sind jetzt verwaltete Objekte, die vonvscode.test.createTestItemaufgerufen werden. - Testergebnisse werden jetzt über eine standardmäßige
vscode.test.createTestResultsMethode erstellt, die innerhalb oder außerhalb vonTestController.runTestsaufgerufen werden kann.
Mit diesen Änderungen kamen einige zusätzliche Features, wie die Möglichkeit, rohe Testergebnisse anzuzeigen und Erweiterungen Fehler beim Laden von Tests anzuzeigen. Wir glauben, dass diese Änderungen eine solide Grundlage für zusätzliche zukünftige Funktionen bieten und unseren bestehenden Erweiterungs-APIs besser entsprechen.
Wir haben auch eine Test Adapter Converter-Erweiterung erstellt, die es jedem Adapter, der mit der bestehenden Test Explorer UI-Erweiterung arbeitet, ermöglicht, sich automatisch in native VS Code-Tests zu integrieren. Die Converter-Erweiterung kann heute manuell installiert werden, und bald wird sie in die Test Explorer UI integriert, um einen nahtlosen Migrationspfad für bestehende Benutzer und Adapter in native Tests zu ermöglichen.
Verbesserter Transfer von ArrayBuffers zu und von Webviews
In aktuellen Versionen von VS Code gibt es beim Senden von Typed Arrays zu oder von einem Webview einige Eigenheiten.
- Typed Arrays, wie z.B.
UInt8Array, werden sehr ineffizient serialisiert. Dies kann zu Leistungsproblemen führen, wenn viele Megabyte an Daten übertragen werden müssen. - Gesendete Typed Arrays werden auf der Empfängerseite nicht als der richtige Typ wiederhergestellt. Wenn Sie ein
UInt8Arraysenden, erhält der Empfänger stattdessen ein generisches Objekt, das die Datenwerte desUInt8Arrayenthält.
Obwohl beides Bugs sind, können wir sie nicht beheben, ohne möglicherweise Erweiterungen zu brechen, die sich auf das bestehende Verhalten verlassen. Gleichzeitig gibt es keinen Grund, warum eine neu geschriebene Erweiterung das derzeit verwirrende und ineffiziente Verhalten wünschen würde.
Daher haben wir uns entschieden, das bestehende Verhalten für bestehende Erweiterungen beizubehalten, aber neue Erweiterungen für das korrektere Verhalten zu optieren. Dies geschieht durch die Betrachtung der engines in der package.json Ihrer Erweiterung.
"engines": {
"vscode": "^1.57.0",
}
Wenn die Erweiterung VS Code 1.57+ anvisiert, sollten Typed Arrays auf der Empfängerseite wiederhergestellt werden und der Transfer großer Typed Arrays zu und von Webviews wesentlich effizienter sein.
Bitte testen Sie dieses Verhalten und lassen Sie uns wissen, ob es nicht wie erwartet funktioniert oder unerwartete Regressionen für Ihren bestehenden Code verursacht.
TerminalOptions.message
Dieser neue Vorschlag ermöglicht es einer Erweiterung, eine Nachricht im Terminal anzuzeigen, bevor der Prozess gestartet wird.
vscode.window.createTerminal({
message: '\x1b[3;1mSome custom message\x1b[0m'
});
Debug Adapter Protocol
Ausnahme-Haltepunkte sind besser auf reguläre Haltepunkte abgestimmt
Die Anforderung setExceptionBreakpoints kann nun optional ein Array von Breakpoints zurückgeben, ähnlich wie andere set*Breakpoints-Anforderungen. Dies ermöglicht es Clients, Validierungsfehlermeldungen für einzelne Ausnahme-Haltepunkte oder Filter anzuzeigen. Ab dieser Version zeigt VS Code diese Fehler in der Ansicht "Haltepunkte" an.
Die Anforderung "Neustart" kann nun Änderungen an der Debug-Konfiguration übernehmen
Die Anforderung restart nimmt nun einen neuen optionalen Parameter arguments entgegen, über den Clients die neueste Version einer Start- oder Attach-Konfiguration übergeben können. Mit dieser Ergänzung kann ein Debug-Adapter die Sitzung mit aktuellen Werten aus der Debug-Konfiguration neu starten.
Debugger trennen und Debug-Ziel angehalten lassen
Die Anforderung disconnect wird verwendet, um eine Debug-Sitzung zu beenden und entweder die Ausführung des Debug-Ziels fortzusetzen oder es zu beenden. Es gibt eine neue Option, das Debug-Ziel im angehaltenen Zustand zu belassen, nachdem der Debugger getrennt wurde. Dies ermöglicht es, das Debugging mit einer neuen Sitzung fortzusetzen.
Ein Debug-Adapter, der dieses Feature implementiert, muss seine Unterstützung mit der Fähigkeit supportSuspendDebuggee ankündigen. Ein Client kann das Feature nutzen, indem er ein neues optionales Argument suspendDebuggee an die Anforderung disconnect übergibt.
Technik
Aktualisierung auf Electron 12
In diesem Meilenstein haben wir die Untersuchung zur Bündelung von Electron 12 in VS Code abgeschlossen, dank aller, die an Tests und Self-Hosting auf Insiders beteiligt waren. Dies ist eine Hauptversion von Electron und kommt mit Chromium 89.0.4389.114 und Node.js 14.16.0.
Fortschritte beim Electron-Sandbox
In diesem Meilenstein haben wir das VS Code-Fenster weiterhin für die Aktivierung der Funktionen Sandbox und Kontextisolierung von Electron vorbereitet.
Insbesondere
- Wir haben alle Umgebungs-Eigenschaften, die für ein VS Code-Fenster benötigt werden, so angepasst, dass sie in einem sandboxed Renderer zugänglich sind.
- Wir untersuchen die Umstellung auf
iframe-Elemente anstelle vonwebviewfür benutzerdefinierte Editoren, indem wiriframeselektiv in bestimmten Fällen aktivieren, wo immer möglich. - Wir konnten einige der nativen Modul- oder Node.js-Anforderungen, die wir im Renderer haben, in andere Prozesse verschieben oder ganz entfernen.
- Wir haben
windows-process-treekontextsensitiv gemacht.
Service Worker werden nun zum Laden von Ressourcen in Webviews verwendet
In Desktop-VS Code verwenden Webviews nun Service Worker, um lokale Ressourcen zu laden. Web-Versionen von VS Code haben immer Service Worker für diesen Zweck verwendet, aber zuvor hat Desktop-VS Code ein Electron-Protokoll verwendet.
Die Verwendung von Service Workern in der Desktop-Version ermöglicht uns eine bessere Abstimmung des Verhaltens von Webviews zwischen Desktop und Web. Außerdem konnten wir einige knifflige Fehler beheben und etwa 1000 Zeilen Code löschen.
Obwohl diese Änderung für die Mehrheit der Webview-Erweiterungen keine Auswirkungen haben sollte, könnte sie in einigen Randfällen Probleme verursachen.
-
Erweiterungen, die Annahmen darüber treffen, wie Webviews Ressourcen laden.
Wenn Ihre Erweiterung das
vscode-webview-resource:-Protokoll direkt verwendet oder andere Annahmen über Ressourcen-URIs hart codiert hat, funktioniert sie möglicherweise nicht mehr.Stellen Sie stattdessen sicher, dass Sie immer
.asWebviewUriverwenden, um URIs für Ressourcen zu erstellen. Denken Sie auch daran, dass sich das Format der zurückgegebenen URI in Zukunft ändern kann. -
Erweiterungen, die
srceines iframes auf eine HTML-Datei auf der Festplatte setzen.Service Worker können diese Anfrage nicht sehen, daher unterstützen wir dies nicht mehr. Dies war im Web bereits der Fall, und wir glauben nicht, dass dieses Muster häufig vorkommt.
Die empfohlene Lösung ist, keinen iframe zu verwenden und den Inhalt der HTML-Datei stattdessen in den Webview einzubetten.
Kein implizites Überschreiben im Code aktiviert
Die kommende TypeScript 4.3-Version bringt das neue Schlüsselwort override, das dem Compiler mitteilt, dass eine Methode in einer Unterklasse eine Methode in ihrer Oberklasse überschreibt. Es gibt auch ein neues Flag --noImplicitOverride, das erzwingt, dass alle Methoden, die eine Methode einer Oberklasse überschreiben, das Schlüsselwort override verwenden müssen.
class Foo {
foo() {...}
}
class SubFoo extends Foo {
foo() { ... } // Error when noImplicitOverride is enabled: missing override specifier
}
Das override-Schlüsselwort hat einige Vorteile.
-
Beim Lesen von Code informiert es Sie, dass eine Methode eine aus der Basisklasse überschreibt.
-
Es ist ein Fehler, zu versuchen, eine Methode zu überschreiben, die nicht in der Basisklasse vorhanden ist. Dies kann helfen, Fehler abzufangen, die durch die Umbenennung einer Methode in einer Basisklasse, aber das Vergessen, den Methodennamen in den Unterklassen zu aktualisieren, verursacht werden.
In dieser Iteration haben wir das override-Schlüsselwort in unseren Codebestand übernommen und --noImplicitOverride sowohl für den Kern-VS Code als auch für alle integrierten Erweiterungen aktiviert. Obwohl wir den Großteil dieser Arbeit automatisiert haben, hat uns die Änderung geholfen, einige Fälle aufzudecken, in denen unser Code versehentlich eine Eigenschaft neu deklariert hatte oder unklare Vererbungsmuster aufwies.
Diese neue strenge Regel sollte uns auch helfen, einige häufige Programmierfehler in Zukunft aufzudecken.
Windows-Installer in Windows Package Manager konsolidiert
Wir haben unsere Windows Package Manager-Veröffentlichungspipeline aktualisiert, um unsere Benutzer- und Systeminstaller für arm64 zu veröffentlichen und das v1-Paket-Manifestschema zu übernehmen, was es uns ermöglicht, die Benutzer- und Systeminstaller für x86, x64 und arm64 in einem einzigen Manifest zu konsolidieren. Benutzer können zwischen den Benutzer- und Systeminstallern wählen, indem sie den Parameter --scope beim Installieren eines Pakets oder die winget CLI-Einstellungen verwenden.
Dokumentation
Aktualisierte Einführungsvideos
Die Einführungsvideos von VS Code wurden aktualisiert. Die Videos reichen von Erste Schritte und Verwendung von Erweiterungen bis hin zu VS Code-Funktionen wie Debugging und Versionskontrolle.
Neue C++-Videos
Das Team der C++-Erweiterung hat eine Reihe von Einführungsvideos erstellt, die erklären, wie Sie IntelliSense konfigurieren, Ihre C++-Projekte erstellen und debuggen.
Die Geschichte und Technologie hinter VS Code
Sie können die Geschichte und die zugrunde liegende Technologie von VS Code in diesem Interview mit dem VS Code-Ingenieur Ben Pasero lesen. Ben spricht über die frühen Tage von VS Code und wie es ist, Electron als Anwendungsframework zu nutzen, das es VS Code ermöglicht, unter macOS, Windows und Linux zu laufen.
Partnererweiterungen
Azure Machine Learning
Die Azure Machine Learning-Erweiterung ermöglicht es Ihnen, leistungsstarke Cloud-Computing-Ressourcen für Ihre Machine-Learning-Workflows zu erstellen und zu verwalten. Mit ihren Remote-Funktionen können Sie sich nahtlos mit Ihren Compute-Ressourcen verbinden, sicher, auditierbar und konform.
Bemerkenswerte Fehlerbehebungen
- 108559: RunInTerminal verwendet nicht das angegebene integrierte Terminal aus den Workspace-Einstellungen Fehler
- 118282: Debugger-Schritt über skipFiles hinaus
- 118731: Untersuchen, wie Safari's Popup-Blocker bei asynchroner Öffnung von Browserfenstern und -tabs vermieden werden kann.
- 119340: Ohne Debuggen ausführen wird nie beendet, wenn der Haltepunkt für unbehandelte Ausnahmen aktiviert ist
- 121347: Datei erhält verfälschte Zeichen, wenn sie aus dem Backup wiederhergestellt wird
- 119059: Benutzerdefinierte Texteditoren: Backups öffnen 2 Editoren beim Wiederherstellen
- 120245: CSS:
!important-Vervollständigung ist kaputt - 120393: Verbesserung der Handhabung von WebGL-Kontextverlust
- 120435: Überprüfung des Pfads
emmet.extensionsPathentfernen - 120882: Einfügen einer Datei im Explorer öffnet diese Datei nicht mehr im Editor
- 121148: Doppelte Startkonfigurationen werden im Debug-Dropdown angezeigt
- 120277: Die horizontale Scrollleiste im Bereich "In Dateien suchen" ist zu klein und scrollt in die falsche Richtung
Vielen Dank
Last but certainly not least, ein großes Danke an die folgenden Personen, die diesen Monat zu VS Code beigetragen haben
Beiträge zu unserer Fehlerverfolgung
- John Murray (@gjsjohnmurray)
- Andrii Dieiev (@IllusionMH)
- Don Jayamanne (@DonJayamanne)
- Simon Chan (@yume-chan)
- T.Y.M.SAI (@tymsai)
- ArturoDent (@ArturoDent)
- Alexander (@usernamehw)
Beiträge zu vscode
- @akosyakov (Anton Kosyakov): Race zwischen Terminalerstellung und anfänglicher Größenänderung beheben PR #121272
- @alanrenmsft (Alan Ren): Problem beim Finden erforderlicher Knoten-Handles beheben PR #118091
- @alexmyczko (Alex Myczko): Debian-Steuerungsbeschreibung verbessern PR #119160
- @aliasliao (Liao Jinyuan): Emmet-Problem beheben, bei dem falsche Vorschläge in HTML-Dateien gefördert werden PR #120480
- @andrewbranch (Andrew Branch)
- [typescript-language-features] Unterstützung von Import-Anweisungsabschlüssen für TypeScript 4.3 PR #119009
- [html-language-features] Aufruf des TS-Sprachdienstes für das 4.3-Protokoll aktualisieren PR #120362
- [typescript-language-features] Telemetrie für Import-Anweisungsabschlüsse hinzufügen PR #121243
- Missed Previewer.plain-Aufruf aufgrund von nebenstehendem @ts-expect-error beheben PR #121975
- @anthony-c-martin (Anthony Martin): Seti-UI-Datei-Icons aktualisieren PR #119468
- @arnobl (arno): fix(notebook): Zelle erneut erstellen wählt die Zelle nicht neu aus PR #120086
- @awilkins (Adrian Wilkins): Auswahl-Einfügen für integriertes Terminal unter Linux implementieren PR #108397
- @benmccann (Ben McCann): Problem-Nummer im Kommentar beheben PR #121758
- @bourdakos1 (Nick Bourdakos): Seti-Icons aktualisieren PR #120938
- @CanadaHonk
- [themes] JSON-Formatierung im Standardthema High Contrast Black beheben PR #120761
- [themes] JSON-Formatierung im Standardthema High Contrast Black beheben (2) PR #120815
- [themes] JSON-Formatierung im Standardthema High Contrast Black beheben (3) PR #120841
- @conwnet (netcon): fix:
readonly-Attribut nur zumtextarea-DOM hinzufügen, wenn der Editor schreibgeschützt ist PR #120503 - @gjsjohnmurray (John Murray)
- Fix #120485
Open Timelineaus dem Kontextmenü des Explorers ausblenden, wenn keine Timeline-Provider vorhanden sind PR #120497 - fix-120578 Anruf-Stack-Schritt-Ein/Aus/Aus nicht anbieten, wenn nicht angehalten PR #120581
- fix #121509 Dokumentationsfehler für zwei API-Befehlsergebnisse PR #121511
- Fix #120485
- @hantatsang (Sang)
- markdown-language-features: Windows-Vorschaulink-URI beheben PR #120090
- Unterstützung für Emmet-Selbstschließungsabkürzungen hinzufügen PR #120311
- @jeanp413 (Jean Pierre)
- Emmet-Abschlüsse in SCSS beheben PR #118666
- Problemfenster ignoriert
files.exclude-Option beheben PR #119040 - Behebt, dass einfache Browser-Icons in Firefox kaputt sind PR #120275
- Behebt, dass die horizontale Scrollleiste im geteilten Einstellungseditor-JSON zu schmal ist PR #121027
- Behebt Regression, dass Bilder mit Sonderzeichen '#', '%' oder '?' nicht in der Vorschau angezeigt werden können PR #121874
- @Jolg42 (Joël Galeran): NPM-Erweiterung refaktorisieren, um nur NPM zu verwenden PR #120317
- @joyceerhl (Joyce Er): Fehlende Unterrand für Notebook-Markdown-Zellen hinzufügen PR #122505
- @KapitanOczywisty: PHP-Grammatik aktualisieren PR #120339
- @Kingwl (Wenlu Wang): Nächste/Vorherige Konflikte hinzufügen PR #97613
- @leemun1 (Mike Lee): feat: Unterstützung für zusätzliche umschließende Paare für Markdown hinzufügen (#_119982) PR #121698
- @lf- (Jade): Verbesserung der Meldung von Fehlern bei der Validierung des Erweiterungskonfigurationsschemas PR #120457
- @limitedmage (Juliana Peña): Race-Bedingung beim Anzeigen und Ausblenden des Suggest-Widgets beheben PR #121396
- @LuisPeregrinaIBM2: wsl -l -q, Header und Standardmarkierung entfernen PR #120382
- @nan0tube (Yongming Lai): Häufig verwendete Quelldateien als Shellskripte erkennen PR #121373
- @plainerman (Michael Plainer): Unterstützung zum Deaktivieren von automatisch aktualisierten Erweiterungen hinzufügen PR #113155
- @PooyaZv (Pooya Vakeely): cuda-cpp Sprach-ID, Grammatik und Problem-Matcher hinzufügen PR #119444
- @qchateau (Quentin Chateau): format modified: Zeilen mit Leerzeichen-Änderungen formatieren PR #119021
- @sdegutis (Steven Degutis): Fehlermeldung klarer gestalten PR #121339
- @sokolovstas (Stanislav): Dateispeicherortmuster im eslint-stylish-Problem-Matcher beheben PR #117576
- @solomatov (Konstantin Solomatov): Beenden im Falle eines Timeouts bei der Ext-Host-IPC PR #122399
- @stoyannk (Stoyan Nikolov): Falscher Variablenschatten behoben, der Profile für Erweiterungen verursacht hat… PR #120054
- @timmaffett (Tim Maffett): Debug-Konsolenunterstützung für die meisten ANSI SGR-Codes behoben und erweitert PR #120891
- @vinku: Emmet: Nächstes/vorheriges Element auswählen funktioniert nicht mit Skript-Tag. PR #118842
- @wdesgardin (William Desgardin): feat: Typografienoption für Markdown-Vorschau hinzufügen PR #119641
- @yannickowow (Yanis HAMITI): Aktuellen Datenspeicherpunkt-Zugriffstyp in der Ansicht "Breakpoints" anzeigen (#_119588) PR #119817
Beiträge zu vscode-eslint
- @JoshuaKGoldberg (Josh Goldberg): Implementierung von eslint.rules.customizations - mit Überschreibungen PR #1164
Beiträge zu vscode-json-languageservice
- @KapitanOczywisty
- @mifieldxu (Mifield): Glob-Übereinstimmung mit Minimatch verbessert PR #93
- @ssbarnea (Sorin Sbarnea): Abhängigkeiten aktualisieren PR #95
Beiträge zu vscode-vsce
Beiträge zu debug-adapter-protocol
- @jarpoole (Jared Poole): ESP-IDF Debug-Adapter PR #190
- @vadimcn: Direkten Verweis auf JSON-Schema hinzufügen PR #185
Beiträge zu vscode-js-debug
- @millerds (Darren Miller): String-Unterstützung für Chakracore PR #979
- @swissmanu (Manuel Alabor): CDP Proxy: Ermöglicht anderen Erweiterungen die Wiederverwendung der CDP-Verbindung PR #964
Beiträge zu vscode-generator-code
- @felipecrs (Felipe Santos): dist-Ordner aus Suchergebnissen ausblenden PR #260
- @miles-crighton (Miles Crighton): fix: Befehl zur Token-Inspektion aktualisieren PR #249
- @noah-vdv (Noah van der Veer): Tippfehler "orther" in Zeile 162 beheben PR #255

