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

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:

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.

Dynamic Extensions view

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.

Custom Extension hover

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).

Extension Runtime Status

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.

Extension Details

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.

Object setting showing validation errors

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.

Drag and drop for array settings

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

An example of a multiline string setting

Erweiterte Syntax für die Themenanpassung

Die unten aufgeführten Farbanpassungseinstellungen ermöglichen es Benutzern, Farben des aktuellen Themas anzupassen.

  • workbench.colorCustomizations
  • editor.tokenColorCustomizations
  • editor.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.undoRedoPerCell ist nun auf true geändert.

notebook layout improvements

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.

Example of updated notebook code cells

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

Example of notebook toolbar text

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.

Shared editor group view state

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.

Drag and drop terminal across windows

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.

The terminal profile dropdown displays indicates the extension terminal profile is set as the default

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.

Git output in terminal with underline and strikethrough text

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.

Highlighted active terminal

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.

Terminal tab without animation and play button displayed

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.

Debug/run split button shown for Java

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 webvivew DevTools.
  • Dateisystemüberwachung für automatisch generierte Dateien.
  • Und mehr! 🎉

Weitere Details zu den Fortschritten dieses Monats finden Sie in den Release Notes der Erweiterung.

Live Preview Debugging

Live Preview new browser features

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.

Shift+Enter to run code in the Interactive window

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.

Run by line

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.

List of Python interpreters

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:

paste a code snippet right into VS Code and it will detect the language

Theme: Panda Theme

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

the language picker also shows the detected languages if there are any

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.

Disassembly view in Mock Debug extension

Aus technischer Sicht unterstützt die Implementierung der Disassembly-Ansicht durch VS Code vier weitere Funktionen des Debug Adapter Protocol:

  • Die Anfrage disassembly zur Bereitstellung des disassemblierten Quellcodes für eine Speicheradresse.
  • Die Eigenschaft instructionPointerReference bei Stack-Frames.
  • Die Eigenschaft granularity bei 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.

Image showing the test explorer and rich diff view experience

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.

Java extension using the native test API in VS Code

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.

New File menu in use via Welcome page

Reichhaltiger Tooltip für die Statusleiste

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

Rich Status bar hover

  • Wenn MarkdownString.supportThemeIcons true ist, können Sie Symbole mit der Syntax $(iconName) verwenden.
  • Wenn die MarkdownString vertrauenswü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

List of updated icons

  • azure
  • compass-active
  • compass-active
  • compass-dot
  • compass
  • debug-all
  • debug-coverage
  • git-pull-request-closed
  • git-pull-request-draft
  • issue-draft
  • layers-active
  • layers-dot
  • layers

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.json Ihrer 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-sandbox ausfü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

Beiträge zu vscode

Beiträge zu vscode-extension-samples

Beiträge zu vscode-languageserver-node

Beiträge zu vscode-pull-request-github

Beiträge zu vscode-vsce

Beiträge zu debug-adapter-protocol

Beiträge zu language-server-protocol

Beiträge zu monaco-editor

Beiträge zu monaco-languages

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