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

November 2021 (Version 1.63)

Update 1.63.1: Das Update behebt diese Sicherheitsprobleme.

Update 1.63.2: Das Update behebt diese Probleme.

Downloads: Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap


Willkommen zur November 2021-Version von Visual Studio Code. Es gibt viele Updates in dieser Version, die Ihnen hoffentlich gefallen werden. Einige der wichtigsten Highlights sind:

Wenn Sie diese Release Notes online lesen möchten, gehen Sie zu Updates auf code.visualstudio.com.

Schauen Sie sich eine Zusammenfassung der neuen Funktionen dieser Version auf der Release-Party des VS Code-Teams an. Die Aufzeichnung der Veranstaltung finden Sie auf unserem YouTube-Kanal.

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

Vorschau von Themes vor der Installation

Sie können jetzt Themes aus dem Marketplace vor der Installation in der Vorschau anzeigen. Wählen Sie im Dropdown-Menü "Farbschemata" (⌘K ⌘T (Windows, Linux Ctrl+K Ctrl+T)) die Option Weitere Farbschemata durchsuchen, um die Marketplace-Themes aufzulisten. Die VS Code-Benutzeroberfläche zeigt eine Vorschau des Farbschemas an, während Sie durch das Dropdown-Menü navigieren.

Drücken Sie Enter bei einem Theme-Eintrag, um die Erweiterung zu installieren.

Reihenfolge der Problem-Navigation konfigurieren

Sie können jetzt die Reihenfolge für die Navigation zu Nächstes Problem (⌥F8 (Windows, Linux Alt+F8)) und Vorheriges Problem (⇧⌥F8 (Windows, Linux Shift+Alt+F8)) definieren. In früheren Versionen basierte die Navigationsreihenfolge auf dem Schweregrad, wobei zuerst Fehler, dann Warnungen und dann der Rest aufgerufen wurden. Die neue Einstellung Problems: Sort Order (problems.sortOrder) ermöglicht es Ihnen, Probleme entweder nach ihrem severity (Schweregrad) oder ihrer position (Position) zu sortieren. Wenn Sie "problems.sortOrder": "position" verwenden, wird eine Warnung in Zeile 5 vor einem Fehler in Zeile 13 usw. angezeigt.

Mehrere sprachspezifische Editor-Einstellungen

Sie können jetzt sprachspezifische Editor-Einstellungen für mehrere Sprachen gleichzeitig konfigurieren. Das folgende Beispiel zeigt, wie Sie Einstellungen für die Sprachen javascript und typescript gemeinsam in Ihrer settings.json-Datei anpassen können.

"[javascript][typescript]": {
  "editor.maxTokenizationLineLength": 2500
}

Automatisches 2x2 Editor-Raster

Ein echtes 2x2-Raster-Editorlayout war nur über den Befehl Anzeige: Raster-Editorlayout (2x2) möglich. Jetzt können Sie dasselbe Layout erhalten, indem Sie Editoren manuell teilen, bis Sie ein 2x2-Raster erreichen, und das Raster wird automatisch in ein echtes 2x2-Layout gesperrt.

Bessere Escape-Verarbeitung in Listen

Das Drücken von Escape in Listen und Bäumen reduziert nun die Auswahl auf ein einzelnes Element, bevor es gelöscht wird.

Finden im Web aktiviert

Die Suchfunktion ist jetzt auch innerhalb von Webviews unterstützt, wenn VS Code in einem Browser ausgeführt wird (github.dev im folgenden Beispiel).

Find widget on github.dev

Aufgrund von Einschränkungen aktueller Browser-APIs verhält sich die Suche im Web etwas anders als auf dem Desktop. Im Web kann VS Code zum Beispiel nur das aktuelle Suchergebnis hervorheben. Auf dem Desktop werden alle Ergebnisse in der aktuellen Datei hervorgehoben.

Screencast-Modus zeigt Befehlsnamen an

Sie können jetzt wählen, ob Befehlsnamen angezeigt werden sollen, wenn Sie sie im Screencast-Modus über Tastenkombinationen auslösen. Verwenden Sie die Einstellung Screencast Mode: Keyboard Shortcuts Format (screencastMode.keyboardShortcutsFormat), um dieses Verhalten zu konfigurieren.

Screencast mode with command names along with keystrokes

Pre-Release-Erweiterungen

VS Code unterstützt jetzt Pre-Release-Versionen von Erweiterungen, sodass Sie diese installieren und die neuesten, hochmodernen Funktionen von Erweiterungen ausprobieren können. VS Code zeigt eine zusätzliche Option Pre-Release-Version installieren im Dropdown-Menü Installieren der Erweiterung an, um die Pre-Release-Version zu installieren.

Pre-Release install dropdown

Thema: GitHub Light Theme

Nach der Installation macht eine Anzeige deutlich, ob Sie die Pre-Release-Version einer Erweiterung verwenden.

Pre-Release version indication

Thema: GitHub Light Theme

Wenn es eine Pre-Release-Version einer bereits installierten Erweiterung gibt, können Sie einfach zu dieser wechseln.

Switch to Pre-Release version button

Thema: GitHub Light Theme

Aktualisierte Suchaktionen

Die Suchaktionen in der Suchansicht verwenden jetzt den gleichen Stil wie die Suchaktionen im Editor.

Quellcodeverwaltung

Leerzeichen ignorieren in Quick Diff

Sie können jetzt das SCM-Quick-Diff-Feature in der linken Leiste so konfigurieren, dass abschließende Leerzeichen ignoriert werden, indem Sie die Einstellung scm.diffDecorationsIgnoreTrimWhitespace verwenden.

Notebooks

Schriftgröße in Notebooks anpassen

Die neue Einstellung notebook.markup.fontSize ermöglicht es Ihnen, die Schriftgröße von Notebook-Markdown-Inhalten zu steuern. Der Standardwert für diese Einstellung ist 120 % der aktuellen Editor-Schriftgröße.

Syntaxhervorhebung in Markdown-Zellen

VS Code unterstützt jetzt die Syntaxhervorhebung von eingefassten Codeblöcken in Markdown-Zellen.

A fenced code block in a notebook with syntax highlighting

Markdown in Notebooks kann jetzt auf andere Dateien im aktuellen Arbeitsbereich verlinken.

Links, die mit / beginnen, werden relativ zum Stammverzeichnis des Arbeitsbereichs aufgelöst. Links, die mit ./ beginnen oder nur mit einem Dateinamen beginnen, werden relativ zum aktuellen Notebook aufgelöst.

Zusätzlich wird Markdown-Text, der http oder https enthält, jetzt automatisch in einen Link umgewandelt.

A link automatically created from Markdown text

Dies entspricht dem Verhalten anderer Notebook-Renderer, wie z. B. JupyterLab.

Dynamische Sichtbarkeit von Notebook-Toolbar-Labels

Die Notebook-Toolbar kann basierend auf der Breite der Editor-Gruppe entscheiden, ob das Label einer Aktion sichtbar sein soll, indem notebook.globalToolbarShowLabel auf dynamic gesetzt wird. Dabei werden zuerst die Labels von den ganz rechts liegenden Aktionsgruppen und dann die von der linken Seite ausgeblendet. Wenn die Editor-Gruppe immer noch zu schmal ist, wenn alle Labels ausgeblendet sind, werden die Aktionen in ein Überlaufmenü verschoben.

Die anderen Werte für notebook.globalToolbarShowLabel sind jetzt always und never.

Editor

Unicode-Hervorhebung

Alle unüblichen unsichtbaren Zeichen im Quellcode werden jetzt standardmäßig hervorgehoben.

Unicode Highlighting Example: Invisible character is highlighted with hover explanation

Darüber hinaus werden Zeichen, die mit ASCII-Zeichen verwechselt werden können, ebenfalls hervorgehoben.

Unicode Highlighting Example: Confusing character is highlighted with hover explanation

Sie können den Blogbeitrag "The Invisible JavaScript Backdoor" oder diesen Artikel der University of Cambridge lesen, um zu erfahren, wie unsichtbare oder verwechselbare Unicode-Zeichen in Unicode-Spoofing-Angriffen verwendet werden können.

Beachten Sie, dass diese Funktion nicht alle möglichen Unicode-Spoofing-Angriffe erkennt, da dies von Ihren Schriftart- und Lokalisierungseinstellungen abhängt. Außerdem erfolgt die Erkennung von mehrdeutigen Zeichen heuristisch. Um auf der sicheren Seite zu sein, sollten Sie den Arbeitsbereich-Vertrauensmodus von VS Code (Restricted Mode) verwenden, um Quellcode zu überprüfen, da in nicht vertrauenswürdigen Arbeitsbereichen alle Nicht-ASCII-Zeichen hervorgehoben werden.

Die Einstellungen editor.unicodeHighlight.invisibleCharacters, editor.unicodeHighlight.ambiguousCharacters oder editor.unicodeHighlight.nonBasicASCII können auf false gesetzt werden, um die entsprechende Funktion zu deaktivieren.

Einzelne Zeichen können von der Hervorhebung ausgeschlossen werden, und Zeichen in Kommentaren oder Text mit den folgenden Einstellungen:

  • editor.unicodeHighlight.allowedCharacters - Liste der spezifischen Zeichen, die nicht hervorgehoben werden sollen.
  • editor.unicodeHighlight.includeComments - Hervorhebung von Zeichen in Kommentaren aktivieren.

Darüber hinaus werden Markdown-Dokumente standardmäßig nicht hervorgehoben.

Mehrere Hover-Anbieter

Wenn mehrere Hover-Anbieter für ein Dokument vorhanden sind, wird der Hover nun angezeigt, sobald einer der Anbieter ein Ergebnis zurückgegeben hat, und mit den Ergebnissen der restlichen Anbieter aktualisiert, sobald diese eintreffen.

Vorher Nachher

Aufgaben

automationProfile-Einstellung

Die alten Einstellungen terminal.integrated.automationShell.* wurden als veraltet markiert und neue Einstellungen terminal.integrated.automationProfile.* wurden hinzugefügt. Dies ermöglicht mehr Flexibilität bei der Angabe von Eigenschaften von Terminals, die für Aufgaben verwendet werden, einschließlich Shell, Icon, Farbe und Shell-Argument.

Unterstützung für gulpfile.ts

Die integrierte Gulp-Erweiterung unterstützt jetzt die Erkennung von Aufgaben aus gulpfile.ts-Dateien.

Verbesserungen der NPM-Skriptansicht

Die Ansicht "NPM Scripts" zeigt mehr Details zu den Skripten an.

NPM Scripts view with script details

Es gibt auch eine neue Einstellung npm.scriptExplorerExclude, mit der Sie Skripte angeben können, die von der Ansicht "NPM Scripts" ausgeschlossen werden sollen.

Sprachen

TypeScript 4.5

VS Code wird jetzt mit TypeScript 4.5 ausgeliefert. Dieses Update bringt eine Reihe neuer Sprachfunktionen sowie Tooling-Verbesserungen und Fehlerbehebungen.

Mehr über TypeScript 4.5 können Sie im TypeScript-Blog lesen.

Methodensignatur-Vervollständigungen

Methodensignatur-Vervollständigungen ermöglichen es Ihnen, Methoden schnell zu überschreiben und Schnittstellenmethoden zu implementieren. Mit dieser Funktion werden beim Akzeptieren von Vorschlägen für Methoden (z. B. aus einer Superklasse) im Klassenkörper die gesamte Signatur der Methode eingefügt.

Wenn Sie TypeScript schreiben, fügt die Annahme des Vorschlags auch alle erforderlichen Importe für Typen hinzu, auf die in der Signatur verwiesen wird.

Diese Funktion erfordert TypeScript 4.5 im Arbeitsbereich und kann mit typescript.suggest.classMemberSnippets.enabled und javascript.suggest.classMemberSnippets.enabled aktiviert/deaktiviert werden.

JSX-Attribut-Vervollständigungen

Beim Vervollständigen von JSX-Attributen in JavaScript und TypeScript fügt VS Code nun automatisch den Attributwert ein.

Das Verhalten dieser Vervollständigungen kann mit javascript.preferences.jsxAttributeCompletionStyle und typescript.preferences.jsxAttributeCompletionStyle konfiguriert werden.

Mögliche Einstellungswerte sind:

  • auto - Leitet den Attributstil basierend auf seinem Typ ab. Strings verwenden attr="", während andere Typen attr={} verwenden.
  • braces - Immer geschweifte Klammern verwenden.
  • None - Nur den Attributnamen vervollständigen.

Entfernung der semantischen Hervorhebung für ältere TS-Versionen

Dieses Update entfernt die Unterstützung für semantische Hervorhebung bei Verwendung von TypeScript 4.1 oder älter in Ihrem Arbeitsbereich.

TypeScript 4.2 fügte native Unterstützung für semantische Hervorhebung hinzu. Bei älteren Versionen wurde die semantische Hervorhebung als TypeScript-Sprach-Plugin von VS Code implementiert. Das Entfernen des Plugins reduziert den Code, der gewartet und ausgeliefert werden muss.

Markdown-Vorschau benutzerdefinierter Editor

Sie können jetzt den Befehl Öffnen mit verwenden, um eine Markdown-Datei anstelle von Text als Markdown-Vorschau anzuzeigen.

Im Gegensatz zum Befehl Markdown: Vorschau öffnen öffnet Öffnen mit keinen neuen Editor-Tab, sondern ändert die Anzeige eines bereits geöffneten Editor-Tabs. Verwenden Sie Öffnen mit erneut, um die Datei zurück zur Standard-Textansicht zu wechseln.

Zusätzlich können Sie VS Code jetzt so konfigurieren, dass jede Markdown-Datei automatisch als Vorschau geöffnet wird, indem Sie die Einstellung workbench.editorAssociations verwenden.

"workbench.editorAssociations": {
  "*.md": "vscode.markdown.preview.editor"
}

Inkrementelle Aktualisierung der Markdown-Vorschau

Die integrierte Markdown-Vorschau aktualisiert sich nun intelligenter, während Sie tippen. Anstatt das gesamte Markdown-Vorschau-Dokument bei jeder Aktualisierung zu ersetzen, verwendet die Vorschau jetzt DOM-Diffing, um nur die Elemente im Vorschau-Dokument zu ersetzen, die sich geändert haben. Dies reduziert das Flackern, das manchmal beim Tippen auftrat.

JSON-Sprachindikator

Beim Bearbeiten einer JSON-Datei gibt es jetzt einen Sprachindikator {}, der anzeigt, ob der Inhalt gegen ein oder mehrere JSON-Schemas validiert wurde. Das Hovern über dem Indikator zeigt den Validierungsstatus und einen Link zum Öffnen des Schemas an.

JSON language selector

JSON-Schema-Caching

JSON-Schemas aus dem Schema-Store (json.schemastore.org) werden jetzt lokal zwischengespeichert. Dies spart Netzwerkbandbreite und hilft bei der Offline-Arbeit.

Verbesserung des Emmet-Befehls "Tag entfernen"

Der Befehl Emmet: Tag entfernen entfernt nun die Zeile mit dem Tag zusammen mit überschüssigen leeren Zeilen, falls zutreffend, wenn sich der Tag vor der Entfernung auf einer eigenen Zeile befindet. Er rückt auch die verbleibenden Zeilen korrekt neu ein, wenn sich leere Zeilen zwischen den zu entfernenden Tags befinden.

VS Code für das Web

Azure Repos

In diesem Meilenstein haben wir mit dem Azure DevOps-Entwicklungsteam zusammengearbeitet, um eine neue Tastenkombination zum Dateien-Hub in Azure Repos hinzuzufügen. Beim Durchsuchen eines Repositorys im Dateien-Hub können Sie . drücken, um das Repository in https://vscode.dev zu öffnen.

Wir haben auch einen neuen Einstiegspunkt zu Ihrem Azure Repos-Repository hinzugefügt. Sie können jetzt den neuen Menüeintrag Repository von Azure Repos öffnen... unter dem Menüeintrag Remote-Repositorys öffnen... im Remote-Picker verwenden, um sich von innerhalb von https://vscode.dev mit Ihrem Azure Repos-Repository zu verbinden.

Darüber hinaus können Sie jetzt ein Azure Repos-Repository über das ältere Azure DevOps-URL-Format (z. B. https://<org>.visualstudio.com) in vscode.dev öffnen, indem Sie der URL https://vscode.dev voranstellen.

Verbessertes Remote-Menü

Drei weitere Befehle werden nun im Remote-Menü angezeigt:

  • Remote-Arbeitsbereich schließen - Ändert den Arbeitsbereich zum leeren.
  • Visual Studio Code herunterladen - Gehen Sie zu https://visualstudiocode.de/download.
  • Zum Repository wechseln - Öffnet das Repository auf der Quellcodehost-Website, z. B. https://github.com für GitHub-Repositories.

Beiträge zu Erweiterungen

Java

Das Extension Pack for Java bietet jetzt ein In-Product-Willkommens-Erlebnis, das Ihnen bei der Konfiguration und dem Erlernen von Java in VS Code hilft. Die Walkthroughs umfassen die Installation der Java-Laufzeitumgebung und nützlicher Frameworks, das Öffnen und Debuggen Ihres Projekts sowie das Ausführen von Tests direkt in VS Code.

Extension Pack for Java walkthrough

Sie können sich auch die Java-Tutorials und Benutzerhandbücher unter https://visualstudiocode.de/docs/java ansehen, um den Einstieg zu erleichtern.

Jupyter

Leistungsverbesserungen

Es gab eine Reihe von Leistungsverbesserungen beim Start von Jupyter-Kernen, insbesondere für Python. Benutzer, die zuvor ein Notebook geöffnet haben, werden beim Starten eines Kernels eine doppelte Geschwindigkeit feststellen. Das Neustarten von Python-Kernen sollte ebenfalls schneller sein.

Weitere Details zu den Verbesserungen der Leistung finden Sie in den folgenden Issues:

  • Unterstützung für Pre-Warming von Kernen zur Verbesserung der Startleistung von Notebooks. (#7903)
  • Schnellere Aktivierung von Python-Umgebungen wie Conda. (#8342)
  • Vermeiden des Startens des Standardkernels beim Starten von Jupyter. (#8185)
  • Vermeiden der Suche nach IPyKernel, wenn es bereits einmal gefunden wurde. (#8196)
  • Vermeiden der unnötigen Suche nach Jupyter-Paketen, wenn die Jupyter-Laufzeitumgebung zum Starten von Kernen nicht erforderlich ist. (#8350, #8352)

Verbesserungen bei der Behandlung von Kernel-Fehlern

Eine Diagnosemeldung zusammen mit einer Schnellkorrektur wurde hinzugefügt, um vor der Verwendung von !pip install bei der Installation von Python-Paketen zu warnen. Die Schnellkorrektur hilft Benutzern, den richtigen Befehl %pip install zu wählen.

Mehrere Verbesserungen wurden vorgenommen, um bessere und aussagekräftigere Fehlermeldungen zu liefern, wenn Kernel beim Starten oder Stoppen während der Ausführung fehlschlagen. Fehler werden nun in den Zellenausgaben zusammen mit Anweisungen zur Behebung des Problems angezeigt. Dadurch wird sichergestellt, dass Benutzer sich des Problems bewusst sind und es beheben können, falls sie den Fehler, der unten rechts in VS Code angezeigt wird, übersehen.

Python

Eingeschränkte Unterstützung für nicht vertrauenswürdige und virtuelle Arbeitsbereiche

Die Python-Erweiterung bietet jetzt eingeschränkte Unterstützung für nicht vertrauenswürdige Arbeitsbereiche (siehe Workspace Trust) oder befindet sich auf einem virtuellen Dateisystem (z. B. wenn ein Remote-GitHub-Repository geöffnet ist). In solchen Fällen wird nur eine teilweise IntelliSense bereitgestellt, und andere Funktionen der Erweiterung sind nicht verfügbar.

  • Hover, Vervollständigung in derselben Datei und Vervollständigung für integrierte Elemente wie print sind verfügbar, aber die Erweiterung ist auf die Arbeit mit Ihren aktuell geöffneten Dateien beschränkt.
  • Für nicht vertrauenswürdige Arbeitsbereiche wird nur der Pylance-Sprachserver unterstützt.
  • Für virtuelle Arbeitsbereiche werden nur Jedi und Pylance unterstützt.

Das Sprachelement in der Statusleiste wird aktualisiert, um diese Situationen anzuzeigen.

Limited support for Python in an untrusted workspace

Modul-Umbenennungsrefactoring

Mit den Python- und Pylance-Erweiterungen können Sie Module jetzt einfacher umbenennen. Sobald Sie ein Python-Modul umbenennen, werden Sie gefragt, ob Sie alle Importe und Referenzen in Ihrem Code ändern möchten. Wenn Sie unsicher sind, können Sie zuerst eine Vorschau der Änderungen anzeigen, bevor Sie eine Entscheidung treffen. Sobald Sie sich sicher sind, können Sie Refactoring anwenden oder Refactoring verwerfen auswählen, um die vorgeschlagenen Änderungen nicht anzuwenden.

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.63 beinhalten:

  • Sie können jetzt einen Ordner in einem Container öffnen, wenn Sie auf einem SSH-Server arbeiten, mit dem Befehl Im Container neu öffnen.
  • Die verbesserte Sicherheit der weitergeleiteten Ports vermeidet unsichere Ports.
  • Die konfigurierbare WSL-Verbindungsmethode ermöglicht es Ihnen, wsl.exe oder eine Socket-Verbindung zur Kommunikation mit dem Server zu verwenden.
  • Videos zur erweiterten Containerkonfiguration, die zeigen, wie Sie den Standardspeicherort Ihres Projekts ändern und die Leistung unter Windows verbessern.

Sie können sich über neue Erweiterungsfunktionen und Fehlerbehebungen in den Release Notes für Remote Development informieren.

GitHub Pull Requests und Issues

Die Arbeit an der GitHub Pull Requests and Issues-Erweiterung, mit der Sie Pull-Anfragen und Issues bearbeiten, erstellen und verwalten können, wird fortgesetzt. Sehen Sie sich das Änderungsprotokoll für die Version 0.34.0 der Erweiterung an, um die Highlights zu sehen.

Erweiterungs-Authoring

Aktualisierte Struktur der API-Vorschläge

Wir haben die Verwaltung von API-Vorschlägen geändert. Zuvor gab es eine einzelne Datei, die alle Vorschläge enthielt: vscode.proposed.d.ts. Diese Datei war angewachsen und es war schwierig zu erkennen, welche Vorschläge eine Erweiterung verwendete und ob ein bestimmter Vorschlag bereits in der stabilen API enthalten war. Jetzt gibt es eine Datei pro Vorschlag.

Zum Beispiel

Jeder Vorschlag hat einen eindeutigen Namen, und Erweiterungen, die eine vorgeschlagene API verwenden möchten, müssen diese Namen in ihrer package.json auflisten. Die Eigenschaft enableProposedApi in package.json wird durch die neue Eigenschaft enabledApiProposals ersetzt, die ein Array von Zeichenketten mit Vorschlagsnamen ist und IntelliSense und Validierungsunterstützung bietet.

IntelliSense when authoring the enabledApiProposals property

Der aktualisierte Workflow für API-Vorschläge sollte wie folgt aussehen:

  1. Finden Sie einen Vorschlag, den Sie ausprobieren möchten, und fügen Sie seinen Namen zu package.json#enabledApiProposals hinzu.
  2. Verwenden Sie das neueste vscode-dts und führen Sie vscode-dts dev aus. Es lädt die entsprechenden d.ts-Dateien in Ihren Arbeitsbereich herunter.
  3. Sie können nun gegen den Vorschlag programmieren.

Eine detaillierte Migrationsanleitung und Beispielmigrationen finden Sie in Issue #136964. Beachten Sie auch, dass die Einschränkungen für die Verwendung von vorgeschlagenen APIs unverändert geblieben sind. Erweiterungen, die eine vorgeschlagene API verwenden, können nicht veröffentlicht und nicht als solche verwendet werden.

Verbesserungen der Quick Pick API

In dieser Iteration finalisieren wir einige APIs für die QuickPick in VS Code.

Inline-Schaltflächen für QuickPickItem

Die Bereitstellung von Rich-Input-Erlebnissen ist ein Ziel unserer Erweiterungs-API, und die Vertrautheit der VS Code Quick Pick ermöglicht leistungsstarke und dennoch einfache UI-Flows. Eine Neuerung ist, dass Erweiterungen jetzt Schaltflächen zu einzelnen QuickPickItems hinzufügen können.

QuickPickItem buttons

Das Klicken auf eine Schaltfläche löst das Ereignis onDidTriggerItemButton aus, das auf einem QuickPick-Objekt existiert. Wir freuen uns darauf zu sehen, wie Sie diese Schaltflächen in Ihren Erweiterungen verwenden werden.

Möglichkeit, die Scroll-Position beim Aktualisieren von Elementen beizubehalten

Zusammen mit der Möglichkeit, Schaltflächen zu QuickPickItems hinzuzufügen, möchten Sie vielleicht auch die Scroll-Position beim Aktualisieren der Elemente beibehalten. Dies ist ein häufiger Anwendungsfall für Erweiterungen, die möchten:

  • Implementieren einer Funktion "Dieses Element aus der Liste entfernen" (z. B. Strg/Cmd + P x QuickPickItemButton).
  • Implementieren einer Funktion "Dieses Element auf irgendeine Weise umschalten" (z. B. ein Befehl "Snippet einfügen").
  • Asynchrones Laden von Elementen in der Quick Pick.

Die Eigenschaft keepScrollPosition des QuickPick-Objekts, das von window.createQuickPick() zurückgegeben wird, ermöglicht es Ihnen zu steuern, ob die Scroll-Position (cursorTop) in der Quick Pick zum Anfang der Liste zurückkehrt oder nicht.

Verbesserungen der Authentifizierungs-API

In dieser Iteration finalisieren wir mehrere APIs im Zusammenhang mit der Authentifizierung in VS Code.

Erzwingen der Erstellung einer neuen Sitzung

Manchmal kann eine Sitzung, die Sie mit authentication.getSession() erhalten, für einige Ressourcen gültig, für andere aber nicht, und durch erneutes Durchlaufen des Anmeldevorgangs kann diese Situation behoben werden.

Ein Beispiel ist die Unterstützung von SAML (Security Assertion Markup Language) für GitHub Single Sign On. Standardmäßig hat ein Token, das für Sie mit dem repo-Scope generiert wurde, die Berechtigung, auf Ihre eigenen persönlichen Repositories zuzugreifen. Wenn Sie sich jedoch in einer Organisation mit aktiviertem GitHub Single Sign On befinden, müssen Sie einer Sitzung ausdrücklich die Berechtigung zum Zugriff auf Repositories in dieser Organisation erteilen.

In diesem Beispiel kennt der GitHub-Authentifizierungsanbieter den Unterschied zwischen einem Token, das ordnungsgemäß für den Zugriff auf das, was Sie versuchen, mit SAML gesichert ist, und einem, das es nicht ist, nicht. Um dieses Verhalten zu korrigieren, können Sie jetzt die Erstellung einer neuen Sitzung erzwingen.

AuthenticationGetSessionOptions hat jetzt eine Eigenschaft forceNewSession, mit der Sie den Benutzer auffordern können, sich erneut anzumelden. Wenn Sie diese auf true setzen, sieht der Benutzer

Forcing sign in

Sie können auch ein Objekt mit einer detail-Zeichenkette angeben, wenn Sie dem Benutzer eine beschreibendere Nachricht anzeigen möchten.

Stille Abfrage einer Sitzung, falls eine Erweiterung eine hat

Ein häufiges Muster, das wir gesehen haben, ist, dass einige Erweiterungen, wenn sie aktiviert werden, prüfen, ob sie eine Authentifizierungssitzung zur Verfügung haben. Wenn ja, nutzen sie diese, um Daten vorab zu laden und andere Aufgaben auszuführen, um die Leistung später zu verbessern. Der Nachteil war, dass, wenn ein Benutzer dieser Erweiterung keinen Zugriff auf eine Authentifizierungssitzung gewährt hat, ein Abzeichen im Konto-Menü angezeigt wurde und ein Eintrag im Menü hinzugefügt wurde, der den Benutzer auffordert, sich anzumelden.

Das ist in einigen Fällen in Ordnung, in anderen Fällen ist es jedoch unerwünscht und überlädt den Bildschirm des Benutzers. Um dabei zu helfen, gibt es eine neue Eigenschaft in AuthenticationGetSessionOptions namens silent, mit der Sie eine Sitzung anfordern können, ohne anzuzeigen, dass die Erweiterung sie angefordert hat. Auf diese Weise kann die Erweiterung das tun, was sie möchte, wenn sie die Möglichkeit hat, eine Sitzung zu erhalten, aber wenn nicht, belästigt sie den Benutzer nicht.

Hinweis: Diese API gibt nur eine authentifizierte Sitzung zurück, wenn der Erweiterung bereits zuvor Zugriff auf die Sitzung gewährt wurde (d. h. es handelt sich um eine "vertrauenswürdige Erweiterung"). Einer Erweiterung wird niemals eine Sitzung gewährt, der der Benutzer nicht zugestimmt hat.

Verbesserungen des Einstellungseditors

Geordnete Einstellungen

Einzelne Einstellungen können jetzt mit dem Feld order geordnet werden. Geordnete Einstellungen stehen immer vor ungeordneten innerhalb derselben Kategorie, und die Reihenfolge ist relativ.

Unterstützung für ungruppierte Kategorien

Einstellungen können auch unter dem Haupt-Erweiterungsheader anstatt einer spezifischen Kategorie gruppiert werden. Dazu setzen Sie den Kategorietitel einer der Kategorien auf denselben Wert wie den Anzeigenamen der Erweiterung.

Beachten Sie im folgenden Beispiel, dass die Einstellung Conf > Sprache: Größe anzeigen direkt unter der Überschrift Konfigurationsbeispiel steht.

Settings appearing directly under the extension header

Unterstützung für Zahlen- und Ganzzahl-Objekte

Objekte mit nicht-nullable Zahlen-/Ganzzahlwerten werden jetzt im Einstellungseditor unterstützt.

An object setting in the Settings editor with number/integer values

Neuer Typsignatur für executeCommand

In früheren Versionen von VS Code wurde vscode.commands.executeCommand so typisiert, dass es immer ein Promise eines potenziell undefinierten Werts zurückgab.

export function executeCommand<T>(command: string, ...rest: any[]): Thenable<T | undefined>;

Nicht alle Befehle können jedoch undefined zurückgeben. Beispielsweise geben Befehle, die ein Array von Elementen zurückgeben, anstelle von undefined ein leeres Array zurück, wenn keine Ergebnisse vorhanden sind. In diesen Fällen mussten Sie einen unschönen Cast verwenden oder unnötige Prüfungen hinzufügen, um typsicheren Code zu schreiben.

Um dies zu beheben, haben wir die Typisierungen für executeCommand aktualisiert, um expliziter zu sein.

export function executeCommand<T = unknown>(command: string, ...rest: any[]): Thenable<T>;

Das bedeutet, dass Sie, wenn ein Befehl undefined zurückgeben kann, explizit | undefined als Teil des Typparameters angeben müssen.

vscode.commands.executeCommand<vscode.CallHierarchyItem | undefined>('vscode.prepareCallHierarchy', ...);

Diese Änderung betrifft nur die Typisierung von executeCommand und ändert nicht das Verhalten dieser Funktion.

Aktualisierung von vscode.d.ts für exactOptionalPropertyTypes

Wir haben die Typisierungen in vscode.d.ts aktualisiert, um die Strictness-Option exactOptionalPropertyTypes von TypeScript besser zu unterstützen. Diese Arbeit umfasste:

  • Klarstellung, welche optionalen Eigenschaften undefined zugewiesen werden können.
  • Konsistentere Verwendung von ? im Vergleich zu | undefined.

Wenn Sie exactOptionalPropertyTypes mit Ihrer Erweiterung verwenden, teilen Sie uns bitte mit, wenn Sie Probleme mit den vscode.d.ts-Typisierungen haben.

HTML-Benutzerdefinierte Daten aus URIs

Benutzerdefinierte Daten ermöglichen es Benutzern und Erweiterungen, die HTML-Sprachunterstützung um neue HTML-Tags und Attribute zu erweitern.

In dieser Version akzeptiert der HTML-Custom-Data-Beitrag auch Dokument-URIs. Sie können dies verwenden, um die benutzerdefinierten Daten zur Laufzeit über ein Dokument von einem TextDocumentContentProvider bereitzustellen.

Überschreibungen von Konfigurationsstandards

Sie können jetzt Standardwerte anderer registrierter Konfigurationen über den configurationDefaults-Beitragspunkt in package.json überschreiben. Das folgende Snippet überschreibt beispielsweise das Standardverhalten der Einstellung files.autoSave, um Dateien beim Fokuswechsel automatisch zu speichern.

"configurationDefaults": {
      "files.autoSave": "onFocusChange"
}

Hinweis: Konfigurationen mit den Geltungsbereichen application oder machine können nicht überschrieben werden.

Inhalt im Ausgabekanal ersetzen

In diesem Meilenstein kann eine neue API replace für das OutputChannel-Objekt den Inhalt im Ausgabekanal ersetzen.

/**
 * Replaces all output from the channel with the given value.
 *
 * @param value A string, falsy values will not be printed.
 */
replace(value: string): void;

Timeout von workspaceContains

Wenn Sie ein Aktivierungsereignis vom Typ workspaceContains: mit einem Glob-Muster verwenden, startet VS Code eine Dateinamensuche im Arbeitsbereich, um eine Datei zu finden, deren Name mit dem angegebenen Glob-Muster übereinstimmt. Sobald ein übereinstimmender Dateiname gefunden wird, wird die Erweiterung aktiviert. Wenn innerhalb von 7 Sekunden keine übereinstimmenden Dateinamen gefunden werden, bricht VS Code die Suche jetzt ab und die Erweiterung wird nicht aktiviert.

Veröffentlichung von Pre-Release-Erweiterungen

VS Code unterstützt jetzt, dass Erweiterungsautoren Pre-Releases ihrer Erweiterungen über vsce veröffentlichen können, indem sie das Flag --pre-release übergeben. Das bedeutet, dass Sie Ihre neuesten Funktionen Benutzern zur Verfügung stellen können, die sich für die Installation von Pre-Releases entschieden haben, und frühzeitig Feedback erhalten, bevor die offizielle Erweiterungsversion veröffentlicht wird.

vsce publish --pre-release

Der VS Code Marketplace unterstützt nur major.minor.patch für Erweiterungsversionen und unterstützt noch keine semver Pre-Release-Tags. Wir empfehlen daher, dass Erweiterungen major.EVEN_NUMBER.patch für Release-Versionen und major.ODD_NUMBER.patch für Pre-Release-Versionen verwenden. Zum Beispiel: 0.2.* für Releases und 0.3.* für Pre-Releases. VS Code aktualisiert Erweiterungen automatisch auf die höchste verfügbare Version. Selbst wenn ein Benutzer sich für eine Pre-Release-Version entschieden hat, wird dieser Benutzer auf die veröffentlichte Version aktualisiert, sobald eine Erweiterung mit einer höheren Version veröffentlicht wird.

Weitere Informationen zu Pre-Release-Erweiterungen finden Sie im Thema Pre-Release Extensions.

Language Server Protocol

Eine neue nächste Version des Language Server Protocol, zusammen mit den entsprechenden npm-Modulen, wurde veröffentlicht. Neben verschiedenen kleineren Verbesserungen enthält die neue Version eine vorgeschlagene Implementierung für Inline-Werte.

Debug Adapter Protocol

Neue wichtige Kategorie für das Output-Ereignis

Das Output-Ereignis des Debug Adapter Protocol wird verwendet, um die stdout- und stderr-Streams des Debuggers sowie Informationsmeldungen vom Debugger an die Debug Console zu senden. Diese Nachrichtenflut kann für einen Benutzer schwer zu verarbeiten sein und kritische Dinge können unbemerkt bleiben. Aus diesem Grund wurde der Kategorie important zum Output-Ereignis hinzugefügt. Diese kann von einem Debug-Adapter verwendet werden, um kritische Meldungen anzuzeigen, die auffallen und vom Benutzer nicht übersehen werden sollten. Die Kategorie important ist ein Hinweis für den Client, wichtige Informationen in einer gut sichtbaren Benutzeroberfläche anzuzeigen, z. B. als Popup-Benachrichtigung. Da diese Kategorie ein Hinweis ist, können Clients den Hinweis ignorieren und die Kategorie default (console) annehmen.

Klarstellungen und Verbesserungen für die Ausführungssteuerungsanforderungen

Zuvor legte das Debug Adapter Protocol fest, dass alle "Ausführungssteuerungs"-Anforderungen (continue, next, stepIn, stepOut, stepBack, reverseContinue) auf einem einzelnen Thread ausgeführt werden, eine Implementierung jedoch entscheiden konnte, das Thread-Argument zu ignorieren und auf allen Threads auszuführen. Da diese schwammige "Einzel-Thread"-Semantik nicht wirklich nützlich ist, implementieren Debug-Adapter typischerweise etwas Nützlicheres.

  • "step"-Anforderungen, die den aktuellen Thread schrittweise durchlaufen, während andere Threads frei weiterlaufen können, indem sie fortgesetzt werden.
  • "continue"-Anforderungen, die alle Threads fortsetzen.

Da die aktuelle Spezifikation für Ausführungssteuerungsanforderungen unpraktisch ist, haben wir die Spezifikation für alle Ausführungssteuerungsanforderungen (continue, next, stepIn, stepOut, stepBack, reverseContinue) geändert, sodass sie mit dem übereinstimmt, was typischerweise implementiert wird.

Zusätzlich haben einige Debug-Adapter Bedarf an einer "alternativen Semantik", bei der step oder continue nur auf dem aktuellen Thread ausgeführt werden, aber alle anderen Threads im angehaltenen Zustand verbleiben. Für dieses "alternative Verhalten" wurde allen Ausführungssteuerungsanforderungen eine neue optionale Eigenschaft singleThread hinzugefügt. Eine entsprechende neue Fähigkeit supportsSingleThreadExecutionRequests muss von einem Debug-Adapter verwendet werden, um dem Client anzuzeigen, dass die Ausführungssteuerungsanforderungen die Eigenschaft singleThread unterstützen.

Vorgeschlagene Erweiterungs-APIs

Jeder Meilenstein bringt neue vorgeschlagene APIs mit sich, und Erweiterungsautoren können sie ausprobieren. Wie immer freuen wir uns über Ihr Feedback. Hier sind die Schritte, um eine vorgeschlagene API auszuprobieren:

  1. Suchen Sie nach einem Vorschlag, den Sie ausprobieren möchten, und fügen Sie dessen Namen zu package.json#enabledApiProposals hinzu.
  2. Verwenden Sie das neueste vscode-dts und führen Sie vscode-dts dev aus. Es lädt die entsprechenden d.ts-Dateien in Ihren Arbeitsbereich herunter.
  3. Sie können nun gegen den Vorschlag programmieren.

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.

QuickPickItem-Trennzeichen

In dieser Iteration führen wir die Möglichkeit ein, dass Erweiterungen Trennzeichen (auch bekannt als "Kategorien") zu einem Quick Pick über eine vorgeschlagene API (vscode.proposed.quickPickSeparators.d.ts) hinzufügen können. Dies ist nützlich, um Elemente zu gruppieren oder einfach etwas Abstand zwischen den Elementen zu schaffen.

Quick Pick separators

Um Ihrem vorhandenen Quick Pick ein Trennzeichen hinzuzufügen, können Sie ein neues QuickPickItem zu Ihrer vorhandenen Liste von Elementen hinzufügen, aber die Eigenschaft kind auf dem QuickPickItem angeben und auf QuickPickItemKind.Separator setzen.

Im obigen Beispiel würden Sie das folgende Objekt zu Ihrer Liste von Elementen hinzufügen

{
    label: 'APIs',
    kind: QuickPickItemKind.Separator
}

Wenn Sie keine kind-Eigenschaft angeben oder sie auf QuickPickItemKind.Default setzen, wird das Element als normales QuickPickItem behandelt.

Sie können Feedback zu dieser API in Issue #74967 abgeben.

Bemerkenswerte Fehlerbehebungen

  • 5989 Kann keine Aufgaben auf einem Remote-Windows-Computer mit OpenSSH ausführen
  • 45629 Google Japanese Input (IME) unter Mac - Vorschläge überlappen sich mit Text
  • 131345 Deprecation-Warnung für Standardeinstellungen mit \n bricht die JSON-Datei
  • 133521 Aufforderung zur Installation von nvm, obwohl es bereits installiert ist
  • 133623 Debug-Symbolleiste wird nicht aktualisiert, wenn der fokussierte Thread nicht mehr existiert
  • 134254 Kann kein Koreanisch tippen. Seltsam oder fehlend
  • 134429 Zlib-Fehler: ungültige Distanz zu weit zurück
  • 135838 Ich kann keine Datei speichern, wenn eine andere Datei mit längerem Namen existiert
  • 136684 Elemente des Aufrufstapels öffnen keine Tabs mit korrektem Inhalt
  • 137012 Emmet funktioniert nicht in js/jsx-Dateien für VS Code 1.62.2 (Universal)
  • 138153 Perf: _removePropertiesWithPossibleUserInfo kostet ~10% der Ladezeit eines Renderers
  • 138302 Perf: Editor-Konfiguration erst nach Registrierung von Erweiterungen aktualisieren
  • 138517 vscode.dev kann keine Branches in privaten Repositories wechseln

Vielen Dank

Last but not least, ein großes Danke an die Mitwirkenden von VS Code.

Web-Erweiterungen

Erweiterungsautoren für die Ermöglichung von Erweiterungen, die Code als Web-Erweiterungen ausführen (die folgende Liste gilt zwischen dem 2. November und dem 6. Dezember)

Fehlerverfolgung

Beiträge zu unserer Fehlerverfolgung

Pull-Anfragen

Beiträge zu vscode

Beiträge zu vscode-codicons

Beiträge zu vscode-css-languageservice

Beiträge zu vscode-eslint

Beiträge zu vscode-extension-samples

Beiträge zu vscode-html-languageservice

Beiträge zu vscode-json-languageservice

Beiträge zu vscode-languageserver-node

Beiträge zu vscode-pull-request-github

Beiträge zu vscode-vsce

Beiträge zu language-server-protocol

Beiträge zu monaco-editor

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