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

Juli 2018 (Version 1.26)

Update 1.26.1: Das Update behebt diese Probleme.

Downloads: Windows: x64 | Mac: Intel | Linux 64-Bit: deb rpm tarball | 32-Bit: deb rpm tarball


Willkommen zur Juli 2018-Version von Visual Studio Code. Es gibt eine Reihe von wichtigen 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.
Sie können sich auch dieses Highlight-Video zur Version 1.26 vom Cloud Developer Advocate Brian Clark ansehen.

Die Release Notes sind in die folgenden Abschnitte unterteilt, die sich auf die Fokusbereiche von VS Code beziehen. Hier sind einige weitere Updates:

  • Workbench - Neues Layout des Menüs "Ansicht", Aktion zum Kopieren des relativen Pfads, Offline-Modus.
  • Integriertes Terminal - Verbesserte Unterstützung für mehrere Zeilen, Rendering-Verbesserungen.
  • Sprachen - Umwandlung von benannten Importen in Namespace-Importe, JSX-Faltung.
  • Debugging - Verbessertes Beenden von Sitzungen und Smart-Step-Debugging.
  • Vorschau-Funktionen - Anpassbare Symbolleiste und Menüleiste für Windows und Linux.
  • Erweiterungsentwicklung - QuickInput-API, Erweiterungspack-Deklaration, Webview-Titelleisten-Icons.

Insiders: Möchten Sie neue Funktionen so schnell wie möglich sehen? Sie können die nächtliche Insiders-Build herunterladen und die neuesten Updates ausprobieren, sobald sie verfügbar sind. Und für die neuesten Nachrichten, Updates und Inhalte zu Visual Studio Code folgen Sie uns auf Twitter @code!

Workbench

Brotkrümelnavigation

Der Editor hat nun eine Navigationsleiste über seinem Inhalt – wir nennen sie Breadcrumbs. Sie zeigt den aktuellen Speicherort an und ermöglicht es Ihnen, schnell zwischen Symbolen und Dateien zu navigieren. Um Breadcrumbs zu verwenden, aktivieren Sie sie mit dem Befehl Ansicht > Breadcrumbs anzeigen oder über die Einstellung breadcrumbs.enabled.

Bei Verwendung von Editor- Tabs (Standard) werden Breadcrumbs in einer separaten Zeile unter dem Editor-Titel angezeigt. Wenn Sie keine Editor-Tabs verwenden, werden Breadcrumbs als interaktiver Dateipfad neben dem Titel angezeigt.

Breadcrumbs enabled

Breadcrumbs zeigen immer den Dateipfad und mit Hilfe von Erweiterungen den Symbolpfad bis zur Cursorposition an. Die angezeigten Symbole sind dieselben wie in der Gliederungsansicht und "Gehe zu Symbol", sodass bestehende Erweiterungen einfach mit Breadcrumbs funktionieren.

Das Erscheinungsbild von Breadcrumbs kann angepasst werden. Wenn Sie sehr lange Pfade haben oder nur an Dateipfaden oder Symbolpfaden interessiert sind, können Sie die Einstellungen breadcrumbs.filePath und breadcrumbs.symbolPath verwenden. Beide unterstützen on, off und last und definieren, ob oder welchen Teil des Pfads Sie sehen.

Um mit Breadcrumbs zu interagieren, verwenden Sie den Befehl Breadcrumbs fokussieren oder drücken Sie ⇧⌘. (Windows, Linux Ctrl+Shift+.). Dies wählt das letzte Element aus und öffnet ein Dropdown-Menü, mit dem Sie zu einer Geschwisterdatei oder einem Geschwistersymbol navigieren können. Verwenden Sie die Tastenkombinationen (Windows, Linux Left) und (Windows, Linux Right), um zu Elementen vor oder nach dem aktuellen Element zu gelangen. Wenn das Dropdown-Menü erscheint, beginnen Sie einfach zu tippen – alle übereinstimmenden Elemente werden hervorgehoben und die beste Übereinstimmung wird für eine schnelle Navigation ausgewählt.

Breadcrumbs active

Sie können auch ohne den Picker mit Breadcrumbs interagieren. Drücken Sie ⇧⌘; (Windows, Linux Ctrl+Shift+;), um das letzte Element zu fokussieren, verwenden Sie (Windows, Linux Left) und (Windows, Linux Right) zur Navigation und Leertaste, um das Element im Editor anzuzeigen.

Quick Fixes im Problems-Panel

Sie können nun Quick Fixes aus dem Problems-Panel anwenden. Eine Glühbirne, die Quick Fixes anzeigt, erscheint, wenn Sie einen Problem-Eintrag mit der Maus überfahren oder ihn auswählen. Quick Fixes können durch Klicken auf die Glühbirne oder durch Öffnen des Kontextmenüs für den Problem-Eintrag angewendet werden.

Quick fixes

Hinweis: Die Glühbirnenanzeige wird nur angezeigt, wenn die Erweiterung, die Quick Fixes bereitstellt, Diagnostic-Informationen im Zusammenhang mit dem Quick Fix bereitstellt.

Benutzerinstallation für Windows

Wie in der letzten Version angekündigt, ist das Benutzerinstallationspaket für Windows jetzt stabil verfügbar. Die Installation des Benutzerinstallationsprogramms erfordert keine Administratorberechtigungen, da der Speicherort sich unter Ihrem Benutzerordner "Local AppData" (LOCALAPPDATA) befindet. Die Benutzerinstallation bietet auch eine reibungslosere Hintergrundaktualisierung.

Benutzerinstallation herunterladen

Wenn Sie derzeit das systemweite Windows-Installationsprogramm verwenden, werden Sie aufgefordert, die Benutzerinstallation zu installieren, die wir ab sofort empfehlen. Keine Sorge, alle Ihre Einstellungen und Erweiterungen bleiben während des Übergangs erhalten. Während der Installation werden Sie auch aufgefordert, die systemweite Installation zu deinstallieren.

Raster: Automatisches Maximieren minimierter Editoren

Eine Funktion, die wir bei der Einführung des Raster-Editor-Layouts im letzten Meilenstein verloren hatten, war die Möglichkeit, dass Editoren automatisch maximiert werden, wenn sie fokussiert werden und sich in ihrem minimierten Zustand befinden. Diese Funktion funktioniert nun wieder wie zuvor.

Grid maximize

Hinweis: Sie können den aktiven Editor jederzeit über Ansicht: Editorgruppe maximieren (workbench.action.minimizeOtherEditors) maximieren oder alle Editorgrößen zurücksetzen über Ansicht: Editorgruppen-Größen zurücksetzen (workbench.action.evenEditorWidths).

Bereinigung des Ansichtsmenüs

Das Menü Ansicht wurde sehr groß und wir haben beschlossen, viele der Einträge in ein separates Untermenü Darstellung zu verschieben, um es zu bereinigen.

View menu

Relativen Pfad kopieren

VS Code hatte schon immer eine Aktion zum Kopieren des absoluten Pfads einer Datei in die Zwischenablage (⌘K ⌥⌘C (Windows Shift+Alt+C, Linux Ctrl+K Ctrl+Alt+C)). Jetzt gibt es eine neue Aktion Relativen Pfad kopieren (⌘K ⇧⌥⌘C (Windows Ctrl+K Ctrl+Shift+C, Linux Ctrl+K Ctrl+Shift+Alt+C)), um den Dateipfad relativ zum Stammordner des Arbeitsbereichs zu kopieren.

Hinweis: Sie können diese Aktion über das Kontextmenü (z. B. auf einem Tab oder einer Datei im Datei-Explorer) erreichen, indem Sie die Shift-Taste (Alt-Taste auf macOS) gedrückt halten, bevor Sie das Menü öffnen.

Benutzerdefinierte Ansicht: Datei-Ressourcen-Dekorationen

Benutzerdefinierte Ansichten, die Datei-Ressourcen anzeigen, zeigen nun Datei-Dekorationen (Git, Probleme) an. Sie können diese über die Einstellungen explorer.decorations.colors und explorer.decorations.badges deaktivieren, was sie im Datei-Explorer, in offenen Editoren und benutzerdefinierten Ansichten deaktiviert.

Custom view decorations

Npm-Skripte aus package.json ausführen

Sie können nun ein npm-Skript in einer package.json-Datei über den Hover, wie unten gezeigt, oder über das Kontextmenü ausführen.

npm script hover

Öffnen von Ordner-URIs

Sie können nun eine URI als Ordner in VS Code öffnen, wenn eine Erweiterung einen FileSystemProvider für diese URI bereitstellt. Wir haben ein neues Kommandozeilenargument --folder-uri eingeführt, um dies zu tun.

Der folgende CLI-Befehl öffnet das VS Code GitHub-Repository als Ordner, wenn Sie die RemoteHub-Erweiterung installiert haben.

code --folder-uri remotehub://github.com/microsoft/vscode

Open folder URI

Schnelles Rendern

Beim Start wird das grundlegende Workbench-Layout nun viel schneller wiederhergestellt. Die Wiederherstellungsreihenfolge ist Aktivitätsleiste, Seitenleiste und Statusleiste, gefolgt von Headern und Symbolen, und dann werden der Explorer und der Editorbereich gefüllt.

Rapid render

Schnelles Rendern soll die wahrgenommene Leistung verbessern, da die Zeit, in der Sie eine leere Leinwand betrachten, reduziert wird. Wir haben weitere Ideen zur Verbesserung der Rendering-Leistung und sind an Ihrem Feedback interessiert.

Ausgabefenster

Die Haupt-, Fenster- und gemeinsamen Prozesse von VS Code haben jeweils einen eigenen Protokollkanal, auf dem Sie nun die Telemetrieereignisse anzeigen können, die gesendet werden, wenn die Protokollebene auf "Trace" gesetzt ist. Daten, die für alle Telemetrieereignisse gemeinsam sind, sind aus Gründen der Kürze hier nicht sichtbar. Die vollständige Nutzlast jedes Telemetrieereignisses wird in einer separaten Protokolldatei namens telemetry.log protokolliert, auf die Sie über den Befehl Entwickler: Protokolldatei öffnen... zugreifen können.

Offline-Modus

Einige Benutzer möchten keine ausgehenden Netzwerkanfragen von VS Code, es sei denn, sie rufen gezielt Funktionen auf, die Online-Zugriff erfordern. Um diesen Offline-Modus zu unterstützen, haben wir neue Einstellungen hinzugefügt, um Funktionen wie die automatische Überprüfung von Erweiterungsaktualisierungen, Abfragen von Einstellungen für A/B-Experimente und das Abrufen von Online-Daten für Autovervollständigungen zu deaktivieren.

Nachfolgend finden Sie die vollständige Liste der Einstellungen zur Steuerung von VS Code-Funktionen, die Netzwerkanfragen stellen

  • update.mode
  • update.showReleaseNotes
  • extensions.autoupdate
  • extensions.autoCheckUpdates
  • extensions.showRecommendationsOnlyOnDemand
  • workbench.settings.enableNaturalLanguageSearch
  • workbench.enableExperiments
  • telemetry.enableTelemetry
  • telemetry.enableCrashReporter
  • git.autofetch
  • npm.fetchOnlinePackageInfo

Barrierefreiheitsverbesserungen

Wir haben eine große Anzahl von Barrierefreiheits-Problemen behoben – hauptsächlich in Bezug auf Tastatur-Navigation, Screenreader-Unterstützung und Farbkontrast. Die vollständige Liste finden Sie hier.

Integriertes Terminal

Spaltenauswahl

Spaltenauswahl wird jetzt im integrierten Terminal über Alt+Klick unterstützt.

Terminal column selection

Verbesserte Unterstützung für mehrere Zeilen

Doppelklicken, um Wörter im Terminal auszuwählen, wählt nun Wörter aus, die über Zeilen hinweg aufgeteilt sind.

Frontend und Backend sind nun synchronisiert

Der Datenstrom, der in das integrierte Terminal gelangt, ist nun mit dem zugrunde liegenden Pseudoterminal-/Shell-Prozess synchronisiert. Das bedeutet, dass die in das Terminal gelangenden Daten den UI-Thread nicht mehr überfluten und Unverantwortlichkeit verursachen können, SIGINT (Strg+C) immer reagieren sollte und der time-Befehl genaue Ergebnisse liefern sollte.

Dynamisches Textur-Atlas

Das integrierte Terminal verwendet nun standardmäßig einen "dynamischen Textur-Atlas" für das Canvas-Rendering. Dies ändert die von Terminal verwendete Caching-Strategie zum Speichern von Zeichen-Glyphen. Anstatt einer festen Menge von Glyphen auf dem Standardhintergrund werden Glyphen nun bei Bedarf dem Textur-Atlas hinzugefügt, unabhängig vom verwendeten Hintergrund. Dies sollte die Startzeit des ersten Terminals und die Rendering-Zeit von Zeichen, die nicht den Standardhintergrund verwenden, reduzieren und die allgemeine Rendering-Leistung verbessern.

Dies ist eine Upstream-Community-Beitrag zu xterm.js.

Sprachen

TypeScript 3.0

VS Code wird nun mit TypeScript 3.0.1 ausgeliefert. Dieses wichtige Update bringt Unterstützung für Projekt-Referenzen, bessere Unterstützung für Tupel und andere Sprach- und Tooling-Funktionen. Sie können mehr über TypeScript 3.0 hier lesen.

Bessere Fehlerberichterstattung

Das TypeScript-Team hat viel Arbeit geleistet, um JavaScript- und TypeScript-Fehlermeldungen intelligenter und klarer zu machen. Einige Fehlermeldungen enthalten nun Links zu relevanten Stellen im Quellcode.

Related locations showing in a diagnostic. Clicking on 'box.ts' will show the definition of 'width' in 'box'

Meldungen für Unions und andere komplexe Typen sollten ebenfalls prägnanter und hilfreicher sein. Zum Beispiel konnte ein einfacher Typfehler in JSX manchmal eine komplexe Fehlermeldung wie diese erzeugen

How this simple type error used to be reported by TypeScript 2.8

Dank TypeScript 3.0 ist der Fehler in VS Code 1.26 viel besser lesbar.

How the error is now reported

JSX-Tag-Vervollständigung

JSX-Tags werden nun automatisch geschlossen, wenn Sie in einer JavaScript- oder TypeScript-Datei > eingeben.

Tag completion of JSX tags

Dieses Verhalten entspricht dem, was VS Code bereits in HTML-Dateien bot. Das automatische Schließen von Tags kann durch Setzen von "javascript.autoClosingTags": false und "typescript.autoClosingTags": false deaktiviert werden.

Quick Fix "Alle fehlenden Importe hinzufügen"

Der Quick Fix "Fehlenden Import hinzufügen" kann nun auf alle fehlenden Importe in einer JavaScript/TypeScript-Datei angewendet werden.

Adding multiple missing imports with a single quick fix

Dieser Quick Fix fügt nur Importe für Symbole mit einer einzigen potenziellen Definition hinzu. Wenn es mehrere potenzielle Definitionen eines Symbols im aktuellen Projekt gibt, z. B. wenn zwei verschiedene Dateien ein Symbol namens Button exportieren, müssen Sie den einzelnen Fehler per Quick Fix beheben und den gewünschten Import auswählen.

Um diesen Quick Fix in JavaScript-Dateien zu verwenden, aktivieren Sie die semantische Prüfung.

JSX-Faltung

JSX-Tags sind nun faltbar, wenn Syntax-bewusste Faltung verwendet wird.

Folding JSX tags

Konvertierung zwischen benannten Importen und Namespace-Importen

Zwei neue Refactorings ermöglichen es Ihnen, schnell zwischen benannten Importen und Namespace-Importen in JavaScript und TypeScript zu konvertieren.

convert to namespace import

Navigieren Sie schnell zu Projekt-Referenzen in jsconfig.json und tsconfig.json, indem Sie auf Projekt-Referenzpfade mit Strg klicken (Cmd+Klick auf macOS).

Cmd click on the path to open the referenced project's tsconfig

Der Pfad für extends ist nun ebenfalls anklickbar.

Debugging

Verbessertes Verhalten beim Debugging-Stopp

In früheren Versionen hat die Aktion Debuggen: Beenden (auf der Debug-Symbolleiste zu finden) einen Debug-Target und seine Kindprozesse immer sofort beendet, ohne dem Debug-Target eine Chance zu geben, sich ordnungsgemäß zu bereinigen. Einige Benutzer mochten dieses Verhalten nicht, da sie gezwungen waren, nach Beendigung einer Debug-Sitzung manuelle Bereinigungen vorzunehmen.

In dieser Version haben wir die Aktion Debuggen: Beenden wie folgt verbessert:

  1. Beim ersten Drücken von Beenden wird das Debug-Target nicht mehr sofort beendet, sondern es wird aufgefordert, sich ordnungsgemäß herunterzufahren (und alles notwendige zu bereinigen).

  2. Wenn im Shutdown-Code keine Breakpoints (oder Probleme) vorhanden sind, werden das Debug-Target und die Debug-Sitzung beendet. Der Benutzer wird keinen Unterschied im Verhalten zu früheren Versionen von VS Code feststellen.

  3. Wenn der Debugger jedoch einen Breakpoint im Shutdown-Code trifft oder wenn das Debug-Target nicht von selbst ordnungsgemäß beendet wird, wird die Debug-Sitzung nicht beendet.

  4. In diesem Fall beendet das erneute Drücken der Schaltfläche Beenden das Debug-Target zwangsweise. Wenn Sie also sehen, dass eine Debug-Sitzung nicht beendet wird, wenn Sie auf die rote Schaltfläche Beenden klicken, drücken Sie die Schaltfläche erneut, um das Debug-Target zwangsweise herunterzufahren.

Hinweis: Diese Funktion wird nur von Debugger-Erweiterungen unterstützt, die sich dafür entschieden haben, sie zu implementieren. Derzeit ist dies nur der integrierte Node.js-Debugger. Wir erwarten, dass andere Debug-Erweiterungen diese Funktion bald unterstützen werden.

Geändertes Smart-Step-Verhalten für Node/Chrome-Debugging

Zuvor führte "smartStep": true dazu, dass der Node.js-Debugger bei Quellcode ohne Source Maps nicht anhielt. Dies kann auf zwei Arten geschehen:

  • Dateien, die überhaupt keine Source Maps haben (Quellcode, der nicht transpiliert wurde oder .js-Dateien, die mit Node-Modulen ausgeliefert werden).
  • Transpilierte Dateien, die Source Maps haben, aber einzelne Zeilen, die nicht gemappt sind (zusätzliche Zeilen, die TypeScript beim Herunterkompilieren einiger Funktionen wie async/await einfügt).

Mit VS Code 1.26 wirkt sich "smartStep": true nur auf den zweiten Typ aus, Zeilen, die in einer Source Map fehlen. Jetzt können Sie in .js-Dateien hineinspringen und trotzdem TS-async/await-Code überspringen.

Wir haben dies geändert, weil wir erkannten, dass das alte Smart-Step-Verhalten zu aggressiv war. Das Überspringen von eingefügtem Code ist normalerweise korrekt, aber das Überspringen im ersten Szenario ist nur für einige Projekte und Benutzer sinnvoll. Darüber hinaus erledigt die Verwendung der Option skipFiles in Ihrer launch.json-Konfigurationsdatei die Abdeckung des Falls für ganze Dateien besser, da sie Dateien genauer ansprechen und schneller ist.

Wenn Sie also smartStep verwenden und feststellen, dass der Debugger keine Dateien ohne Source Maps mehr automatisch überspringt, können Sie skipFiles verwenden, um das frühere Verhalten wiederherzustellen. Sehen Sie sich Uninteressanten Code überspringen für Beispiele an, wie Sie skipFiles konfigurieren, um Quellcode in node_modules, internen Node-Dateien oder anderen Dateien zu überspringen, durch die Sie nicht steppen möchten.

Erweiterungen

Diese Version erleichtert die Suche nach Erweiterungen, indem IntelliSense-Autovervollständigungen zum Suchfeld für Erweiterungen hinzugefügt werden. Dies hilft Ihnen, Ihre Erweiterungssuchen zu verfeinern, um Ergebnisse nach Kriterien wie Kategorie und Installationsstatus zu filtern oder Ergebnisse nach Name, Bewertung oder Anzahl der Installationen zu sortieren. Geben Sie '@' oder ⌃Space (Windows, Linux Ctrl+Space) ein, um Vorschläge für unterstützte Abfrageparameter auszulösen.

Extension Search IntelliSense

Erweiterungspack-Verwaltung

Die Verwaltung von Erweiterungspacks ist in dieser Version erheblich reibungsloser geworden. Ein Erweiterungspack wird immer als eine einzige Einheit installiert, deinstalliert, aktiviert oder deaktiviert. Sie können nun auch eine Erweiterung, die zu einem Erweiterungspack gehört, deinstallieren oder deaktivieren, ohne das gesamte Erweiterungspack deinstallieren oder deaktivieren zu müssen.

Beim Öffnen von Erweiterungsdetails gibt es auch einen neuen Tab Erweiterungspack, der anzeigt, welche Erweiterungen im Erweiterungspack gebündelt sind.

Extension Pack

Hinweis: Dies erfordert die Übernahme durch die Erweiterungspacks. Weitere Informationen finden Sie unter Erweiterungspacks überarbeitet.

Erweiterungen über die Kommandozeile deaktivieren

Sie können Erweiterungen nun über die Kommandozeile deaktivieren, indem Sie das neue Argument --disable-extension verwenden.

  • code <Ordnerpfad> --disable-extension ms-python.python - Öffnet den Ordner mit deaktivierter ms-python.python-Erweiterung.
  • code <Ordnerpfad> --disable-extension ms-python.python --disable-extension ms-dotnettools.csharp - Öffnet den Ordner mit deaktivierten Erweiterungen ms-python.python und ms-dotnettools.csharp.

Vorschau-Features

Vorschau-Features sind noch nicht zur Veröffentlichung bereit, aber funktionsfähig genug, um sie zu nutzen. Wir freuen uns über Ihr frühes Feedback, während sie sich in der Entwicklung befinden.

Neuer Einstellungen-Editor

In diesem Meilenstein haben wir die Arbeit an einer grafischen Benutzeroberfläche zum Bearbeiten von Einstellungen fortgesetzt. Sie befindet sich noch in der Vorschau. Wenn Sie sie ausprobieren möchten, können Sie sie mit dem Befehl Einstellungen: Einstellungen (Vorschau) öffnen aufrufen. Wir würden uns über Ihr Feedback freuen – Sie können es in diesem GitHub-Issue hinterlassen.

New Settings editor

Einige der neuen Änderungen im Vergleich zum Vormonat sind:

  • Die Kopfzeilen-UX wurde überarbeitet und bereinigt, und die Aktionen zum Anzeigen nur geänderter Einstellungen sowie zum Öffnen des JSON-Editors wurden unter das Menü ... rechts verschoben.
  • Das Inhaltsverzeichnis links ist nun standardmäßig eingeklappt und erweitert sich beim Scrollen, um den aktuellen Abschnitt anzuzeigen.
  • Einstellungsbeschreibungen werden nun als Markdown gerendert. Einige Einstellungen enthalten externe Links zu relevanten Dokumenten, und Verweise auf andere Einstellungen sind nun anklickbare Links, die zur Einstellung scrollen. Die enumDescriptions von Enum-Typ-Einstellungen werden nun nach der Einstellungsbeschreibung angezeigt (auch im JSON-Editor).

setting links and Markdown

  • Ein neues Steuerelement für die Einstellungen files.exclude und search.exclude erleichtert das Hinzufügen oder Entfernen von Glob-Mustern und zeigt an, welche für den aktuellen Geltungsbereich angewendet werden.

new exclude control

  • Die Steuerelemente im Einstellungen-Editor sind nun thematisierbar. Sehen Sie sich die neuen Theme-Farben unter Neue Theme-Farben an.

Benutzerdefinierte Titelleiste und Menüs für Windows/Linux

In diesem Meilenstein haben wir die benutzerdefinierten Menüs unter Windows und Linux verbessert, wenn die benutzerdefinierte Titelleiste aktiviert ist. Sie befindet sich noch in der Vorschau, aber Sie können sie ausprobieren, indem Sie window.titleBarStyle in Ihrer settings.json auf custom setzen.

Einige Highlights sind:

  • Die Menüs sind nun thematisierbar. Sehen Sie sich die neuen Theme-Farben unter Neue Theme-Farben an.

    Themed Menus

  • Die Tastatur- und Mausinteraktion mit den Menüs ist kohärenter. Zuvor gab es mehrere Fokusindikatoren, die die Menüs unklar machten. Jetzt funktionieren die Menüs auf eine viel vertrautere Weise.

  • Viele Barrierefreiheits-Probleme wurden behoben, um die Erfahrung für Benutzer mit größeren Zoomstufen oder Screenreader zu verbessern.

Wir werden die neuen Menüs und die Titelleiste weiter verbessern und auch Probleme beheben, die mit den Labels workbench-title oder workbench-menu gekennzeichnet sind.

Erweiterungsentwicklung

QuickInput-API

Die APIs QuickPick und InputBox sind nun stabil. Sie ermöglichen eine flexiblere Sammlung von Benutzereingaben als die bestehenden APIs showQuickPick und showInputBox. Es gibt Beispiele für die Verwendung der QuickInput-API in einer Beispielerweiterung.

Multi-step input sample

Erweiterungspacks überarbeitet

Die Definition eines Erweiterungspacks verwendet nun eine neue Eigenschaft namens extensionPack anstelle von extensionDependencies in package.json. Dies liegt daran, dass extensionDependencies hauptsächlich zur Definition von funktionalen Abhängigkeiten zwischen Erweiterungen verwendet wird, die das Deinstallieren oder Deaktivieren einer Erweiterungsabhängigkeit ohne Deinstallieren oder Deaktivieren der abhängigen Erweiterung verhindern.

Ein Erweiterungspack sollte keine funktionalen Abhängigkeiten mit seinen gebündelten Erweiterungen haben, und diese sollten unabhängig vom Pack verwaltbar sein. Unten ist ein Beispiel für einen extensionPack-Eintrag, der ein Erweiterungspack definiert, das mehrere Debugger-Erweiterungen bündelt.

"extensionPack": [
    "andreweinand.mock-debug",
    "ms-vscode.mono-debug",
    "ms-vscode.cpptools",
    "ms-dotnettools.csharp",
    "vscjava.vscode-java-debug"
]

Dies wird die Verwaltung eines Erweiterungspacks und seiner gebündelten Erweiterungen für Benutzer erheblich einfacher machen. Siehe Erweiterungspack-Verwaltung.

Bessere Workspace-Bearbeitung

Die APIs WorkspaceEdit und applyEdit wurden erweitert, um Erweiterungen das Erstellen, Umbenennen und Löschen von Dateien zu ermöglichen. Zuvor waren nur Textbearbeitungen möglich. Die neuen APIs ermöglichen bessere Refactorings; zum Beispiel das Umbenennen einer Datei, wenn ein Klassennamen geändert wird.

Neue Theme-Farben

Es gibt neue Theme-Farben für Breadcrumbs

  • breadcrumb.foreground: Farbe der Breadcrumb-Elemente.
  • breadcrumb.focusForeground: Farbe der fokussierten Breadcrumb-Elemente.
  • breadcrumb.activeSelectionForeground: Farbe der ausgewählten Breadcrumb-Elemente.
  • breadcrumbPicker.background: Hintergrundfarbe des Breadcrumb-Element-Pickers.

Die Steuerelemente des neuen Einstellungen-Editors sind nun thematisierbar

  • settings.headerForeground: Vordergrundfarbe für einen Abschnittskopf oder einen aktiven Titel.
  • settings.modifiedItemForeground: Vordergrundfarbe für den Indikator für geänderte Einstellungen.
  • settings.inactiveSelectedItemBorder: Farbe des Rahmens der ausgewählten Einstellungszeile, wenn die Einstellungsliste den Fokus nicht hat.
  • settings.dropdownBackground: Hintergrund der Dropdown-Liste.
  • settings.dropdownForeground: Vordergrundfarbe der Dropdown-Liste.
  • settings.dropdownBorder: Rahmen der Dropdown-Liste.
  • settings.checkboxBackground: Hintergrund der Checkbox.
  • settings.checkboxForeground: Vordergrundfarbe der Checkbox.
  • settings.checkboxBorder: Rahmen der Checkbox.
  • settings.textInputBackground: Hintergrund des Texteingabefelds.
  • settings.textInputForeground: Vordergrundfarbe des Texteingabefelds.
  • settings.textInputBorder: Rahmen des Texteingabefelds.
  • settings.numberInputBackground: Hintergrund des Zahleneingabefelds.
  • settings.numberInputForeground: Vordergrundfarbe des Zahleneingabefelds.
  • settings.numberInputBorder: Rahmen des Zahleneingabefelds.

Die benutzerdefinierten Menüs unter Windows und Linux sind nun thematisierbar

  • menu.background: Hintergrund von Menüs und Kontextmenüs.
  • menu.foreground: Vordergrund von Menüs und Kontextmenüs.
  • menu.selectionBackground: Hintergrund des ausgewählten Elements in Menüs und Kontextmenüs.
  • menu.selectionForeground: Vordergrund des ausgewählten Elements in Menüs und Kontextmenüs.
  • menu.selectionBorder: Rahmen des ausgewählten Elements in Menüs und Kontextmenüs.
  • menubar.selectionBackground: Hintergrund des ausgewählten Top-Level-Menüs in der Menüleiste.
  • menubar.selectionForeground: Vordergrund des ausgewählten Top-Level-Menüs in der Menüleiste.
  • menubar.selectionBorder: Rahmen des ausgewählten Top-Level-Menüs in der Menüleiste.

Aktualisierte Standard-Theme-Farben

Als Teil unserer Barrierefreiheitsverbesserungen haben wir einige Standard-Theme-Farben aktualisiert, um sicherzustellen, dass sie die Anforderungen an den Farbkontrast erfüllen. Die vollständige Liste der Korrekturen für Farbkontraste finden Sie hier.

Definitionsanbieter können nun ein DefinitionLink-Objekt zurückgeben. Definitionslinks bieten zusätzliche Metadaten über normale Location-Definitionen, einschließlich des Bereichs des definierenden Symbols.

import * as vscode from 'vscode';

export function activate(context: vscode.ExtensionContext) {
  vscode.languages.registerDefinitionProvider('markdown', new LineLinkDefinitionProvider());
}

export class LineLinkDefinitionProvider implements vscode.DefinitionProvider {
  async provideDefinition(
    document: vscode.TextDocument,
    position: vscode.Position,
    token: vscode.CancellationToken
  ): Promise<vscode.DefinitionLink[]> {
    const wordRange = document.getWordRangeAtPosition(position, /<\d+>/);
    if (wordRange.isEmpty) {
      return [];
    }

    const targetLine = +document.getText(wordRange).slice(1, -1);
    return [
      {
        // Definition location
        targetRange: new vscode.Range(targetLine - 1, 0, targetLine, 0),
        targetUri: document.uri,

        // Range of the defining symbol
        originSelectionRange: new vscode.Range(
          wordRange.start.translate({ characterDelta: 1 }),
          wordRange.end.translate({ characterDelta: -1 })
        )
      }
    ];
  }
}

Debug-Erweiterungen

Neues Zuhause für das Debug Adapter Protocol

Wir haben das Debug Adapter Protocol von seinem alten Speicherort auf eine neue Website https://msdocs.de/debug-adapter-protocol und ein entsprechendes Repository https://github.com/microsoft/debug-adapter-protocol verlagert.

Ein begleitender Blogbeitrag, Neues Zuhause für das Debug Adapter Protocol, bietet Hintergrundinformationen und weitere Details zum Umzug.

Alle, die das DAP JSON-Schema programmatisch vom alten Speicherort https://raw.githubusercontent.com/Microsoft/vscode-debugadapter-node/main/debugProtocol.json verwenden, sollten ihren Quellcode auf den neuen Speicherort aktualisieren.

https://msdocs.de/debug-adapter-protocol/debugAdapterProtocol.json

Für die nächsten beiden Versionen (August & September) werden wir das Schema am alten Speicherort aktuell halten, aber wir planen, es im Oktober zu entfernen.

Neue terminate-Anfrage für das Debug Adapter Protocol

Eine neue `terminate`-Anfrage und die entsprechende `supportsTerminateRequest`-Funktion wurden dem **Debug Adapter Protocol** hinzugefügt, um das ordnungsgemäße Beenden von Debuggees zu unterstützen, wie oben erläutert. Wenn ein Debug-Adapter `true` für die `supportsTerminateRequest`-Funktion zurückgibt, sendet VS Code zuerst eine `terminate`-Anfrage an den Debug-Adapter, wenn eine Debug-Sitzung beendet wird. Die Implementierung der `terminate`-Anfrage im Debug-Adapter sollte den Debuggee auffordern, sich selbst zu beenden. Auf Unix-basierten Betriebssystemen könnte dies einfach durch Senden des `SIGINT`-Signals an den Debuggee erreicht werden.

Webview-Icons

Webviews können jetzt ein benutzerdefiniertes Icon bereitstellen, das in der Registerkartenleiste und der Ansicht "Geöffnete Editoren" angezeigt wird.

import * as vscode from 'vscode';
import * as path from 'path';

export function activate(context: vscode.ExtensionContext) {

    context.subscriptions.push(vscode.commands.registerCommand('catCoding.start', () => {
        const panel = vscode.window.createWebviewPanel('catCoding',
            "Coding Cat", vscode.ViewColumn.One, { });

        panel.iconPath = vscode.Uri.file(path.join(context.extensionPath, 'media', 'cat.png'));
    });
}

A webview with a custom icon

Terminalzugriffs-API

Die Terminalzugriffs-APIs sind nun stabil. Sie ermöglichen Erweiterungen den Zugriff auf `Terminal`-Objekte, unabhängig davon, ob die Erweiterung diese erstellt hat oder nicht.

export namespace window {
  export const terminals: ReadonlyArray<Terminal>;
  export const onDidOpenTerminal: Event<Terminal>;
}

URI-Handler-API

Die URI-Handler-API ist nun stabil. Sie ermöglicht Erweiterungen die Verarbeitung von systemweiten URIs.

export interface UriHandler {
  handleUri(uri: Uri): ProviderResult<void>;
}

export namespace window {
  export function registerUriHandler(handler: UriHandler): Disposable;
}

Sie verfügt über ein `onUri`-Aktivierungsereignis, das eine Erweiterung aktiviert, wann immer eine URI, die sich auf sie bezieht, vom Betriebssystem geöffnet wird.

Siehe die Referenzimplementierung des Git-Erweiterung GitProtocolHandler.

Node.js-Update

Die Version von Electron, auf der VS Code läuft, wurde aktualisiert, was eine Aktualisierung von Node.js mit sich bringt, das VS Code von 7.9 auf 8.9 liefert. Alle Erweiterungen laufen nun auf dieser neueren Version von Node.js.

Es gibt einige Änderungen, die Erweiterungen betreffen könnten

  • Das `natives`-Node-Modul funktioniert nicht mehr (siehe #47569).
  • Das Legacy-Debug-Protokoll und das Flag `--debug` werden nicht mehr unterstützt (siehe #55907).
  • Wenn sprachbasierte Server, die in Node.js mit stdio als Transportmittel geschrieben sind, in VS Code 1.26 Probleme haben, besteht die Lösung für Erweiterungsautoren, die die LSP Client- und Server-Bibliotheken verwenden, darin, den Transport von `TransportKind.ipc` anstelle von `TransportKind.stdio` zu ändern und ihre Erweiterung neu zu veröffentlichen.

Vorgeschlagene Erweiterungs-APIs

Jeder Meilenstein bringt neue vorgeschlagene APIs mit sich, die Erweiterungsautoren ausprobieren können. Wie immer sind wir an Ihrem Feedback interessiert. So gehen Sie vor, um eine vorgeschlagene API auszuprobieren

  • 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 Ihr Projekt.

Beachten Sie, dass Sie keine Erweiterung veröffentlichen können, die eine vorgeschlagene API verwendet. Wir werden wahrscheinlich wichtige Änderungen in der nächsten Version vornehmen und wollen niemals bestehende Erweiterungen brechen.

TextSearchProvider, FileSearchProvider, FileIndexProvider

Wir haben eine Reihe von APIs hinzugefügt, die es Erweiterungen ermöglichen, Text- und Dateisuche in VS Code zu implementieren.

TextSearchProvider wird aufgerufen, wenn ein Benutzer die Suchansicht verwendet oder wenn eine Erweiterung die neue API `workspace.findTextInFiles` verwendet. Sie gibt Textübereinstimmungen inkrementell über den `progress`-Callback zurück.

Es gibt zwei Möglichkeiten, die Dateisuche zu implementieren, die die beiden gängigen Anwendungsfälle abdecken: über einen `FileIndexProvider` oder einen `FileSearchProvider`. Ein `FileIndexProvider` wird einmal aufgerufen, wenn der Benutzer Quick Open öffnet, und muss ein Array jeder Datei im Arbeitsbereich zurückgeben. VS Code sucht dann innerhalb dieser Liste und wendet seine eigene Fuzzy-Matching-Logik an, um die richtigen Ergebnisse an den Benutzer zurückzugeben. Wenn Ihre Erweiterung in der Lage ist, eine Liste jeder Datei im Arbeitsbereich bereitzustellen, ist die Implementierung eines `FileIndexProvider` der einfachere Weg, die Dateisuche zu unterstützen.

Wenn Ihre Erweiterung stattdessen die Suchanfrage des Benutzers verarbeiten und ihre eigene Liste gefilterter Ergebnisse zurückgeben muss, implementieren Sie einen `FileSearchProvider`. Dieser wird bei jedem Tastendruck des Benutzers in Quick Open aufgerufen und muss eine gefilterte und sortierte Liste von Dateiübereinstimmungen zurückgeben.

export interface TextSearchProvider {
  provideTextSearchResults(
    query: TextSearchQuery,
    options: TextSearchOptions,
    progress: Progress<TextSearchResult>,
    token: CancellationToken
  ): Thenable<void>;
}

export interface FileIndexProvider {
  provideFileIndex(options: FileIndexOptions, token: CancellationToken): Thenable<Uri[]>;
}

export interface FileSearchProvider {
  provideFileSearchResults(
    query: FileSearchQuery,
    options: FileSearchOptions,
    token: CancellationToken
  ): Thenable<Uri[]>;
}

export namespace workspace {
  export function registerTextSearchProvider(
    scheme: string,
    provider: TextSearchProvider
  ): Disposable;
  export function registerFileIndexProvider(
    scheme: string,
    provider: FileIndexProvider
  ): Disposable;
  export function registerFileSearchProvider(
    scheme: string,
    provider: FileSearchProvider
  ): Disposable;
}

findTextInFiles API

Eine neue vorgeschlagene API wurde hinzugefügt, um Erweiterungen die Suche nach Textmustern innerhalb des Arbeitsbereichs zu ermöglichen.

export namespace workspace {
  export function findTextInFiles(
    query: TextSearchQuery,
    options: FindTextInFilesOptions,
    callback: (result: TextSearchResult) => void,
    token?: CancellationToken
  ): Thenable<void>;
}

Dies ist das Gegenstück zu `workspace.findFiles`, das nach Dateien im Arbeitsbereich sucht.

Sonstiges

Electron-Update

In dieser Version haben wir Electron von 1.7.12 auf 2.0.5 aktualisiert. Dies bringt eine Aktualisierung von Chromium von Version 58 auf 61 und von Node.js von 7.9 auf 8.9 mit sich.

Neue Dokumentation

Logpoints-Blogbeitrag

Sie können Kenneths aktuellen Blogbeitrag lesen, um mehr über Node.js-Debugging-Logpoints und Auto-Attach zu erfahren. Logpoints ermöglichen es Ihnen, schnell Protokollinformationen auszugeben, ohne den Quellcode zu ändern oder Ihre Debugging-Sitzung zu unterbrechen.

IntelliCode FAQ

Wenn Sie Python-Entwickler sind, werfen Sie einen Blick auf IntelliCode, ein neues Tool, das die Softwareentwicklung mithilfe künstlicher Intelligenz (KI) verbessert. Die IntelliCode-Erweiterung bietet eine Reihe KI-gestützter Funktionen für IntelliSense in Python, wie z. B. die Ableitung der relevantesten Autovervollständigungen basierend auf dem aktuellen Quellcodekontext.

IntelliCode extension

Bemerkenswerte Änderungen

  • 53532: Editor: Änderungen an einer Datei im Hintergrund laden, wenn die Datei bereits geladen ist
  • 53586: Node Debug: Auto-Attach-Modus wird nicht gespeichert
  • 53022: "Schreibgeschützt"-Label in den Editor-Registerkarten für Dateien, die schreibgeschützt sind
  • 48275: Der `resourceIsFile`-Kontextschlüssel wird nicht mehr unterstützt

Vielen Dank

Nicht zuletzt ein großes Dankeschön! an die folgenden Personen, die dazu beigetragen haben, VS Code noch besser zu machen

Beiträge zu vscode

Beiträge zu language-server-protocol

Beiträge zu vscode-chrome-debug

Beiträge zu vscode-chrome-debug-core

  • @digeff
    • Win32-Pfade unter Windows in Kleinbuchstaben normalisieren PR #342
    • Pfade unter Windows in Kleinbuchstaben normalisieren PR #341
  • @Pokute: Unterstützung für URI-kodierte Source Maps hinzugefügt + Tests. PR #344
  • Raghav Katyal (@rakatyal)
    • Jetzt protokollieren wir den Browser und die Protokollversion, wenn wir versuchen, li… PR #338
    • Beibehalten der Client-ID beim Zurücksetzen der Breakpoints in Quellcode-zugeordneten … PR #337

Beiträge zu vscode-vsce

Beiträge zu vscode-recipes

Beiträge zu localization

Es gibt über 800 Mitglieder im Transifex VS Code-Projektteam mit etwa 100 aktiven Mitwirkenden pro Monat. Wir schätzen Ihre Beiträge, sei es durch neue Übersetzungen, Abstimmungen über Übersetzungen oder Vorschläge zur Prozessverbesserung.

Hier ist eine Momentaufnahme der Mitwirkenden für diese Version. Details zum Projekt, einschließlich der Liste der Mitwirkendennamen, finden Sie auf der Projektseite unter https://aka.ms/vscodeloc.

  • Chinesisch (Vereinfacht): Joel Yang, Yusong, pluwen, Liu Dingming 刘丁明, hackereric, Simon Chan, 韦煊 王, gzponline, Ziming Wang.
  • Chinesisch (Traditionell): Duran Hsieh, Will 保哥, Poy Chang, Alan Tsai, Kevin Yang, Winnie Lin, MartinLau, Ben Tsai 蔡和恩, Alan Liu.
  • Französisch: Antoine Griffard, Ludovic P, William Thibodeau, Adrien Clerbois, Alain BUFERNE.
  • Deutsch: Carsten Siemens, Carsten Kneip, Markus Hatvan, Väinämö Lumikero, Ettore Atalan, AlCalzone, Levin Rickert.
  • Italienisch: Alessandro Alpi, Andrea Dottor, Emilie Rollandin, Riccardo Cappello, Aldo Donetti, Massimo.
  • Japanisch: Satoshi Kajiura, Yuichi Nukiyama, Shunya Tajima, yoshioms, Nakamura Yuta.
  • Koreanisch: Helloyunho.
  • Russisch: Michel Ace.
  • Spanisch: Alberto Poblacion, Julián Martínez, Alejandro Medina, José M. Aguilar, Carlos Mendible, Pedro Sanchez, Lio Fleishman.
  • Bosnisch: Bahrudin Hrnjica.
  • Bulgarisch: Любомир Василев.
  • Tschechisch: Ľuboš Uličný, Ľubomír Kováč, Frantisek Veris.
  • Niederländisch: Gerald Versluis, RubenJacobse, Armand Duijn, Dirk Doesburg, Maarten van Stam, Dean Wyns.
  • Englisch (Vereinigtes Königreich): Matthew John Cheetham, Swotboy2000.
  • Finnisch: Feetu Nyrhinen, Petri Niinimäki, Make.
  • Griechisch: Ioannis Paraskevopoulos, Theodore Tsirpanis.
  • Ungarisch: Dóczi Dominik.
  • Indonesisch: Laurensius Dede Suhardiman, Wildan Mubarok, Riwut Libinuko, Bagus Ilman, Lundy Orlando.
  • Norwegisch: andreona, Daniel Bjørnbakk.
  • Polnisch: Patryk Brejdak, Sebastian Baran, Igor Śpiączka, Lukasz Woznicki.
  • Portugiesisch (Brasilien): Lucas Miranda, Otacilio Saraiva Maia Neto, Roberto Fonseca, Marcelo Camargo, Marcelo Novaes, Victor Hugo Schmidt, Pedro Sereno, Rafael Oliveira, Danilo Dantas, Vitor Dutra Freire, Luan Moreno Medeiros Maciel, Fabio Correia.
  • Portugiesisch (Portugal): Daniel Correia, Pavlo Zakharuk, António Santos, João Mata, Diogo Barros, Danilo Dantas.
  • Rumänisch: Schiriac Robert, Cornel Cocioaba, Dan Ichim, Alexandru Spinu, ovisan, Bogdan Mateescu.
  • Tamil: Jeyanthinath Muthuram, Jam Station.
  • Ukrainisch: Oleksandr, Fedir Gordiienko, Volodymyr Holovka.
© . This site is unofficial and not affiliated with Microsoft.