Juli 2021 (Version 1.59)
Update 1.59.1: Das Update behebt diese Probleme.
Diese Version behebt auch CVE-2021-26437.
Downloads: Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap
Willkommen zur Juli 2021-Version von Visual Studio Code. Es gibt viele Updates in dieser Version, die Ihnen hoffentlich gefallen werden. Einige der wichtigsten Highlights sind:
- Erweiterungen-Ansicht verbessert - Detaillierte Tooltips für Erweiterungen, neuer Laufzeitstatus-Tab.
- Einstellungen-Editor-Validierung - Schnelles Finden von Bearbeitungsfehlern für objektbasierte Einstellungen.
- Terminals per Drag & Drop verschieben - Verschieben Sie Terminals zwischen Fenstern in Editor- und Panelbereiche.
- Erweiterte Themenanpassung - Passen Sie mehrere Farbthemen gleichzeitig an.
- Integrierte Unterstützung für Jupyter Notebooks - Öffnen Sie
.ipynb-Dateien direkt in VS Code. - Verbesserungen am Notebook-Layout - Anzeige der ersten Zeile von zusammengeklappten Zellen, Rückgängig/Wiederholen pro Zelle.
- Testing-API finalisiert - Native Unterstützung für das Ausführen von Tests in VS Code mit integriertem Test-Explorer.
- Debug-Disassembly-Ansicht Vorschau - Anzeige von disassemblierten C++-Code in VS Code.
- Live Preview-Erweiterung - Live-HTML-Vorschau innerhalb von VS Code mit JavaScript-Debugging-Unterstützung.
- Dev Containers devcontainer CLI - Befehlszeilenschnittstelle für die Arbeit mit Entwicklungcontainern.
Wenn Sie diese Release Notes online lesen möchten, gehen Sie zu Updates auf code.visualstudio.com.
Seien Sie live dabei bei der Livestream-Übertragung des VS Code-Teams am Dienstag, 10. August, um 8 Uhr Pazifikzeit (16 Uhr London), um eine Demo der Neuerungen in 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
Erweiterungen
Verbesserte Erweiterungen-Ansicht bei Größenänderung. Im folgenden kurzen Video zeigt die Erweiterungen-Ansicht mit Standardbreite alle Details (zuvor wurden das Symbol, die Bewertungen und die Anzahl der Installationen nicht angezeigt). Wenn sich die Ansicht verkleinert, wird ein kleineres Erweiterungssymbol angezeigt, und wenn ihre Breite weiter reduziert wird, werden das Symbol und die Bewertungen ausgeblendet.

Thema: GitHub Light Theme
Die Erweiterungen-Ansicht zeigt nun einen benutzerdefinierten Tooltip für eine Erweiterung. Dieser detaillierte Tooltip enthält die vollständige Beschreibung der Erweiterung und andere nützliche Informationen, wie z. B. warum eine Erweiterung deaktiviert oder empfohlen wird.

Thema: GitHub Light Theme
Sie können nun den Laufzeitstatus einer Erweiterung im neuen Tab Laufzeitstatus im Erweiterungsbereich überprüfen. Statusinformationen umfassen die Aktivierungszeit, ob sie beim Start aktiviert ist, und ob sie Warnungen oder Fehler aufweist. Einige dieser Informationen werden in der Erweiterungen-Ansicht und ihrem Tooltip angezeigt (siehe obiges Bild).

Thema: GitHub Light Theme
Der Details-Tab des Erweiterungsbereichs zeigt nun Kategorien, Ressourcenlinks und andere Informationen wie Veröffentlichungs- und Aktualisierungsdaten der Erweiterung an. Die Auswahl einer Kategorie zeigt weitere Erweiterungen in dieser Kategorie in der Erweiterungen-Ansicht.

Thema: GitHub Light Theme
Einstellungen-Editor
Der Einstellungen-Editor unterstützt nun die Validierung von Objekten. Die Validierung prüft auf Typfehler, die beim direkten Bearbeiten der JSON-Datei auftreten können.

Array-Einstellungen unterstützen nun Drag & Drop im Nicht-Bearbeitungsmodus. Darüber hinaus zeigen Enum-Array-Einstellungen mit der Eigenschaft uniqueItems auf true nur noch verbleibende Optionen anstelle aller Optionen in den Dropdowns an.

Der Einstellungen-Editor unterstützt nun auch mehrzeilige Zeichenketteneinstellungen, bei denen der Wert in einem mehrzeiligen Textbereich anstelle eines einzeiligen Eingabefeldes gerendert wird.

Erweiterte Syntax für die Themenanpassung
Die unten aufgeführten Farbanpassungseinstellungen ermöglichen es Benutzern, Farben des aktuellen Themas anzupassen.
workbench.colorCustomizationseditor.tokenColorCustomizationseditor.semanticTokenColorCustomizations
Es gibt eine neue Syntax, um mehrere Themen gleichzeitig anzupassen.
"workbench.colorCustomizations": {
"[Abyss][Red]": {
"activityBar.background": "#ff0000"
},
"[Monokai*]": {
"activityBar.background": "#ff0000"
}
},
Mehrere Themen können aufgelistet werden, und das *-Platzhaltersymbol kann am Anfang und Ende des Namens verwendet werden.
Unterstützung für Jupyter Notebooks
In diesem Monat haben wir den Code, der das Lesen von *.ipynb-Dateien verarbeitet, von der Jupyter Notebook-Erweiterung in eine neue integrierte Erweiterung verschoben. Das bedeutet, dass Sie nun Jupyter Notebooks in einer sauberen Installation von VS Code öffnen können, ohne die vollständige Jupyter-Erweiterung installieren zu müssen. Wenn Sie jedoch Zellen ausführen oder Ausgaben anzeigen möchten, die ipywidgets oder andere komplexe Renderer-Typen verwenden, müssen Sie die Jupyter-Erweiterung installieren.
Verbesserungen am Notebook-Layout
Wir haben in dieser Iteration einige Verbesserungen am Notebook-Layout vorgenommen.
- Die erste Zeile der Zelleneingabe wird nun gerendert, wenn die Zelle zusammengeklappt ist.
- Aktionen auf der Symbolleiste des Notebook-Editors werden in das Überlaufmenü (...) verschoben, wenn das Fenster nicht breit genug ist, um alle primären Aktionen anzuzeigen.
- Der Standardwert von
notebook.undoRedoPerCellist nun auftruegeändert.

Wir haben auch die Standardstile für Codezellen aktualisiert und zeigen nun eine Hintergrundfarbe an, um die Zellen besser voneinander zu unterscheiden. Themes können notebook.cellEditorBackground verwenden, um diese Farbe anzupassen.

Schließlich können Sie nun die Textbeschriftungen auf der Notebook-Symbolleiste mit der Einstellung notebook.globalToolbarShowLabel umschalten.

Pfadtrenner für "Relative Pfad kopieren" konfigurieren
Eine neue Einstellung explorer.copyRelativePathSeparator ermöglicht es Ihnen, den Pfadtrenner beim Aufrufen der Aktion Relativen Pfad kopieren explizit festzulegen.
Die verfügbaren Trennzeichenoptionen sind:
auto(Standard) - Verwendet das betriebssystemspezifische Pfadtrennzeichen./- Verwendet Schrägstrich als Pfadtrennzeichen.\\- Verwendet umgekehrten Schrägstrich als Pfadtrennzeichen.
Editor-Gruppenübergreifende Freigabe des Ansichtszustands
Eine neue Einstellung workbench.editor.sharedViewState wurde hinzugefügt, um zu konfigurieren, wie der Ansichtszustand von Editoren (z. B. die Scrollposition im Editor) über Editor-Gruppen hinweg geteilt wird.
Standardmäßig ist diese Einstellung deaktiviert, um das aktuelle Verhalten beizubehalten. Wenn Sie einen Editor daneben öffnen und diese Editor-Gruppe später schließen, nur um den Editor erneut daneben zu öffnen, wird kein Ansichtszustand wiederhergestellt, da Sie eine neue Editor-Gruppe öffnen. Wenn Sie diese Einstellung jedoch aktivieren, wird der zuletzt verwendete Ansichtszustand über alle Editor-Gruppen hinweg beibehalten und verwendet, es sei denn, für die Editor-Gruppe wird ein spezifischerer Ansichtszustand gefunden.
Unterhalb der Auswahl wird der Zustand beim erneuten Öffnen der package.json-Datei daneben beibehalten.

Editor
Zwischen Faltregionen navigieren
Es gibt neue Befehle, um die Cursorposition auf ein entsprechendes Falz zu setzen.
- Nächstes Falz finden (
editor.gotoNextFold) - Vorheriges Falz finden (
editor.gotoPreviousFold) - Übergeordnetes Falz finden (
editor.gotoParentFold)
Die Befehle haben derzeit keine Standard-Tastenkombinationen, aber Sie können eigene Tastenkombinationen hinzufügen unter Befehle: Tastenkombinationen öffnen (⌘K ⌘S (Windows, Linux Ctrl+K Ctrl+S)).
Imports automatisch einklappen
Verwenden Sie die Einstellung editor.foldingImportsByDefault, um Importanweisungen automatisch einzuklappen. Der Faltzustand wird gespeichert, sobald eine Datei einmal geöffnet wurde. Das Feature funktioniert mit TypeScript, JavaScript, Java, C#, C++ und mit allen Sprachen, die einen "Folding Range Provider" haben, der Importanweisungen mit FoldingRangeKind.Imports annotiert.
Suchbegriff aus Auswahl ableiten
Die Einstellung des Suchfeldes editor.find.seedSearchStringFromSelection wurde erweitert, um das Ableiten des Suchbegriffs nur aus nicht leeren Auswahlen zu unterstützen. Standardmäßig verwendet der Editor die Auswahl oder das Wort um die leere Auswahl als Suchbegriff, wenn das Suchfeld eingeblendet wird.
Verbesserungen bei Inline-Vorschlägen
Wir haben die Art und Weise, wie Inline-Vorschläge gerendert werden, geändert. Dies behebt nicht nur viele Fehler, sondern berücksichtigt auch den Zeilenumbruch bei Inline-Vorschlägen.
Darüber hinaus werden mehrzeilige Inline-Vorschläge an nicht abschließenden Positionen jetzt unterstützt.
Verbesserungen bei Inlay-Hinweisen
Wir haben auch die Art und Weise, wie Inlay-Hinweise gerendert werden, geändert. Durch die Verwendung desselben Mechanismus wie bei Inline-Vorschlägen werden Inlay-Hinweise nun auch beim Zeilenumbruch berücksichtigt. Dieser Mechanismus ermöglicht auch separate Cursor-Stopps um Inlay-Hinweise herum.
Terminal
Terminals per Drag & Drop zwischen Fenstern verschieben
Ziehen Sie Terminals aus der Registerkartenliste oder dem Editorbereich eines Fensters in die Registerkartenliste, den Editorbereich oder das Panel eines anderen Fensters.

Nachverfolgung von Kindprozessen und Warnungen beim Schließen
Die bestehenden Einstellungen terminal.integrated.confirmOnExit und die neuen terminal.integrated.confirmOnKill verwenden die Nachverfolgung von Kindprozessen, um eine Warnung anzuzeigen, wenn versucht wird, ein Terminal zu schließen, das Kindprozesse unter dem Shell-Prozess hat. Standardmäßig wirkt sich diese Nachverfolgung nur auf Terminals im Editorbereich aus, kann aber nun so konfiguriert werden, dass Warnungen für alle Terminals oder für Terminals im Panelbereich angezeigt werden.
Standardprofil für beigesteuerte Terminalprofile festlegen
Von Erweiterungen beigesteuerte Terminalprofile können nun als Standardprofil festgelegt werden. Das Standard-Terminalprofil wird im Terminal-Dropdown mit dem Suffix Standard gekennzeichnet.

Unterstreichungs- und Durchstreichungsunterstützung
Das integrierte Terminal unterstützt nun Unterstreichungs- und Durchstreichungsattribute. Zum Beispiel kann Git konfiguriert werden, um diese neuen Attribute zu verwenden.

Theme: Sapphire Theme
Das obige Beispiel verwendet die folgenden Einstellungen in .gitconfig:
[color "status"]
added = green bold
changed = red bold strike
untracked = cyan
branch = yellow black bold ul
Terminal im Editorbereich daneben erstellen
Es gibt einen neuen Befehl workbench.action.createTerminalEditorSide, um ein Terminal im Editorbereich neben dem aktiven Editor zu erstellen.
Indikator für aktive Terminal-Registerkarte
Themes können nun die Farbe für eine vertikale Linie festlegen, um die aktive Terminal-Registerkarte anzuzeigen, unter Verwendung des Theme-Schlüssels terminal.tab.activeBorder.

Die Farbe wird auf tab.activeBorder zurückfallen, wenn terminal.tab.activeBorder nicht gesetzt ist.
Animation im Terminal-Tab-Symbol deaktivieren
Die neue Einstellung terminal.integrated.tabs.enableAnimation deaktiviert die Animation im Terminal-Tab-Symbol. Für Aufgaben wird anstelle einer Spinner-Animation ein Play-Button verwendet.

Debugging
Verbesserter "Ausführen/Debuggen"-Button im Editor-Titel
In der Februar-Version haben wir eine Dropdown-Schaltfläche eingeführt, um die Befehle "Ausführen" und "Debuggen" an einer zentralen (und kompakten) Stelle im Titelbereich des Editors zu gruppieren (siehe Release Notes 1.54). Basierend auf Benutzerfeedback haben wir versucht, die Dropdown-Schaltfläche zu verbessern, indem wir die zuletzt ausgeführte Aktion merken. Die Dropdown-Schaltfläche hat nun zwei Klickzonen, eine für die Standardaktion (links) und eine für das Dropdown (rechts), die bei Auswahl die Aktion ausführt und sie als neue Standardaktion merkt.

Das Dropdown-Verhalten
- Wenn nur eine einzige Aktion "Ausführen" oder "Debuggen" vorhanden ist, wird das Dropdown-Menü weggelassen.
- Wenn mehr als eine Aktion "Ausführen" oder "Debuggen" vorhanden ist, werden alle Aktionen im Dropdown-Menü angezeigt und die Standardaktion wird auf die erste Aktion aus dem Dropdown-Menü gesetzt (solange keine gespeicherte Aktion vorhanden ist).
- Die Standardaktion wird für einen bestimmten Workspace über VS Code-Neustarts hinweg beibehalten; sie wird **nicht** pro Editor beibehalten.
Beiträge zu Erweiterungen
Live-Vorschau
Die Live Preview-Erweiterung, die letzten Monat veröffentlicht wurde, bietet einige spannende neue Funktionen. Dazu gehören:
- Kompatibilität mit dem integrierten JavaScript-Debugger für externe Vorschauen.
- Führen Sie Live Preview: Debug-Vorschau anzeigen aus, um sie auszuprobieren!
- Verbesserungen am eingebetteten Browser, wie z. B. "Seite suchen"-Unterstützung und schneller Zugriff auf die
webvivewDevTools. - Dateisystemüberwachung für automatisch generierte Dateien.
- Und mehr! 🎉
Weitere Details zu den Fortschritten dieses Monats finden Sie in den Release Notes der Erweiterung.


Theme: GitHub Dark Theme
GitHub Pull Requests und Issues
Die Arbeit an der GitHub Pull Requests und Issues-Erweiterung, mit der Sie Pull-Requests und Issues bearbeiten, erstellen und verwalten können, wird fortgesetzt. Eines der Highlights dieses Monats ist, dass "Mit der Arbeit beginnen" für Issues erweitert wurde, um auch an Issues außerhalb Ihres aktuellen Repositories arbeiten zu können.
Um alle neuen Funktionen und Updates zu erfahren, lesen Sie das vollständige Changelog für die Version 0.29.0 der Erweiterung.
Jupyter
Die Arbeit an der Jupyter-Erweiterung wird fortgesetzt. Um alle neuen Funktionen und Updates zu erfahren, lesen Sie das vollständige Changelog für die Juli-Version der Erweiterung.
Wenn Sie mehr über den Weg von VS Code zur Ermöglichung nativer Unterstützung für Notebooks erfahren möchten, lesen Sie den aktuellen Blogbeitrag "Coming of Age of Notebooks".
Interaktives Fenster
Das Jupyter Interactive Window bietet eine alternative Möglichkeit, Jupyter Notebooks zu erstellen und damit zu arbeiten, indem eine Textdatei anstelle einer Notebook-Oberfläche verwendet wird. Letzten Monat haben wir eine aktualisierte Version des Jupyter Interactive Window vorgestellt, die eine tiefere Workbench-Integration bietet, einschließlich Unterstützung für Themes, benutzerdefinierte Tastenkombinationen, Snippets, Kompatibilität mit Erweiterungen und mehr. Vielen Dank an unsere Benutzer für das Feedback über GitHub-Issues zur Vorschauversion. Das integrierte Interactive Window ist nun die Standardoberfläche in 1.59. Die vorherige Oberfläche bleibt unter der Einstellung "jupyter.enableNativeInteractiveWindow": false verfügbar und wird in einer zukünftigen Version entfernt. Wir freuen uns auf Ihr Feedback.

Zeilenweise Ausführung
Wir haben daran gearbeitet, die Funktion "Zeilenweise Ausführung" in Jupyter Notebooks zu unterstützen. Diese Funktion ist im Wesentlichen ein vereinfachter Debug-Modus, der es Ihnen ermöglicht, den Code Ihrer Zelle Zeile für Zeile durchzustehen, ohne komplexe Debug-UI. Dies ist noch experimentell, aber Sie können es ausprobieren, indem Sie "jupyter.experimental.debugging": true einstellen, Version 6 von ipykernel in Ihrem ausgewählten Kernel installieren und dann die Schaltfläche Zeilenweise Ausführung in der Zellleiste auswählen.

Python
In der Python-Erweiterung haben wir die Sortierung der Liste von Python-Interpretern verbessert. In der Vergangenheit wurden virtuelle Umgebungen am unteren Ende der Liste angezeigt, was zu viel Scrollen und/oder Suchen führte. Virtuelle Umgebungen im Projektstammverzeichnis werden nun zuerst angezeigt, gefolgt von global installierten Umgebungen.

Dev Containers devcontainer CLI
Die Dev Containers-Erweiterung zur Arbeit mit Docker-Containern innerhalb von VS Code enthält nun eine devcontainer-Befehlszeilenschnittstelle, mit der Sie einen Ordner in einem Dev-Container öffnen (devcontainer open) oder ein Dev-Container-Image erstellen (devcontainer build) können.
Neue Funktionen und Fehlerbehebungen der Remote Development-Erweiterung finden Sie in den Release Notes für Remote Development.
Vorschau-Features
Automatische Spracherkennung für unbenannte Dateien
Wir freuen uns, die erste Vorschau der automatischen Spracherkennung für unbenannte Dateien anzukündigen, die maschinelles Lernen verwendet, um zu erkennen, welche Sprache Sie gerade programmieren, und automatisch den Sprachmodus der unbenannten Datei festzulegen. Dieses Feature nutzt die Open-Source-ML-Bibliothek Tensorflow.js und das ML-Modell von Guesslang vom GitHub-Benutzer @yoeo.
In dieser Version ist dieses Feature standardmäßig deaktiviert, aber wir planen, es in der nächsten Iteration zum Standard zu machen. Um es zu aktivieren, wenden Sie folgende Einstellung an:
"workbench.editor.untitled.experimentalLanguageDetection": true
Um das Feature in Aktion zu sehen, öffnen Sie eine unbenannte Datei (Datei > Neue Datei) und fügen Sie Quellcode in Ihren Editor ein.
Hier ist ein Beispiel für die automatische Erkennung von Python-Code:

Theme: Panda Theme
Zusätzlich können Sie sehen, welche Sprache(n) erkannt werden, indem Sie den Sprachselektor öffnen.

Theme: Panda Theme
Hinweis: Wenn die Spracherkennung nicht ausreichend sicher ist, bleiben Sie in Ihrem aktuellen Sprachmodus und es werden keine Ergebnisse im Sprachselektor angezeigt, bis die Spracherkennung mehr Sicherheit hat.
Die Einstellung ermöglicht es Ihnen auch, Sprachüberschreibungen anzugeben, um Sprachmodi festzulegen, von denen Sie nicht automatisch wegwechseln möchten.
Hier ist ein Beispiel, um Markdown-Dateien nicht automatisch zu erkennen:
"workbench.editor.untitled.experimentalLanguageDetection": true
"[markdown]": { "workbench.editor.untitled.experimentalLanguageDetection": false }
Mit den obigen Einstellungen wird die automatische Spracherkennung **nicht** ausgeführt, während Sie eine unbenannte Markdown-Datei bearbeiten. Wenn Sie jedoch eine unbenannte Datei eines anderen Typs ändern, wird die automatische Spracherkennung mit dem Inhalt dieser Dateien ausgeführt.
Wir haben den Code, der mit dem ML-Modell interagiert, in eine eigene Bibliothek aufgeteilt und als npm-Paket im vscode-languagedetection Repo veröffentlicht.
Lassen Sie uns wissen, wie die automatische Spracherkennung für unbenannte Dateien für Sie funktioniert!
TypeScript 4.4
Diese Version enthält Unterstützung für die bevorstehende Veröffentlichung von TypeScript 4.4. Mehr über die neuen Sprachfunktionen und Verbesserungen in TypeScript 4.4 erfahren Sie im TypeScript-Blog. Einige Highlights für die Werkzeuge:
- Inlay-Hinweise für Parameternamen und -typen sowohl in JavaScript- als auch in TypeScript-Dateien.
- Grundlegende Rechtschreibvorschläge in reinen JavaScript-Dateien. Diese werden nur angezeigt, wenn der TypeScript-Sprachdienst sicher bezüglich des Fehlers und der Korrektur ist.
Um die nächtlichen Builds von TypeScript 4.4 zu nutzen, installieren Sie die TypeScript Nightly-Erweiterung.
Bitte teilen Sie uns Ihr Feedback mit und lassen Sie uns wissen, wenn Sie auf Fehler mit TypeScript 4.4 stoßen.
Disassembly-Ansicht
Dank eines großen Beitrags des Microsoft C++-Teams freuen wir uns, in diesem Meilenstein eine Vorschau einer Debug-Disassembly-Ansicht aufzunehmen.
Die Disassembly-Ansicht kann über das Kontextmenü eines Editors geöffnet werden, um den disassemblierten Quellcode des aktiven Stack-Frames anzuzeigen. Sie unterstützt das schrittweise Ausführen von Assembleranweisungen und das Setzen von Haltepunkten auf einzelnen Anweisungen.
Die Disassembly-Ansicht ist nur in einer aktiven Debug-Sitzung verfügbar und wenn die zugrunde liegende Debug-Erweiterung sie unterstützt. Derzeit können nur die Microsoft C++- und Mock Debug-Erweiterungen die Disassembly-Ansicht speisen.

Aus technischer Sicht unterstützt die Implementierung der Disassembly-Ansicht durch VS Code vier weitere Funktionen des Debug Adapter Protocol:
- Die Anfrage
disassemblyzur Bereitstellung des disassemblierten Quellcodes für eine Speicheradresse. - Die Eigenschaft
instructionPointerReferencebei Stack-Frames. - Die Eigenschaft
granularitybei den Schrittanfragen. - Instruktions-Haltepunkte und die Anfrage
setInstructionBreakpoints.
Erweiterungs-Authoring
Testing APIs
Letzten Herbst begannen wir mit der Arbeit an der nativen Unterstützung für das Ausführen von Tests in VS Code, und diesen Monat wurde die erste Reihe von Test-bezogenen APIs finalisiert. Diese APIs bieten größere Flexibilität, bessere Leistung und eine reichhaltigere UX als das, was bisher in Erweiterungen gefunden wurde. Schauen Sie sich die Anleitung zum Schreiben von Test-Erweiterungen an, um tiefer einzutauchen.

Theme: codesong
Bestehende Benutzer der Test Explorer UI-Erweiterung können das native Erlebnis erhalten, indem sie testExplorer.useNativeTesting auf true setzen. Die Konvertierung ist jedoch eine Reflexion der bestehenden API der Test Explorer UI-Erweiterung, sodass einige Funktionen wie die Unterstützung für Rich Diff nicht enthalten sind.
Eine der ersten Erweiterungen, die die Testing API übernommen hat, war der Microsoft Test Runner for Java, der im Extension Pack for Java enthalten ist.

Contribution Point für das Menü "Neue Datei"
Erweiterungen, die eine Möglichkeit zum Erstellen eines neuen Dateieditors bieten, z. B. Notebooks oder benutzerdefinierte Editoren, können nun Befehle zum neuen Menü-Contribution-Point file/newFile beisteuern. Dieses Menü ist über den Punkt Neue Datei... auf der Willkommensseite oder im Menü Datei zugänglich.

Reichhaltiger Tooltip für die Statusleiste
Reichhaltige Tooltips mit Links und Symbolen werden nun für Statusleistenelemente StatusBarItem.tooltip: string | IMarkdownString unterstützt.

- Wenn
MarkdownString.supportThemeIconstrue ist, können Sie Symbole mit der Syntax$(iconName)verwenden. - Wenn die
MarkdownStringvertrauenswürdig ist, können Sie auch Befehlslinks hinzufügen. Syntax:([test](command:vscode.newWindow)).
Warnfarben der Statusleiste
Statusleistenelemente, die Warnungen darstellen, können die neu hinzugefügten Farben statusBarItem.warningBackground und statusBarItem.warningForeground verwenden.
Objekteinstellungen ohne additionalProperties
Objekteinstellungen müssen additionalProperties auf false gesetzt haben, damit ein Objekt im Einstellungen-Editor unterstützt wird. Andernfalls interpretiert der Einstellungen-Editor die Einstellung als komplexe Einstellung, die jede Form annehmen kann, und leitet den Benutzer zur Einstellungsdatei-JSON weiter.
Mehrzeilige Zeichenketteneinstellungen
Um Unterstützung für eine mehrzeilige Zeichenketteneinstellung im Einstellungen-Editor hinzuzufügen, fügen Sie "editPresentation": "multilineText" als Schlüssel-Wert-Paar zur Zeichenketteneinstellung hinzu. Die Änderung einer Zeichenketteneinstellung zu mehrzeilig bewirkt, dass der Einstellungen-Editor den Einstellungswert in einem mehrzeiligen Textbereich anstelle eines einzeiligen Eingabefeldes rendert.
Aktualisierte Codicons
Wir haben die folgenden neuen Symbole zu unserer Codicon-Bibliothek hinzugefügt
![]()
azurecompass-activecompass-activecompass-dotcompassdebug-alldebug-coveragegit-pull-request-closedgit-pull-request-draftissue-draftlayers-activelayers-dotlayers
Textdokument-Änderungsgrund
Wenn das Ereignis workspace.onDidChangeTextDocument ausgelöst wird, gibt eine neue Eigenschaft reason im Ereignisobjekt an, ob die Textänderung durch eine Rückgängig- oder Wiederherstellungsoperation verursacht wurde.
Language Server Protocol
Eine neue Version des Language Server Protocol, zusammen mit den entsprechenden npm-Modulen, wurde veröffentlicht. Die Version 3.17 enthält einen Vorschlag für die Details der Label von Vervollständigungselementen, der mit den neuesten Änderungen in VS Code selbst übereinstimmt.
Debug Adapter Protocol
Finalisierte "writeMemory"-Anfrage und "memory"-Ereignisvorschlag
Die Anfrage writeMemory wurde finalisiert und ist nun in Version 1.48 des Debug Adapter Protocol und der entsprechenden npm-Module verfügbar. Wenn ein Debug-Adapter die Fähigkeit supportsWriteMemoryRequest hat, können Clients die Anfrage writeMemory verwenden, um Bytes an einer gegebenen Stelle in den Speicher zu schreiben.
Das memory-Ereignis hat einen Vorschlag, der im nächsten Meilenstein in DAP aufgenommen wird.
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.
isDefault für TaskGroup
Die Eigenschaft group existiert bei Aufgaben, die in einer tasks.json-Datei definiert sind, und wird auch über die Aufgaben-API bereitgestellt. Die Eigenschaft group hat eine Eigenschaft isDefault, die bisher nicht in der API verfügbar war. Dieser Vorschlag macht die Eigenschaft isDefault als schreibgeschützt auf der TaskGroup verfügbar, sodass Erweiterungen lesen können, welche Aufgabe die Standardaufgabe für eine Gruppe ist, aber die Konfiguration eines Benutzers nicht überschreiben können, indem sie die Standardeinstellung für eine Gruppe festlegen.
forceRecreate für AuthenticationGetSessionOptions
Bis jetzt hatte die API getSession, die zum Abrufen eines Authentifizierungssitzungsobjekts verwendet wird, nie die Möglichkeit, den Benutzer zum Anmelden aufzufordern. Das Auffordern zur Anmeldung ist für Authentifizierungsdienste wie GitHub erforderlich, die SAML/Single Sign On (SSO) mit einem Zugriffstoken verwenden, das schließlich den Zugriff auf Ressourcen verliert, wenn eine SSO-Sitzung abläuft. Dieser Vorschlag fügt AuthenticationGetSessionOptions eine weitere Eigenschaft namens forceRecreate hinzu, mit der Sie den Benutzer erneut auffordern können, sich anzumelden. Eine modale Erfahrung, ähnlich wie bei der Angabe von createIfNone, wird dem Benutzer angezeigt.
Technik
iFrame-basierte Webviews werden jetzt überall auf dem Desktop verwendet
Diesen Monat haben wir unseren Übergang von Electron's <webview>-Tag-Element zu normalen <iframe>-Element-basierten Webviews abgeschlossen. Dies stimmt die Implementierung von VS Code-Webviews über Desktop und Web besser aufeinander ab und ermöglicht uns auch, viel redundanten Code zu entfernen.
Electron 13 Update
In diesem Meilenstein haben wir die Erkundung zur Bündelung von Electron 13 in VS Code abgeschlossen und wir möchten uns bei allen bedanken, die am Testen und Self-Hosting auf Insiders beteiligt waren. Dies ist eine Hauptversion von Electron und enthält Chromium 91.0.4472.124. Es gibt keine Änderung an der Node.js-Version mit dieser Veröffentlichung, und sie bleibt v14.16.0.
Fortschritt bei der Unterstützung der Electron-Sandbox
Da wir die VS Code-Workbench weiterhin für die Aktivierung von Electron's Sandbox vorbereiten, wollten wir den gemischten Sandbox-Modus unter Linux aktivieren und nicht mehr das Bündeln mit dem CLI-Argument --no-sandbox in unseren verteilten Paketen deb, rpm, snap und tar-Archiv. Chromium hat ein mehrschichtiges Sandboxing-Modell unter Linux. Wenn Chromium die Namespace-Sandbox für Layer-1 nicht verwenden kann, versucht es, die setuid-Sandbox über das Hilfsprogramm chrome-sandbox zu verwenden, das neben der Anwendungsbinärdatei ausgeliefert wird. Damit die setuid-Binärdatei funktioniert, muss sie folgende Bedingungen erfüllen:
- Die Sandbox-Binärdatei muss vom Chromium-Prozess ausführbar sein.
- Sie muss SUID und für andere ausführbar sein.
Wir konnten diese Bedingungen für deb- und rpm-Pakete beibehalten. Es ist derzeit nicht möglich, diese Berechtigungen für Snap zu erreichen, und wir verfolgen Issue #127140, um Snap-Pakete zukünftig zu adressieren.
Was die Verwendung des Tar-Archivs betrifft, so schlägt es mit folgender Fehlermeldung fehl, wenn die Anwendung die Namespace-Sandbox nicht verwenden kann, was beim Ausführen in Containern der Fall sein kann:
FATAL:setuid_sandbox_host.cc(158)] The SUID sandbox helper binary was found, but is not configured correctly. Rather than run without sandboxing I'm aborting now. You need to make sure that chrome-sandbox is owned by root and has mode 4755.
Wenn dies passiert, können Sie eine der folgenden zwei Optionen verwenden, um es zum Laufen zu bringen:
-
Die Berechtigungen des
setuid-Helpers reparieren.sudo chown root <path-to-vscode>/chrome-sandbox sudo chmod 4755 <path-to-vscode>/chrome-sandbox -
Mit dem Flag
--no-sandboxausführen.
Verbesserungen bei Smoke-Tests
Wir führen eine Reihe von Smoke-Tests durch, die bei jedem Build ausgelöst werden, VS Code (sowohl Desktop als auch Web) starten und verschiedene UI-Elemente überprüfen, um die korrekte Funktionalität sicherzustellen. In diesem Meilenstein haben wir in diese Infrastruktur investiert, um die manuelle Smoke-Tests von unserer Release-Checkliste entfernen zu können.
Die Smoke-Tests laufen nun auf allen Plattformen (macOS, Linux und Windows). Darüber hinaus wurde eine unserer aufwendigeren Smoke-Test-Suiten, die speziell auf Regressionen zwischen der letzten Stable-Version von VS Code und der neuen Version prüft, automatisiert, um bei jedem Commit ausgeführt zu werden.
Schließlich haben wir dank der fantastischen Playwright-Bibliothek, die wir für automatisierte Web-Smoke-Tests verwenden, ihre Tracing-Fähigkeiten aktiviert, um uns das Wiederholen fehlschlagender Smoke-Tests mit ihrem Trace Viewer-Tool zu ermöglichen.
Bemerkenswerte Fehlerbehebungen
- 26425: Schaltfläche "Änderungen öffnen" sollte nicht angezeigt werden, wenn keine Änderungen vorhanden sind.
- 100815: Externes Terminal defekt, wenn mit Remote-WSL verbunden.
- 106981: Terminal-Cursor-Geisterbild, wenn die Fenstervergrößerung auf -1 eingestellt ist.
- 127959: Debug-Panel öffnet sich, wenn der Debugger pausiert.
- 129059: Objekt-Widget im Einstellungen-Editor zeigt die Beschreibung nicht an.
- 129070: Dropdown-Einstellungswert kann nicht nur durch Drücken der OK-Schaltfläche korrigiert werden.
- 129415: Benutzertasks können im Einzelfilmodus nicht ausgeführt werden.
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)
- @CodeCrazy-ywt
- ArturoDent (@ArturoDent)
- Alexander (@usernamehw)
Beiträge zu vscode
- @71 (Grégoire Geis): platform/configuration: leere Schlüssel werden vom Konfigurationsparser ignoriert PR #128909
- @adaex (Aex): Unterstützung für eslintrc.json und seti-ui-Symbol hinzufügen PR #123404
- @alanrenmsft (Alan Ren)
- Behebung des Problems mit der maximalen Aufruflänge PR #119929
- Dropdown-Pfeil vergrößern, um die Zugänglichkeitsanforderungen zu erfüllen PR #127839
- @alielbashir (Ali Elbashir): Tippfehler im GitHub Spaces-Link korrigiert PR #128120
- @andrewbranch (Andrew Branch): [typescript-language-features] suggest.allowIncompleteCompletions hinzugefügt und Trigger-Kind an TS Server übergeben PR #127673
- @door-bell (Tim): Einstellungen für die Empfindlichkeit der Listen-Scrollbewegung außerhalb des Editors und Terminals hinzufügen PR #110059
- @galexite (George White):
.ixxals mögliche C++-Erweiterung hinzufügen PR #127962 - @headerjson: isDefault zur TaskGroup API hinzufügen PR #128596
- @jeanp413 (Jean Pierre)
- Behebung des nicht funktionierenden Tastatur-Mehrfachauswahl in den Ansichten 'Geöffnete Editoren' und 'Quellcodeverwaltung' PR #128284
- Behebung des Fehlers, dass das Ziehen eines Ordners aus dem Explorer-Baum in das Terminal nicht mehr den Ordnerpfad kopiert PR #128419
- Behebung des Fehlers, dass "Python-Datei im Terminal ausführen" das Panel öffnet, obwohl ein Terminal-Editor verwendet wird PR #128866
- @joshspicer (Josh Spicer): Tippfehler in welcomePage.contribution.ts PR #127893
- @karolz-ms (Karol Zadora-Przylecki): Verbesserte Standardwerte für die Docker Compose-Sprache PR #128550
- @kieranlblack (Kieran Black): Einstellung zum Ändern des Kopiertrennzeichens hinzufügen PR #101197
- @kilbouri (Isaac Kilbourne): Commit-Nachricht PR #127849
- @Kingwl (Wenlu Wang)
- TS-Inline-Hinweise hinzufügen PR #113412
- Inlay Hints API für Monaco verfügbar machen PR #127391
- Inlay Hints verwenden standardmäßig editor.fontFamily PR #128181
- Automatische Faltung für Import-Spannen hinzufügen PR #128978
- @movermeyer (Michael Overmeyer)
- Alle zeitbasierten Snippet-Variablen mit derselben Zeit auflösen PR #128571
- Privates Feld aus dem Konstruktor entfernen PR #128857
- @nickdelja (Nick Delja): Kleinere Tippfehler behoben PR #129439
- @NSExceptional (Tanner Bennett): Spezifischere Dateitypbeschreibungen unter macOS bereitstellen PR #117713
- @shantaram3013 (Siddharth Singh): Walkthrough: Veraltete Eigenschaftsnamen aktualisiert PR #129041
- @SNDST00M (SNDST00M: M.U.N.I.N): Erweiterte Syntax für Theme-Anpassung PR #122969
- @ssigwart (Stephen Sigwart): Fold Jumping hinzufügen (Elternteil und Nächstes/Vorheriges auf derselben Ebene) PR #128450
- @suema0331: Fix#122454: Lange Terminaltitel abschneiden PR #122620
- @timfenney (Tim Fenney): Kopierbefehl-Label zu Tastenkombinationen hinzufügen. PR #125563
- @usjpin (Utkarsh Singh): Aktivitätsleisten-Hover beim Tippen ausblenden PR #128362
- @xisui-MSFT
- Disassemblierungsansicht PR #125737
- Fokusprobleme in der Disassemblierungsansicht beheben PR #129616
- Größere anfängliche Ansichtsgröße in der Disassemblierungsansicht PR #129651
- Disassemblierungsansicht öffnen sollte vorhanden, aber deaktiviert sein PR #129726
Beiträge zu vscode-extension-samples
- @gjsjohnmurray (John Murray): Fix #400 tree-view-sample: package.json, package-lock.json aktualisieren PR #401
- @jabbera (Mike): --enable-proposed-api zu launch.json hinzufügen PR #346
- @james1293: Zusätzliches parseTree entfernen PR #406
Beiträge zu vscode-languageserver-node
- @perrinjerome (Jérome Perrin): Dialog "Eine Anfrage ist fehlgeschlagen", der nicht geschlossen werden kann, beheben PR #787
Beiträge zu vscode-pull-request-github
- @binsee: Überprüfung der Fork-Details beheben PR #2806
- @iChenLei (ChenLei): chore: vscode-test durch @vscode/test-electron ersetzen PR #2842
Beiträge zu vscode-vsce
- @legomushroom (Oleg Solomka): Version von
azure-devops-node-apiaktualisieren PR #589
Beiträge zu debug-adapter-protocol
- @NipunaRanasinghe (Nipuna Ransinghe ): Informationen zum Ballerina Debug-Adapter aktualisieren PR #201
Beiträge zu language-server-protocol
- @leegbestand: Kommentar für jsonrpcReservedErrorRangeEnd aktualisieren PR #1315
Beiträge zu monaco-editor
- @Surm4 (Marcin): Farben-Sample-Update im Playground verfügbar gemacht. PR #2561
Beiträge zu monaco-languages
- @alefragnani (Alessandro Fragnani): Fügt das Schlüsselwort
strictzur Pascal-Sprache hinzu PR #153 - @jonatanklosko (Jonatan Kłosko): Zäuneinleitung in Codeblöcken im GitHub-Stil korrekt tokenisieren PR #149
- @lofcz (Matěj Štágl): Behebung des Renderings von Tags mit einem Bindestrich in Razor + Liquid PR #150