Oktober 2022 (Version 1.73)
Update 1.73.1: Das Update behebt diese Probleme.
Downloads: Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap
Willkommen zur Oktober 2022-Version von Visual Studio Code. Es gibt viele Updates in dieser Version, die Ihnen hoffentlich gefallen werden. Einige der wichtigsten Highlights sind:
- Ordner für Suche einschließen/ausschließen - Ordner schnell im Baumansicht für die Suche festlegen.
- Befehlszentrale-Modus-Verknüpfungen - Zeigt häufig verwendete Modi vor der Liste der zuletzt verwendeten Dateien an.
- Verbesserungen am Merge-Editor - Zugriff auf die Option "Kombination", um Konflikte automatisch zusammenzuführen.
- Automatische Markdown-Link-Updates - Datei- und Bildlinks werden bei Umbenennung/Verschiebung aktualisiert.
- Mehr Audio-Hinweise - Aufgabe abgeschlossen oder fehlgeschlagen, Terminal-Schnellkorrektur verfügbar.
- vscode.dev Schutz-Branch-Workflow - Neuen Branch erstellen, wenn in einen geschützten Branch committet wird.
- Neue Python-Erweiterungen - Neue eigenständige Erweiterungen für isort, Pylint und Flake8.
- Dev Container-Vorlagen - Neue Dev Container basierend auf vorhandenen Vorlagen erstellen.
Wenn Sie diese Release Notes online lesen möchten, gehen Sie zu Updates auf code.visualstudio.com.
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.
Barrierefreiheit
Neue Audio-Hinweise
Es gibt neue Audio-Hinweise, die bei Aufgaben und dem Terminal helfen.
- Aufgabe abgeschlossen - Töne, die signalisieren, dass eine Aufgabe abgeschlossen ist (gesteuert durch die Einstellung
audioCues.taskCompleted). - Aufgabe fehlgeschlagen - Töne, wenn eine Aufgabe fehlschlägt (
audioCues.taskFailed). - Terminal Schnellkorrektur - Wenn eine Schnellkorrektur in der aktuellen Zeile verfügbar ist (
audioCues.terminalQuickFix).
Zeilenumbruch im Screenreader-Modus
Der Zeilenumbruch wurde deaktiviert, wenn VS Code im Screenreader-Modus ausgeführt wird, um eine verschlechterte Screenreader-Erfahrung zu verhindern. Dies wurde behoben und kann über editor.wordWrap aktiviert werden.
Zugänglichkeitseinstellungs-Tag
Ein accessibility-Tag ist nun verfügbar, um die Auffindbarkeit von Barrierefreiheits-bezogenen Einstellungen zu verbessern.
Der Befehl Einstellungen: Barrierefreiheitseinstellungen öffnen öffnet den Einstellungseditor mit dem Filter @tag:accessibility.
Workbench
Ordner für die Suche einschließen und ausschließen
Beim Rechtsklicken auf einen Ordner in der Baumansicht der Suchergebnisse gibt es nun zwei neue Optionen im Kontextmenü.
-
Die Auswahl von Suchergebnis auf Ordner beschränken fügt den ausgewählten Ordnerpfad/die Pfade zum Textfeld zu schließende Dateien hinzu. Das Hinzufügen eines Pfads zu diesem Textfeld beschränkt die Suchergebnisse auf diejenigen, die den aufgelisteten Pfaden oder Mustern entsprechen.

Thema: GitHub Dark Dimmed (Vorschau auf vscode.dev)
-
Die Auswahl von Ordner von Suche ausschließen fügt den ausgewählten Ordnerpfad/die Pfade zum Textfeld auszuschließende Dateien hinzu. Das Hinzufügen eines Pfads hier schließt alle Suchergebnisse aus, die den aufgelisteten Pfaden oder Mustern entsprechen.

Thema: GitHub Dark Dimmed (Vorschau auf vscode.dev)
Befehlszentrale-Modus-Verknüpfungen
Ein neuer oberer Bereich wurde zur Befehlszentrale hinzugefügt, um die Navigation zu Dateien, das Ausführen von Befehlen usw. zu erleichtern.
Diese kurze Liste von Modi bietet auch Tastenkombinations-Hinweise, sodass Sie direkt zu Ihren am häufigsten verwendeten Modi springen können (z. B. Datei wechseln), ohne die Befehlszentrale durchlaufen zu müssen.
Die Befehlszentrale-UI wird standardmäßig nicht in der Titelleiste angezeigt, aber Sie können sie über die Einstellung Fenster: Befehlszentrale (window.commandCenter) oder durch Rechtsklick auf die Titelleiste und Aktivieren von Befehlszentrale aktivieren.
Indikatoren für Workspace-Vertrauen und Richtlinien im Einstellungseditor
Einstellungen, die aufgrund eines eingeschränkten Workspace-Modus oder weil sie unter einer Organisationsrichtlinie verwaltet werden, nicht angewendet werden, verwenden nun Indikatoren, um ihren Status anzuzeigen. Der Benutzer kann Workspace-Einstellungen auch in einem eingeschränkten Workspace-Modus lesen und schreiben (was mit der Datei settings.json immer möglich war), aber der Wert der Workspace-Einstellung wird bei der Berechnung des endgültigen Einstellungswerts für einen eingeschränkten Workspace nicht berücksichtigt.
Es gab auch einige Anpassungen am Standard-Hell-Thema, mit klarerer Codicon-Darstellung im Indikatorbereich und engeren Fokusrändern.

Standard-Zustand für Zusammenklappen der Gliederung
Es gibt eine neue Einstellung outline.collapseItems, die den Standard-Zustand für das Zusammenklappen von Elementen in der Gliederungsansicht steuert. Der Standardwert ist false, was bedeutet, dass die Gliederungselemente standardmäßig erweitert sind. Setzen Sie ihn auf true, um Gliederungselemente standardmäßig zusammengeklappt zu haben. Diese Einstellung kann pro Sprache festgelegt werden und funktioniert auch für Notebooks.
Anordnung des Ansichtsmenüs
Im Menü "Ansicht" der VS Code-Menüleiste war die letzte Gruppe eine wachsende Liste von Editoraktionen. Um das Wachstum des Menüs und die Funktionalität auszugleichen, wurden die hauptsächlich erscheinungsbezogenen Elemente unter das Untermenü Darstellung verschoben. Die Optionen Zeilenumbruch und Sticky Scroll wurden an ihren ursprünglichen Positionen am unteren Rand des Menüs belassen.

Thema: GitHub Light Default (Vorschau auf vscode.dev)
Abgerundete Ecken bei Eingabe-UI
Textfelder, Textbereiche und Dropdowns weisen nun abgerundete Ecken auf, um das gleiche Styling wie bei den Schaltflächen in einer früheren Version zu erhalten.

Stil-Updates für Quick-Pick-Listen
Das Listen-Styling der Quick-Pick-UI wurde leicht überarbeitet mit abgerundeten Ecken und vergrößertem linken/rechten Rand.
Aktualisierte Codicons für Listenansichten
Flache Listen- und Baumlistenansichten verwenden nun besser lesbare Codicons, um den Listentyp darzustellen.
Vordergrundfarbe der sekundären Seitenleiste
Die sekundäre Seitenleiste ahmt im Allgemeinen das Theming der primären Seitenleiste nach, aber nicht alle Themen-Schlüssel wurden richtig übernommen. Die sekundäre Seitenleiste verwendet nun korrekt den "sideBar.foreground"-Themenschlüssel.
Unterhalb der primären Seitenleiste rechts mit dem Explorer und der sekundären Seitenleiste links mit der Gliederungsansicht werden die gleichen rosa Vordergrundfarben verwendet.

Thema: GitHub Light Default (Vorschau auf vscode.dev)
Keine Benachrichtigungen mehr über "Zu viele Faltungsbereiche"
Aus Leistungsgründen begrenzen wir die Anzahl der im Editor angezeigten Faltungsbereiche auf 5000. Die Grenze kann über die Einstellung editor.foldingMaximumRegions konfiguriert werden. Wenn die Grenze überschritten wird, zeigte VS Code eine Benachrichtigung an. Nun zeigt der Sprachstatus-Hover in der Statusleiste diese Informationen an.

Standard-Faltungsprovider
Normalerweise versucht VS Core, die Ergebnisse zusammenzuführen, wenn mehrere Faltungsprovider für eine Sprache aktiv sind. Wenn es widersprüchliche Bereiche gibt, werden einige Bereiche verworfen. Darüber hinaus können nicht alle Faltungsprovider mit anderen Providern kombiniert werden.
Die neue Einstellung editor.defaultFoldingProvider ermöglicht die Auswahl des zu verwendenden Faltungsproviders. Der Name des Providers ist die Erweiterungs-ID ({publisher}.{extension}) der Erweiterung, die ihn bereitstellt.
Das folgende Beispiel legt den Faltungsprovider der (hypothetischen) Erweiterung aeschli.better-folding als Standard für JavaScript fest.
"[javascript]": {
"editor.defaultFoldingRangeProvider": "aeschli.better-folding"
}
Pro Ausgabekanal einstellbarer Log-Level
Sie können jetzt den Log-Level pro Log-Ausgabekanal mit dem Befehl Entwickler: Log-Level festlegen... festlegen. Dies ist nützlich, wenn Sie mehr Protokolle nur von einem bestimmten Log-Ausgabekanal sehen möchten. Der Befehl zeigt zuerst die Liste der Ausgabekanäle an und nach der Auswahl werden Sie aufgefordert, den Log-Level festzulegen.

Sie können den Log-Level auch pro Erweiterung über die Befehlszeile festlegen. Dies ist nützlich, wenn Sie mehr Protokolle von einer bestimmten Erweiterung sehen möchten. Das folgende Skript ermöglicht es Ihnen beispielsweise, VS Code mit dem Standard-Log-Level debug für die Log-Ausgabekanäle der Git-Erweiterung zu starten.
code --log vscode.git:debug
Neuer Befehl list.collapseAllToFocus für Baumansichten
Ein neuer Befehl list.collapseAllToFocus ermöglicht das rekursive Zusammenklappen des aktuell fokussierten Baumobjekts. Dies ist nützlich, wenn Sie alle Unterelemente eines Baumobjekts zusammenklappen möchten, das nicht die Wurzel ist. Es gibt keine Standard-Tastenkombination für den Befehl, aber Sie können Ihre eigene über den Tastenkombinationseditor hinzufügen (⌘K ⌘S (Windows, Linux Ctrl+K Ctrl+S)).
Merge-Editor
In diesem Meilenstein haben wir die Verfeinerung des Merge-Editors fortgesetzt, und dieses Update enthält mehrere Fehlerbehebungen und einige neue Funktionen.
Beide Seiten akzeptieren hängt Konflikte an
Mit dieser Version können sowohl Eingehend akzeptieren als auch Aktuell akzeptieren immer ausgewählt werden. Wenn beide Optionen gewählt werden, hängt der Merge-Editor die entsprechenden geänderten Zeilen an.
Im kurzen Video unten wird RelativePattern zweimal importiert, da beide Zeilen akzeptiert werden.

Wenn der Konflikt ohne Konflikte auf Zeichenebene gelöst werden kann, wird die Option Kombination akzeptieren angezeigt und kann verwendet werden, um den Konflikt automatisch zu lösen.
Im Video unten werden beide Symbole in die gleiche Import-Anweisung importiert.

Diff-Dekorationen gegen Basis
Wenn die Basisansicht geöffnet wird, wird ein Diff zwischen der aktuell fokussierten Seite und der Basis angezeigt. Diese Diff-Ansicht kann verwendet werden, um die Änderungen in Eingehend und Aktuell besser zu verstehen.

Verbesserungen am Diff-Algorithmus
Der Standard-Diff-Algorithmus für den Merge-Editor wurde geändert. Der neue Diff-Algorithmus ist für Merge-Szenarien optimiert. In gängigen Fällen werden die Anzahl der Hunks minimiert und die Einfügepositionen optimiert. Falls der neue Algorithmus Probleme verursacht, kann die Einstellung "mergeEditor.diffAlgorithm": "smart" verwendet werden, um zum vorherigen Algorithmus zurückzukehren (Standard ist jetzt experimental).
Die folgenden Screenshots zeigen die Verbesserungen für Einfügungen. Beachten Sie, dass beide Diffs korrekt sind, aber das neue Verhalten den eingefügten Text deutlicher hervorhebt.
Altes Verhalten

Neues Verhalten

Der neue Diff-Algorithmus ist derzeit nur standardmäßig im Merge-Editor aktiviert. Sie können "diffEditor.diffAlgorithm": "experimental" einstellen, wenn Sie möchten, dass der reguläre Diff-Editor ebenfalls den neuen Diff-Algorithmus verwendet.
Durch Konflikte navigieren
Sie können jetzt auf den Konfliktezähler klicken, um zum nächsten unbehandelten Konflikt zu springen.

Sprachen
Automatische Markdown-Link-Updates bei Datei-Umbenennung / -Verschiebung
Haben Sie es satt, versehentlich Links oder Bilder in Ihrem Markdown zu beschädigen, wenn Sie Dateien verschieben oder umbenennen? Probieren Sie die neue Einstellung markdown.updateLinksOnFileMove.enabled aus!
Wenn diese neue Einstellung aktiviert ist, aktualisiert VS Code automatisch Links und Bilder in Markdown, wenn Dateien im VS Code Explorer verschoben oder umbenannt werden.

Sie können die betroffenen Dateitypen mit markdown.updateLinksOnFileMove.include steuern. Standardmäßig ist sie für alle Markdown-Dateien und gängige Bilddateiformate aktiviert.
Markdown-Befehle zum Einfügen von Links
Die neuen Befehle Markdown: Link zu Datei im Workspace einfügen und Markdown: Bild aus Workspace einfügen ermöglichen das schnelle Einfügen von Links und Bildern in Ihr Markdown über eine Dateiauswahl.
Denken Sie daran, dass diese Befehle nur eine Möglichkeit sind, Links und Bilder in Ihre Markdown-Dateien einzufügen. Sie können auch Markdown-Pfadvervollständigungen oder sogar Dateien per Drag & Drop aus dem VS Code Explorer ziehen, um Links oder Bilder einzufügen.
Diagnose für ungenutzte und doppelte Link-Definitionen in Markdown
Unsere integrierte Markdown-Validierung kann Sie nun auf ungenutzte oder doppelte Link-Definitionen hinweisen. Sie können diese Funktion mit markdown.validate.enabled aktivieren.

Wenn Sie eine feinere Kontrolle über diese Fehler wünschen, können Sie diese markdown.validate-Einstellungen verwenden, um entweder diese Fehler zu deaktivieren (ignore) oder ihre Schwere anzupassen (warning, error).
markdown.validate.duplicateLinkDefinitions.enabledmarkdown.validate.unusedLinkDefinitions.enabled
Es gibt auch eine Schnellkorrektur zum Entfernen von doppelten oder ungenutzten Link-Definitionen.
Hervorhebung von Link-Vorkommen in Markdown
Die Hervorhebung von Link-Vorkommen in Markdown zeigt Ihnen alle Stellen im aktuellen Dokument, an denen der Link unter dem Cursor verwendet wird.

Beachten Sie, wie bei der Cursor auf dem ersten Link im Dokument steht, alle Links zu Erste Überschrift sowie die Überschrift selbst im Dokument und im Rinnen rechts vom Dokument hervorgehoben werden.
Diese Funktion ist standardmäßig deaktiviert. Um sie zu aktivieren, schalten Sie die Einstellung markdown.occurrencesHighlight.enabled ein.
Neues Razor-Syntax-Highlighting-Grammatik
VS Code verfügt über eine neue, besser gewartete Razor-Grammatik für das Syntax-Highlighting von Razor-Dateien. Die neue Grammatik wird aktiv gepflegt und behebt Probleme, die in der alten Grammatik existierten.
VS Code für das Web
Verbesserte Workflows für die Erstellung und den Schutz von Branches
Wenn Sie sich in einem GitHub- oder Azure Repos-Repository auf VS Code für das Web befinden, erhalten Sie beim Committen in einen geschützten Branch nun eine Benachrichtigung, dass der aktuelle Branch geschützt ist, und werden aufgefordert, einen neuen Branch zu erstellen.
Dieser Ablauf berücksichtigt auch die folgenden Einstellungen:
git.branchPrefixermöglicht es Ihnen, das Präfix des Branch-Namens für die schnelle Eingabe vorab auszufüllen."git.branchProtectionPrompt": "alwaysCommitToNewBranch"ermöglicht es Ihnen, die Aufforderung zu überspringen, wenn Sie versuchen, in einen geschützten Branch zu committen, und direkt zur schnellen Eingabe für die Erstellung eines neuen Branches zu gelangen.
Darüber hinaus können Sie beim Erstellen eines neuen Branches die Aufforderung, ob Sie zum neu erstellten Branch wechseln möchten, umgehen, indem Sie "remoteHub.switchToCreatedBranch": "always" konfigurieren.
All das oben Genannte gilt auch bei Verwendung der Erweiterungen GitHub Repositories oder Azure Repos auf VS Code für den Desktop.
Lokalisierungsverbesserungen im Web
Vor einigen Monaten haben wir mit der Lokalisierung von VS Code für das Web begonnen. Bis jetzt konnten VS Code Core und Erweiterungen mit statisch deklarierten Zeichenketten in ihren Erweiterungsmanifesten lokalisiert werden. In dieser Iteration haben wir das letzte Puzzleteil fertiggestellt: Zeichenketten im Erweiterungscode. Dies wurde durch die Finalisierung der Lokalisierungs-API, die wir letzten Monat vorgeschlagen haben, erledigt.
Halten Sie Ausschau nach weiterer Lokalisierung von VS Code, während wir diese neue API in all unseren Erweiterungen weiter einführen. Wenn Sie ein Erweiterungsautor sind, erfahren Sie mehr über die neue API im Repository vscode-l10n.
Beiträge zu Erweiterungen
Python
Migration zur isort-Erweiterung
In unserer Mai 2022-Version haben wir eine neue isort-Erweiterung angekündigt, die neben der Python-Erweiterung zum Sortieren von Imports verwendet wird. Wenn Sie beispielsweise eine Datei öffnen und die Imports nicht den isort-Standards entsprechen, wird eine Diagnose mit einem Fehler angezeigt und eine Code-Aktion zur Behebung der Importreihenfolge bereitgestellt. In dieser Version migrieren wir zur Verwendung der eigenständigen isort-Erweiterung anstelle der in die Python-Erweiterung integrierten isort-Unterstützung, indem wir sie automatisch neben der Python-Erweiterung installieren.
Automatische Imports standardmäßig mit Pylance deaktiviert
Seit der ersten Implementierung von automatischen Imports in Pylance haben wir viel Feedback erhalten, wie verwirrend und manchmal ärgerlich es sein kann, wenn ein Import automatisch zu einer Datei hinzugefügt wird, wenn beispielsweise Vorschläge versehentlich akzeptiert werden. Ab dieser Version werden Pakete standardmäßig nicht mehr automatisch importiert, wenn Pylance verwendet wird. Wenn Sie automatische Imports für Ihre Python-Projekte wieder aktivieren möchten, können Sie dies tun, indem Sie "python.analysis.autoImportCompletions": true setzen.
Empfehlung für Pylint- und Flake8-Erweiterungen
In unseren früheren Versionen haben wir neue Pylint- und Flake8-Erweiterungen angekündigt, die über das Language Server Protocol (LSP) mit der Python-Erweiterung zusammenarbeiten, um Linting bereitzustellen. In dieser Version zeigen wir eine Benachrichtigung an, wenn Sie immer noch die in die Python-Erweiterung integrierten Pylint- und Flake8-Funktionen verwenden, und fordern Sie auf, diese neuen Erweiterungen zu installieren.

Remote-Entwicklung
Die Remote Development-Erweiterungen ermöglichen es Ihnen, einen Container, einen Remote-Computer oder das Windows Subsystem for Linux (WSL) als voll funktionsfähige Entwicklungsumgebung zu nutzen. Highlights dieser Version sind
- Dev Container Vorlagen - Erstellen Sie schnell einen Dev Container basierend auf einer vorhandenen Vorlage.
- Dev Container Features - Fügen Sie einem Dev Container Funktionen hinzu, indem Sie vorab verpackte Features einbinden (oder erstellen Sie Ihre eigenen!).
- Neuen Dev Container ohne Startordner erstellen.
Neue Erweiterungsfunktionen und Fehlerbehebungen finden Sie in den Release Notes für die Remotedatenentwicklung.
GitHub Pull Requests und Issues
Die Arbeit an der GitHub Pull Requests and Issues-Erweiterung, die Ihnen die Arbeit an, die Erstellung und Verwaltung von Pull-Requests und Issues ermöglicht, wird fortgesetzt. Schauen Sie sich das Changelog für die Version 0.54.0 der Erweiterung an, um die weiteren Highlights zu sehen.
Vorschau-Funktionen
TypeScript 4.9
Dieses Update enthält Unterstützung für die kommende TypeScript 4.9-Version. Sehen Sie sich den Iterationsplan für TypeScript 4.9 an, um mehr Details darüber zu erfahren, woran das TypeScript-Team derzeit arbeitet. Einige Highlights der Editor-Tools:
- Ein neuer Befehl Imports sortieren, der Imports sortiert, ohne ungenutzte zu entfernen.
- Das Ausführen von Gehe zur Definition bei einer Return-Anweisung springt nun zur Funktionsdeklaration.
- Wechseln zu einem neuen Standard-Datei-Watcher, der besser performen sollte.
Um die TypeScript 4.9-Nightly-Builds zu nutzen, installieren Sie die Erweiterung TypeScript Nightly.
Einstellungsprofile
Wir haben in den letzten Monaten daran gearbeitet, Einstellungen-Profile in VS Code zu unterstützen, was eine der beliebtesten Anfragen der Community ist. Diese Funktion ist als Vorschau über die Einstellung workbench.experimental.settingsProfiles.enabled verfügbar. Probieren Sie sie aus und geben Sie uns Feedback, indem Sie Probleme im vscode-Repository erstellen oder in Issue #116740 kommentieren.
Anzeigen synchronisierter Profildaten
Sie können jetzt die synchronisierten Daten für jedes Profil in der Ansicht Synchronisierungsaktivität (Remote) sehen. Dies ist nützlich, um zu verstehen, welche Daten für jedes Profil synchronisiert werden.

Hinweis: Diese Funktion ist derzeit nur in der Insiders-Version von VS Code verfügbar.
Erweiterungs-Authoring
Metadaten für Workspace-Bearbeitungen bereitstellen
Die API zum Anwenden einer Workspace-Bearbeitung ermöglicht es Erweiterungen nun, Metadaten bereitzustellen, z. B. um die Bearbeitung als Refactoring zu kennzeichnen. Diese zusätzlichen Metadaten werden vom Editor und dem automatischen Speichern nach Refactoring (Einstellung: files.refactoring.autoSave) berücksichtigt.
Einschränken, welche Befehle von MarkdownString und in Webviews ausgeführt werden können
Befehls-URIs in MarkdownString sind eine nützliche Möglichkeit, benutzerdefinierte Interaktionen in VS Codes Hover-Nachrichten oder IntelliSense-Details zu erstellen. Webviews können auch Befehls-URIs verwenden, um VS Code-Befehle direkt aus dem Webview auszulösen. Befehls-URIs können jedoch auch gefährlich sein, da sie zur Ausführung beliebiger Befehle verwendet werden können, einschließlich vieler Befehle, die nicht auf Sicherheit ausgelegt waren. Aus diesem Grund sind Befehls-URIs standardmäßig deaktiviert und müssen von Erweiterungen explizit aktiviert werden.
Während dieser Alles-oder-Nichts-Ansatz funktioniert, haben wir auch festgestellt, dass er zu viel Sicherheitsverantwortung auf die Erweiterungsautoren abwälzt. Erweiterungen, die Befehls-URIs verwenden müssen, müssen validieren, dass nur sichere Befehle in den von ihnen gerenderten Inhalten enthalten sind. Dies ist leicht zu vergessen und leicht falsch zu machen.
Um dies zu verbessern, führen wir neue APIs für die Aktivierung von Befehls-URIs ein, die es Erweiterungen ermöglichen, nur eine vertrauenswürdige Teilmenge von Befehlen zu aktivieren.
Für MarkdownString nimmt die Eigenschaft isTrusted nun eine Zulassungsliste von Befehlen entgegen, die ausgeführt werden können (alle anderen Befehle werden blockiert).
const md = new vscode.MarkdownString(
`A command link: [Open setting](command:workbench.action.openSettings)`
);
// Set trusted commands instead of enabling all commands
md.isTrusted = { enabledCommands: ['workbench.action.openSettings'] };
Für Webviews kann die Eigenschaft WebviewOptions.enableCommandUris nun eine Liste von aktivierten Befehlen sein, anstatt nur ein einfaches true/false.
const options: vscode.WebviewOptions = {
enableCommandUris: ['workbench.action.openSettings']
};
Wir empfehlen dringend, dass alle Erweiterungen, die Befehls-URIs verwenden, diese neue, restriktivere API zur Verbesserung der Sicherheit übernehmen.
Konsistenter Ursprung für Webviews und Webview-Ansichten
Um die Ladezeit von Webviews zu verbessern, versuchen wir nun, einen konsistenten Ursprung für alle Instanzen eines bestimmten Webview-Typs aufrechtzuerhalten. Dies hat zwei Hauptvorteile:
-
Webviews können Caching besser nutzen. Das bedeutet, dass lokale Ressourcen schneller geladen werden sollten.
-
Webviews können den lokalen Speicher und andere Web-APIs verwenden, die pro Ursprung partitioniert sind.
Beachten Sie, dass alle Instanzen eines Webviews nun vom selben Ursprung aus ausgeführt werden. Wenn sie also eine API wie den lokalen Speicher verwenden, stellen Sie sicher, dass Sie daten-/zustandsspezifische Daten pro Ressource partitionieren. Zum Beispiel setzt
localStorage.setItem('scrollPosition', 100)scrollPositionauf 100 für alle Webview-Instanzen. Wenn Sie die Scroll-Position für einzelne Ressourcen festlegen möchten, müssen Sie die Ressourcen-ID auch in den Schlüssel aufnehmen:localStorage.setItem(myDocUri, JSON.stringify({scrollPosition: 100 })).Sie sollten auch niemals den lokalen Speicher oder ähnliche APIs verwenden, um kritische Daten wie Dokumentinhalte zu speichern. Obwohl VS Code sich bemüht, einen konsistenten Ursprung für Webviews aufrechtzuerhalten, können wir nicht garantieren, dass der Ursprung nicht geändert wird.
In vielen Fällen sollten Sie die Webview-Status-APIs verwenden, da diese APIs beide oben genannten Probleme für Sie lösen.
Der Ursprung wird für jede Erweiterung und jeden Webview-Typ zufällig generiert. Derselbe Ursprung wird für alle Instanzen des Webviews verwendet.
Derzeit versuchen sowohl normale Webviews als auch Webview-Ansichten, einen konsistenten Ursprung beizubehalten. Wir planen, dies in der nächsten Iteration für benutzerdefinierte Editoren und Notebook-Webviews zu übernehmen.
Debug Adapter Protocol
Neue umgekehrte Anforderung 'startDebugging'
VS Code unterstützt derzeit mehrere gleichzeitige Debug-Sitzungen, aber das Debug Adapter Protocol (DAP) deckt nur eine einzelne Sitzung ab. Das bedeutet, dass das programmgesteuerte Erstellen neuer Debug-Sitzungen kein Teil von DAP ist und nur außerhalb von DAP oder des Debug-Adapters, typischerweise in der Debug-Erweiterung, die den Debug-Adapter enthält, erfolgen kann. Infolgedessen ist die Funktionalität für mehrere Sitzungen, wie z. B. das automatische Debuggen von Child-Prozessen, für Nicht-VS-Code-DAP-Clients nicht einfach verfügbar, da diese typischerweise nur den Debug-Adapter und nicht die VS Code-spezifische Debug-Erweiterung verwenden.
Um diese Situation zu verbessern, haben wir eine neue umgekehrte Anforderung startDebugging zu DAP hinzugefügt, die es Erweiterungen ermöglicht, eine neue Debug-Sitzung (vom gleichen Typ wie der Aufrufer) innerhalb des Debug-Adapters zu erstellen. Eine Client-Fähigkeit supportsStartDebuggingRequest zeigt einem Debug-Adapter an, dass der Client startDebugging unterstützt.
In der Oktober-Version hat VS Code startDebugging implementiert.
Vorgeschlagene 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:
- Suchen Sie nach einem Vorschlag, den Sie ausprobieren möchten, und fügen Sie dessen Namen zu
package.json#enabledApiProposalshinzu. - Verwenden Sie das neueste vscode-dts und führen Sie
vscode-dts devaus. Es lädt die entsprechendend.ts-Dateien in Ihren Arbeitsbereich herunter. - 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.
Statische Notebook-Vorabladungen
Der neue vorgeschlagene Beitragspunkt notebookPreload ermöglicht es Erweiterungen, Skripte bereitzustellen, die in Notebooks eines bestimmten Typs geladen werden.
{
"contributes": {
"notebookPreload": [
{
"type": "jupyter-notebook", // Type of notebook for the preload script
"entrypoint": "./path/to/preload.js"
}
]
}
}
Dieser Beitragspunkt wird durch den API-Vorschlag contribNotebookStaticPreloads gesteuert. Erweiterungen können Vorabladungen verwenden, um globale Variablen in der JavaScript-Umgebung des Notebooks zu laden oder zu definieren.
Das Vorabladungs-Skript muss ein JavaScript-Modul sein, das eine activate-Funktion exportiert. Alle Vorabladungen werden ausgewertet, bevor irgendwelche Renderer-Skripte.
Notebook-Renderer können auf alle Ausgabeelemente zugreifen
Benutzerdefinierte Notebook-Renderer können jetzt auf alle MIME-Daten des Ausgabeelements zugreifen, das sie rendern. Wenn der Renderer feststellt, dass er das primäre Ausgabeelement nicht ordnungsgemäß rendern kann, lässt dieser API-Vorschlag ihn auf einen der anderen MIME-Typen zurückfallen, um zu rendern.
Der Einstiegspunkt dieses Vorschlags ist eine neue Eigenschaft OutputItem._allOutputItems. Die Eigenschaft ist eine geordnete Liste aller MIME-Typen, die das aktuelle Ausgabeelement enthält. Jedes Element in der Liste hat die Form { mime, getItem() }. mime ist der MIME-Typ wie text/html oder image/png, während die Funktion getItem() ein Promise auf ein OutputItem für diesen MIME-Typ zurückgibt.
Hier erfahren Sie, wie ein Renderer diese neue API verwenden kann.
async function renderOutputItem(outputInfo, element, signal) {
const didRender = tryRenderMainItem(outputInfo, element);
if (!didRender) {
// Fallback to render `text/html`
const htmlItem = await outputInfo._allOutputItems
.find(item => item.mime === 'text/html')
?.getItem();
if (htmlItem) {
// Here we can either render the 'text/html' item ourselves
// or delegate to another renderer.
const renderer = await ctx.getRenderer('vscode.builtin-renderer');
if (renderer) {
return renderer.renderOutputItem(htmlItem, element, signal);
}
}
}
}
Probieren Sie diesen Vorschlag aus und lassen Sie uns wissen, was Sie denken!
Erweiterungs-Telemetrie-API
Um Telemetrie-Best Practices weiter zu fördern und die Telemetrie-Funktionen, die Erweiterungen zur Verfügung stehen, zu verbessern, führt diese Iteration die vorgeschlagene telemetryLogger-API ein. Diese API ermöglicht es Erweiterungen, einen TelemetryAppender bereitzustellen, der als Kern der Sende-Logik fungiert (implementiert mit Application Insights oder einem anderen Datenerfassungsdienst). Dieser TelemetryAppender wird dann verwendet, um einen TelemetryLogger zu instanziieren, was die Klasse ist, über die Sie Telemetrie protokollieren sollten.
Der TelemetryLogger bietet einen gemeinsamen Ausgabekanal, um gesendete Telemetrieereignisse zu sehen, ordnungsgemäße Telemetrie-Einstellungen zu prüfen und persönlich identifizierbare Informationen zu bereinigen. Darüber hinaus werden alle Fehler, die bei der Verwendung der VS Code API auftreten, in Ihren Appender protokolliert, um eine bessere Fehlerdiagnose zu ermöglichen.
Es gibt ein einfaches Beispiel im Telemetrie-Beispiel und Sie können Feedback in Issue #160090 geben.
Log-Ausgabekanal
Im letzten Meilenstein haben wir die API-Vorschlag LogOutputChannel für die Erstellung eines Ausgabekanals, der nur zum Protokollieren verwendet wird, eingeführt. In dieser Iteration haben wir die Eigenschaft logLevel und das Ereignis onDidChangeLogLevel hinzugefügt. Die Eigenschaft logLevel stellt den aktuellen Log-Level des Ausgabekanals dar, und das Ereignis onDidChangeLogLevel wird ausgelöst, wenn sich der Log-Level für den Ausgabekanal ändert.
/**
* A channel for containing log output.
*/
export interface LogOutputChannel extends OutputChannel {
/**
* The current log level of the channel.
* Defaults to application {@link env.logLevel application log level}.
*/
readonly logLevel: LogLevel;
/**
* An {@link Event} which fires when the log level of the channel changes.
*/
readonly onDidChangeLogLevel: Event<LogLevel>;
...
...
}
Wir haben auch die Eigenschaft logLevel und das Ereignis onDidChangeLogLevel zum env-Namespace hinzugefügt, um den aktuellen Log-Level der Anwendung darzustellen, und das Ereignis wird ausgelöst, wenn sich der Log-Level für die Anwendung ändert.
export namespace env {
/**
* The current log level of the application.
*/
export const logLevel: LogLevel;
/**
* An {@link Event} which fires when the log level of the application changes.
*/
export const onDidChangeLogLevel: Event<LogLevel>;
}
Technik
Optimierung der Eingabelatenz
Da VS Code größer geworden ist, hat auch die Aktivität zugenommen, wenn ein Tastendruck erfolgt. In dieser Iteration haben wir uns zurückgezogen und eine gründliche Untersuchung dessen durchgeführt, was genau passiert, wenn Sie im Editor tippen und was bis nach der Anzeige des Tastendrucks auf dem Bildschirm aufgeschoben werden kann. Die Hauptergebnisse dieser Untersuchung waren:
- Mehrere Änderungen wurden vorgenommen, um so viel Arbeit wie möglich bis nach der Anzeige eines Tastendrucks im Editor auf dem Bildschirm zu verschieben. Eine grobe Schätzung der Auswirkungen hiervon ist eine ~15%ige Reduzierung der Eingabelatenz, wenn IntelliSense nicht angezeigt wird, und eine noch höhere Reduzierung, wenn IntelliSense neu gefiltert wird.
- Wir verfügen nun über verfeinerte Techniken zur manuellen Messung der Eingabelatenz und zur Optimierung auf dieser Sub-Millisekunden*-Ebene.
- Es gibt eine sich in Entwicklung befindliche Änderung, die uns helfen wird, Beispiele für Eingabelatenz zu verfolgen und zu melden. Dies wird uns einige konkrete Zahlen liefern, an denen wir uns orientieren und die wir verbessern können.
Dies ist erst der Anfang dieser Bemühungen, und wir haben weitere Änderungen, die in der nächsten Version landen werden.
*Diese Zahlen sind stark abhängig von der verwendeten Hardware für Tests. Eine Verbesserung von 0,5 ms auf leistungsstarker Hardware kann auf durchschnittlicher Hardware 2 ms betragen.
Automatische Renderer-Profilierung
Der Renderer-Prozess von VS Code ist für die Benutzeroberfläche verantwortlich. Er sorgt für einen blinkenden Cursor, die Möglichkeit zur Eingabe und zum Speichern. Jede Leistungseinbuße im Renderer-Prozess ist für den Benutzer sichtbar und führt zu einer schlechten Erfahrung. Um uns bei der Identifizierung und Behebung von Leistungsproblemen im Renderer-Prozess zu unterstützen, haben wir eine neue Einstellung application.experimental.rendererProfiling hinzugefügt, die zur automatischen Profilerstellung des Renderer-Prozesses verwendet werden kann. Die Einstellung kann auf on gesetzt werden, um die Profilerstellung zu aktivieren, und auf off, um sie zu deaktivieren. Wenn aktiviert, wird der Renderer-Prozess einige Sekunden lang profiliert, wann immer er "unter Druck steht", und das Profil wird dann analysiert, anonymisiert und zur Überprüfung gesendet. Sie können das Fenstertagebuch verwenden, um den Profilerstellungsprozess zu verfolgen.
Beachten Sie, dass diese Funktion standardmäßig ausgeschaltet ist, da wir noch lernen und optimieren. Bitte probieren Sie sie aus und teilen Sie uns Ihre Meinung mit.
Windows 11 Kontextmenü
In dieser Version fügt das VS Code-Setup standardmäßig einen Kontextmenüeintrag Öffnen mit Code - Insiders zum Windows 11-Kontextmenü für Insiders hinzu. Für Benutzer, die sich zuvor bei der Installation von Insiders für das Kontextmenü entschieden hatten, wird der Eintrag, der im alten Menü Umschalt + F10 angezeigt wird, beim Aktualisieren auf die neuesten Insiders nun durch den neueren Eintrag ersetzt. Für andere müssen Sie Insiders neu installieren und sich dafür entscheiden, um diesen Menüeintrag im Setup-Assistenten zu aktivieren. Aufgrund von Problemen, auf die wir während der Entwicklung des Menüeintrags gestoßen sind, planen wir, diese Funktion für einige Meilensteine auf Insiders zu beschränken, um Vertrauen zu gewinnen, bevor wir sie für alle Windows 11-Benutzer in der stabilen Version veröffentlichen.

Die Aktion Öffnen mit Code Insiders wird dann in den Kontextmenüs von Ordnern und Dateien des Windows-Datei-Explorers verfügbar sein.

Bemerkenswerte Fehlerbehebungen
- 151019 Debug-Hover wird ausgeblendet, wenn er überfahren wird
- 153852 Vorschlag: ES5-Klassenkompatibilität entfernen, um Erweiterungs-APIs zu beschleunigen
- 156104 Port nicht automatisch weiterleiten, wenn auf einen URL-Link geklickt wird, wenn er bereits statisch weitergeleitet ist
- 158921 Überlauf des Hover-Inhalts der Anzeige "Einstellungen woanders geändert"
Vielen Dank
Last but not least, ein großes Danke an die Mitwirkenden von VS Code.
Fehlerverfolgung
Beiträge zu unserer Fehlerverfolgung
- John Murray (@gjsjohnmurray)
- Simon Chan (@yume-chan)
- Andrii Dieiev (@IllusionMH)
- ArturoDent (@ArturoDent)
- RedCMD (@RedCMD)
Beiträge zu vscode
- @andrewbranch (Andrew Branch): [typescript-language-features] Befehl
removeUnusedImportshinzufügen PR #161654 - @babakks (Babak K. Shandiz): 🐛 Nicht erwarteten Aufruf zum Anzeigen des CWD-Auswahlfelds beheben PR #163220
- @Balastrong (Leonardo Montini): Einrückung beim Einfügen in eine leere Datei automatisch erkennen PR #156282
- @Brikaa (Omar Brikaa): Tastenkombinationen für horizontales Scrollen hinzufügen PR #162992
- @CyrilOtheninGirard (Cyril OG): Bash Shell-Integration -- Exit-Code wird nicht wiederhergestellt, wenn PROMPT_COMMAND ein Array ist PR #158091
- @daiyam (Baptiste Augrain): feat: Faltungsprovider zur Verwendung auswählen PR #157434
- @dsanders11 (David Sanders)
- Verweise auf nicht existierende
runTestsAPI korrigieren PR #162543 - Webview zum Anfang scrollen, wenn der nicht übereinstimmende Fragment `#top` ist PR #164070
- Verweise auf nicht existierende
- @dtivel (Damon Tivel): Dienst zur Überprüfung von Erweiterungssignaturen hinzufügen PR #162285
- @gjsjohnmurray (John Murray)
outline.collapseItemshinzufügen und unerwartetes Zusammenklappen von Gliederungen beheben (#_53262) PR #158650- Korrekte Einstellung in der Eigenschaftsbeschreibung referenzieren (#_162663) PR #162665
- @hughlilly (Hugh Lilly): Komma-Splices in Beschreibungen in
src/vs/workbench/contrib/terminal/common/terminalConfiguration.tskorrigieren PR #164401 - @jacekkopecky (Jacek Kopecký)
- Auf ungespeicherte Editoren prüfen, bevor zum Speichern aufgefordert wird PR #159318
- Fehlplatzierter Cursor beheben PR #159325
- @jakebailey (Jake Bailey)
- Nicht von typescript protocol.d.ts abhängig sein PR #163365
- Vergessenen Verweis auf typescript/lib/protocol entfernen PR #163585
- Sicherstellen, dass 'undefined' nicht in tsserver.web.js gelangt PR #164064
- @jannisspeer: Snakefile nicht mehr als Python klassifizieren PR #162749
- @jeanp413 (Jean Pierre)
- Behebt, dass das Trennen eines Terminal-Editors nicht das Ereignis vscode.window.onDidCloseTerminal auslöst PR #154546
- Behebt, dass ein einfaches Browser-Webview nicht wiederverwendet wird, wenn es wiederhergestellt wird PR #163389
- Behebt Deaktivierung privilegierter Ports für OSX PR #163890
- Behebt, dass ein Zeilenumbruch im Baum-Element-Label das Label unleserlich macht PR #163995
- Behebt, dass der Button "Erweiterung deaktivieren" auf der rechten Seite keinen abgerundeten Rand hat PR #164109
- @joshaber (Josh Abernathy): Kontext für "Vorschau öffnen aktiviert" hinzufügen, Teil 2 PR #163682
- @jsjoeio (Joe Previte): fix: process.execArgv beibehalten PR #161853
- @laurentlb (Laurent Le Brun): Spaltennamen in "Feature Contributions" aktualisieren PR #162844
- @marrej (Marcus Revaj): # Korrekte Antwort auf applyEdit() geben PR #162430
- @mrienstra (Michael Rienstra): Yarn-Version erzwingen PR #162610
- @mustard-mh (Huiwen): Behebt #161565 PR #161567
- @nikita-r (Nikita R.): Befehle der "WordPart"-Familie so ändern, dass sie Kleinschreibung mit Bindestrichen berücksichtigen (löst #158667) PR #158672
- @pingren (Ping): user-select für Monaco-Editor auf macOS aktivieren PR #156755
- @qingpeng9802 (Qingpeng Li): Leistungsproblem mit
es5ClassCompatbeheben PR #155390 - @r3m0t (Tomer Chachamu)
- Erweiterungsautoren erlauben, valueSelection in einem QuickPick/InputBox festzulegen PR #157022
- Testbaum filtern, wenn Testelemente von Erweiterungen aktualisiert werden PR #162169
- @sean-mcmanus (Sean McManus): language-configuration.json aktualisieren PR #163182
- @stephen-ullom (Stephen Ullom): Position der Ampeln für das Kommandozentrum korrigieren PR #164246
- @StephenChips (Dongcai Huang): FreePortOutputRegex korrigieren PR #162323
- @unm4ever (BK0717): __vsc_prior_prompt2 hinzufügen PR #156140
- @w1redch4d (Swapnadeep Som): Probleme mit HTML-Stil-Kommentaren in eingebettetem Code beheben PR #160981
- @yamachig (yamachi): Automatische Umrandung beheben, wenn sie mit einem offenen Zeichen schließt PR #147187
- @yiliang114 (易良): fix: Schließt #164414, korrigiert transparenten Übertragungs-Ordner-URI PR #164415
Beiträge zu vscode-pull-request-github
- @hoontae24: feat: Ursprung des Upstreams für GitHub Enterprise beim Kopieren des Head-Links hinzufügen PR #4028
- @Thomas1664: UI-Korrekturen für den Check-Abschnitt PR #4059
- @yin1999 (A1lo): fix: ssh-URL für den ssh-Protokoll-Upstream verwenden PR #3853
Beiträge zu vscode-dev-chrome-launcher
- @mirdaki: Option zum Festlegen von Stable- oder Insiders-Build hinzufügen PR #20
- @infinitepower18 Beschreibung hinzufügen und leeres Symbol in den Erweiterungseinstellungen korrigieren PR #18