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

Juni 2023 (Version 1.80)

Update 1.80.1: Das Update behebt diese Probleme.

Update 1.80.2: Das Update behebt dieses Sicherheitsproblem Problem.

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


Willkommen zur Juni 2023-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.

Insiders: Möchten Sie neue Funktionen so schnell wie möglich ausprobieren? Sie können den nächtlichen Insiders-Build herunterladen und die neuesten Updates ausprobieren, sobald sie verfügbar sind.

Barrierefreiheit

Barrierefreie Ansicht

Ein neuer Befehl Barrierefreiheitsansicht öffnen (⌥F2 (Windows Alt+F2, Linux Shift+Alt+F2)) ermöglicht Screenreader-Benutzern, Inhalte Zeichen für Zeichen, Zeile für Zeile zu inspizieren. Rufen Sie dies auf, wenn ein Hover- oder Chat-Panel-Eintrag fokussiert ist.

Verbesserungen der Barrierefreiheitshilfe

Ein neuer Befehl Barrierefreiheitshilfe öffnen (⌥F1 (Windows Alt+F1, Linux Shift+Alt+F1)) öffnet ein Hilfemenü basierend auf dem aktuellen Kontext. Es gilt derzeit für den Editor, das Terminal, Notebooks, das Chat-Panel und Inline-Chat-Funktionen.

Deaktivieren Sie den Hinweis im Barrierefreiheitshilfemenü und öffnen Sie zusätzliche Dokumentationen, falls vorhanden, innerhalb des Hilfemenüs.

Barrierefreiheitshilfe für Notebooks

Ein neues Menü zur Barrierefreiheitshilfe wurde für Notebooks hinzugefügt, um Informationen über das Editor-Layout sowie die Navigation und Interaktion mit dem Notebook bereitzustellen.

Chat-Audiocues

Es gibt jetzt Audiocues für die GitHub Copilot Chat-Erfahrung, die über audioCues.chatRequestSent, audioCues.chatResponsePending und audioCues.chatResponseReceived aktiviert werden können.

Verbesserungen der Chat-Barrierefreiheit

Chat-Antworten werden für Screenreader bereitgestellt, sobald sie eintreffen, und die Hilfemenüs für Inline- und Chat-Panel-Barrierefreiheit enthalten detailliertere Informationen darüber, was zu erwarten ist und wie mit jeder Funktion interagiert werden kann.

Verbesserungen der Alt-Texte im Einstellungen-Editor

Der Einstellungen-Editor (zugänglich über den Befehl Preferences: Open Settings (UI)) ist jetzt weniger ausführlich, wenn mit einem Screenreader navigiert wird. Insbesondere kündigt der Scope-Umschalter für Einstellungen den tatsächlichen Namen des Scopes anstelle eines Dateipfads an, und die Alt-Texte für die Einstellungenbeschreibungen wurden bereinigt, um keine rohe Markdown-Formatierung mehr zu enthalten.

Navigating through the Settings editor with NVDA on Windows

Workbench

Automatisches Abspielen und Schleifen für Vorschau-Videos

Sie können jetzt das automatische Abspielen und Schleifen von Videos für die integrierte Videodateivorschau aktivieren. Die relevanten Einstellungen sind:

  • mediaPreview.video.autoPlay — Video-Autoplay aktivieren. Automatisch abgespielte Videos sind stummgeschaltet.
  • mediaPreview.video.loop — Schleifen von Videos aktivieren.

Diese Einstellungen sind standardmäßig deaktiviert.

Mehr Hilfe, wenn der Editor schreibgeschützt ist

Mit der Einführung des Schreibschutzmodus in VS Code im letzten Meilenstein können Editoren aufgrund der Workspace-Konfiguration schreibgeschützt sein.

In diesem Meilenstein haben wir die Benachrichtigungsnachricht im Editor verbessert, wenn Sie versuchen, in einen schreibgeschützten Editor zu schreiben, und in einigen Fällen einen Link zur Änderung der files.readonly-Einstellungen bereitgestellt.

Standardpfad für Dateidialoge

Eine neue Einstellung files.dialog.defaultPath kann den Standardspeicherort konfigurieren, den Dateidialoge (z. B. beim Öffnen oder Speichern von Dateien oder Ordnern) anzeigen sollen, wenn sie geöffnet werden. Dieser Standard wird nur als Fallback verwendet, wenn kein anderer Speicherort bekannt ist, z. B. in leeren VS Code-Fenstern.

Maximieren von Editor-Gruppen bei doppeltem Klicken auf einen Tab deaktivieren

Eine neue Einstellung workbench.editor.doubleClickTabToToggleEditorGroupSizes deaktiviert das Umschalten der Größe einer Editor-Gruppe von maximiert auf wiederhergestellt, wenn auf einen Tab dieser Gruppe doppelt geklickt wird.

Minimale Breite von Tabs mit fester Breite steuern

Eine neue Einstellung workbench.editor.tabSizingFixedMinWidth steuert die minimale Größe eines Tabs, wenn workbench.editor.tabSizing auf fixed gesetzt ist. Feste Tab-Breiten werden in den Release Notes von 1.79 detaillierter erläutert.

Die Größenanpassung von Editor-Gruppen wurde auf 'auto' geändert

Ein neuer Wert für die Einstellung workbench.editor.splitSizing namens auto ist der neue Standard. In diesem Modus wird beim Teilen einer Editor-Gruppe die verfügbare Größe gleichmäßig auf alle Editor-Gruppen verteilt, nur wenn keine der Editor-Gruppen ihre Größe geändert hat. Andernfalls wird der Platz der geteilten Editor-Gruppe halbiert und in die neue Editor-Gruppe platziert.

Die Absicht dieser Änderung ist es, Layouts, die Sie beim Teilen erstellt haben, nicht zu beeinträchtigen, aber ansonsten das vorherige Standardverhalten der gleichmäßigen Größenverteilung beizubehalten.

Suchverhalten von .gitignore-Ausschlüssen

Wenn search.useIgnoreFiles auf true gesetzt ist, wird die .gitignore-Datei des Workspaces nun respektiert, unabhängig davon, ob der Workspace als Git-Repository initialisiert wurde oder nicht.

Maximale Höhe für Kommentare

Die Einstellung comments.maxHeight ermöglicht es Ihnen, die maximale Höhenbeschränkung für Kommentare zu deaktivieren, wie z. B. jene, die für Pull-Requests angezeigt werden, wenn Sie die GitHub Pull Requests and Issues-Erweiterung verwenden.

Probleme in VS Code beheben

Es gibt einen neuen Befehl Help: Troubleshoot Issue in der Befehlspalette, der Ihnen bei der Fehlerbehebung in VS Code hilft. Der gestartete Workflow hilft Ihnen, die Ursache eines Problems mit einem speziellen Troubleshoot- Profil und dem Feature Extension Bisect von VS Code zu identifizieren. Extension Bisect aktiviert und deaktiviert Ihre installierten Erweiterungen in einer binären Suche, während Sie angeben, ob das Problem auftritt oder nicht. Dies grenzt die problematische Erweiterung ein und hilft Ihnen, die richtigen Informationen bei der Meldung eines Problems bereitzustellen.

Chromium-Sandbox deaktivieren

Wenn Sie Szenarien haben, in denen das Starten von VS Code Desktop als erhöhter Benutzer unvermeidlich ist, z. B. wenn Sie VS Code mit sudo unter Linux oder als Administrator in einer AppLocker-Umgebung unter Windows starten, müssen Sie VS Code mit den Befehlszeilenoptionen --no-sandbox --disable-gpu-sandbox starten, damit die Anwendung wie erwartet funktioniert.

Basierend auf dem Feedback in Issue #184687 gibt es nun zwei neue Einstellungen, die es einfacher machen, die Chromium-Sandbox zu deaktivieren:

  1. Eine neue Befehlszeilenoption --disable-chromium-sandbox, um die Chromium-Sandbox für alle Prozesse in der Anwendung zu deaktivieren. Diese neue Option kann als Ersatz für --no-sandbox --disable-gpu-sandbox verwendet werden. Diese Option gilt für alle neuen Prozess-Sandboxes, die möglicherweise vom Laufzeitsystem in zukünftigen Versionen hinzugefügt werden.

  2. Um die Deaktivierung der Chromium-Sandbox über Starts hinweg beizubehalten, gehen Sie wie folgt vor:

    • Öffnen Sie die Befehlspalette (⇧⌘P (Windows, Linux Ctrl+Shift+P)).
    • Führen Sie den Befehl Preferences: Configure Runtime Arguments aus.
    • Dieser Befehl öffnet eine Datei argv.json, um Laufzeitargumente zu konfigurieren. Möglicherweise sehen Sie dort bereits einige Standardargumente.
    • Fügen Sie "disable-chromium-sandbox": true hinzu.
    • Starten Sie VS Code neu.

Hinweis: Verwenden Sie diese Einstellung nicht, es sei denn, Sie haben Probleme!

Editor

Teilwörter beim Verkleinern und Vergrößern der Auswahl überspringen

Die Befehle Expand Selection und Shrink Selection können nun so konfiguriert werden, dass Teilwörter übersprungen werden. Dies geschieht über die Einstellung editor.smartSelect.selectSubwords. Standardmäßig werden Teilwörter ausgewählt, dies kann jedoch jetzt deaktiviert werden.

  • true -> Co|deEditor wählt [Code]Editor, dann [CodeEditor] aus
  • false -> Co|deEditor wählt [CodeEditor] aus

Diese Einstellung ist sehr nützlich, wenn Sie die Funktion "Auswahl erweitern und verkleinern" häufig mit mehreren Cursors und auf heterogenen Wörtern verwenden.

Verbesserte Emmet-Unterstützung für CSS-Module in JSX/TSX

Emmet unterstützt eine neue Reihe von Abkürzungen für JSX/TSX-Dateien. Durch Eingabe von ..test in einer JSX- oder TSX-Datei und Erweitern der Abkürzung wird die Zeile <div styleName={styles.test}></div> hinzugefügt.

Der Attributname und der Attributwert-Präfix können über die Einstellung emmet.syntaxProfiles konfiguriert werden. Durch Konfiguration der Einstellung emmet.syntaxProfiles wie folgt:

"emmet.syntaxProfiles": {
    "jsx": {
        "markup.attributes": {
            "class*": "className",
        },
        "markup.valuePrefix": {
            "class*": "myStyles"
        }
    }
}

und dann durch Erweitern der Abkürzung ..test in einer JSX- oder TSX-Datei erhalten Sie stattdessen die Abkürzung <div className={myStyles.test}></div>.

Größenveränderbare Hover-Inhalte

Es ist jetzt möglich, das Größen von Hover-Inhalten zu ändern. Sie können mit der Maus über die Ränder des Steuerelements fahren und die Trennstriche ziehen, um die Größe des Hovers zu ändern.

Terminal

Bildunterstützung

Bilder im Terminal, die in der letzten Version als Vorschau angezeigt wurden, sind nun standardmäßig aktiviert. Bilder in einem Terminal funktionieren typischerweise, indem die Bildpixeldaten als Text kodiert werden, der über eine spezielle Escape-Sequenz an das Terminal geschrieben wird. Die derzeit unterstützten Protokolle sind Sixel und das Inline-Images-Protokoll, das von iTerm entwickelt wurde.

Um Bilder manuell zu testen, können Sie eine .six-Beispieldatei aus dem libsixel-Repository herunterladen und caten.

Running cat with a sixel file will print an image

Oder verwenden Sie das imgcat Python-Paket oder das imgcat-Skript mit einer .png-, .gif- oder .jpg-Datei.

Running imgcat with a png file will print the image

Diese Funktion kann durch Setzen von deaktiviert werden

"terminal.integrated.enableImages": false

Es gibt nun Unterstützung für neue Linkformate, einschließlich Links, die nach oben scannen müssen, um die Datei zu finden, und Links, die einen Bereich (Zeile zu Zeile oder Zeichen zu Zeichen) haben.

  • @@ Git-Bereichslinks

    Links from git in the style '@@ - + @@' are now detected

  • OCAMLs Dune-Stil-Bereichslinks

    Links in the style 'File "src/cli.js", lines 15-19' are now detected
    Links in the style 'File "src/cli.js", line 15, characters 8-34' are now detected
    Links in the style 'File "src/cli.js", lines 15-19, characters 8-34' are now detected

  • ESLint-Stil-Mehrzeilenlinks

    Links from ESLint that prefix a result with 'line:col' now are detected

  • Ripgrep-Stil-Mehrzeilenlinks

    Links from ripgrep that prefix a result with 'line:' now are detected

Veraltete Shell- und ShellArgs-Einstellungen entfernt

Die Einstellungen terminal.integrated.shell.* und terminal.integrated.shellArgs.* wurden vor über einem Jahr durch Terminalprofile ersetzt und sind nun entfernt worden. Wenn Sie immer noch die alten shell- und shellArgs-Einstellungen verwenden, hier ist ein Beispiel vor/nach der Migration:

// Before
{
  "terminal.integrated.shell.windows": "pwsh.exe",
  "terminal.integrated.shellArgs.windows": ["-Login"],

  "terminal.integrated.shell.osx": "bash",
  "terminal.integrated.shellArgs.osx": ["-l"],
}

// After
{
  "terminal.integrated.profiles.windows": {
    "PowerShell Login": {
      // Source is a special property that will use VS Code's logic to detect
      // the PowerShell or Git Bash executable.
      "source": "PowerShell",
      "args": ["-Login"],
      "icon": "terminal-powershell"
    },
  },

  "terminal.integrated.profiles.osx": {
    // This will override the builtin bash profile
    "bash": {
      "path": "bash",
      "args": ["-l"],
      "icon": "terminal-bash"
    }
  }
}

Testen

Terminal-Ausgabeunterstützung

Zuvor wurde die Testausgabe in der Ansicht Test Results immer in einem eingebetteten Texteditor angezeigt. Dies beraubte sie reichhaltiger Formatierungen wie Farben, Stile und Symbole, die sie beim Ausführen in einem Terminal gehabt haben könnte. In dieser Version zeigen wir die Ausgabe in einem echten xterm.js-Terminal an.

Results shown in the Tests Results panel with green checkmarks

Theme: Codesong (Vorschau auf vscode.dev)

Da die Ansicht Test Results nun voll funktionsfähig ist, wurden die Befehle zum Show Test Output umgeleitet, um die Ansicht Test Results zu öffnen, anstatt ein temporäres Terminal zu erstellen.

Quellcodeverwaltung

Verbesserungen beim Schließen von Repositories

Bisher konnten Benutzer ein Repository entweder über den Befehl Git: Close Repository oder die Aktion Close Repository in der Source Control-Ansicht schließen. Es gab jedoch bestimmte Aktionen (z. B. das Öffnen einer Datei aus dem geschlossenen Repository), die das geschlossene Repository wieder geöffnet hätten. In diesem Meilenstein haben wir einige Verbesserungen vorgenommen, sodass der Status, dass ein Repository geschlossen ist, nun pro Workspace gespeichert wird. Benutzer können geschlossene Repositories über den Befehl Git: Reopen Closed Repositories... wieder öffnen.

Notebooks

Verbesserte Speicherleistung für Remote Development

Zuvor erforderte das Speichern eines Notebooks in der Remote-Erweiterung von VS Code das Senden des gesamten Notebooks an den Extension Host, was bei großen Notebooks oder langsamen Netzwerkverbindungen mit aktiviertem Autosave langsam sein konnte. Wir haben die Leistung verbessert, indem wir nur die Änderungen am Notebook an den Extension Host senden, was zu schnellerem Speichern und Ausführen von Notebooks führt. Obwohl diese Funktion noch standardmäßig deaktiviert ist, sind wir zuversichtlich, dass wir sie bald aktivieren können. Um sie auszuprobieren, fügen Sie "notebook.experimental.remoteSave": true zu Ihren Einstellungen hinzu. Weitere Details finden Sie in Issue #172345.

Überarbeitung der globalen Toolbar für Notebooks

Die globale Toolbar des Notebook-Editors wurde neu geschrieben, um die Workbench-Toolbar zu übernehmen, was den Benutzern eine größere Anpassung der Toolbar-Aktionen ermöglicht. Benutzer können nun mit der rechten Maustaste klicken und Aktionen von der Toolbar ausblenden. Ein Rechtsklick auf eine Aktion in der Toolbar bietet die Option, diese Aktion auszublenden und das Menü zurückzusetzen, um ausgeblendete Aktionen wieder einzublenden.

Die Toolbar funktioniert weiterhin mit allen drei Beschriftungsstrategien: always, never und dynamic. Sie können die Beschriftungsstrategie über die Einstellung notebook.globalToolbarShowLabel ändern.

Theme: Monokai Pro (Filter Ristretto) (Vorschau auf vscode.dev)

Sicherung und Wiederherstellung des interaktiven Fensters

Das Python Interactive Window ist nun vollständig in die Funktion Hot Exit integriert und stellt den Editorzustand zwischen VS Code-Neustarts wieder her. Die Einstellung interactiveWindow.restore hat keine Auswirkung mehr und wurde entfernt.

Wenn Hot Exit deaktiviert ist, gibt es beim Schließen von VS Code eine Aufforderung, die Ihnen die Option gibt, den Editorzustand als .ipynb-Datei zu speichern.

_Theme: Bearded Theme feat. Gold D Raynh (Vorschau auf vscode.dev)

Sprachen

Markdown: Bild aus Vorschau kopieren

Ein neues Kontextmenü für Bilder in der Markdown-Vorschau ermöglicht es Ihnen, das Bild aus der Vorschau zu kopieren und in den Markdown-Editor einzufügen. Beim Kopieren des Bildes muss der Vorschau-Editor fokussiert sein.

Die neue Einstellung markdown.editor.pasteUrlAsFormattedLink.enabled (Standard false) ermöglicht es Ihnen, Links in den Markdown-Editor einzufügen, die automatisch in Markdown-Links formatiert werden. Wenn Sie Text auswählen, der durch den eingefügten Link ersetzt werden soll, wird der ausgewählte Text automatisch zum Titel des Links. Wenn kein Text ausgewählt ist, wird ein Standard-Linktitel verwendet. Diese Funktion gilt sowohl für externe Browser-Links als auch für Dateien innerhalb des Workspaces.

Sie müssen die Einstellung editor.pasteAs.enabled aktivieren, damit diese neue Einstellung funktioniert.

Remote-Entwicklung

Die Remote Development Extensions ermöglichen es Ihnen, einen Dev Container, einen Remote-Computer über SSH oder Remote Tunnels oder das Windows Subsystem for Linux (WSL) als vollwertige Entwicklungsumgebung zu nutzen.

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

Remote-Menü

In diesem Meilenstein haben wir das Remote-Menü mit Einträgen aktualisiert, die Ihnen helfen, Remote-Verbindungen (SSH, Remote Tunnels, GitHub Codespaces usw.) durch Installation der notwendigen Erweiterungen schnell zu installieren und damit zu beginnen. Es gibt auch einen Connect to...-Startpunkt auf der Willkommensseite, der Ihnen den Einstieg in Remote-Verbindungen von VS Code Desktop aus erleichtert.

Wir haben auch die Willkommensseite auf vscode.dev mit einem Startpunkt zum Verbinden mit einem Remote Tunnel aktualisiert.

WSL über Tunnels

In der letzten Iteration haben wir die Verbindung zu WSL über Remote Tunnels als Vorschau bereitgestellt. Diese Funktion ist nun in dieser Iteration stabil. Wenn Sie einen Remote Tunnel auf einem Windows-Computer mit installiertem WSL ausführen, haben Sie die Möglichkeit, direkt aus dem Remote Explorer eine Verbindung zu WSL herzustellen.

Remote Tunnels view with a Connect to WSL option

Theme: Codesong (Vorschau auf vscode.dev)

Diese Funktion funktioniert jetzt auf VS Code Desktop sowie auf vscode.dev. Wenn Sie bereits einen Tunnel auf Ihrem Windows-Gerät ausführen, stellen Sie sicher, dass Sie VS Code auf die neueste Version aktualisieren, um diese Funktion zu aktivieren.

Beiträge zu Erweiterungen

GitHub Copilot

Wir haben in der Chat-Ansicht schreibgeschützte Slash-Befehle eingeführt, die Ihnen helfen, Projekte und Notebooks zu erstellen und Text in Ihrem Workspace zu suchen.

Hinweis: Um Zugriff auf die Chat-Ansicht, Inline-Chat und Slash-Befehle (z. B. /search, /createWorkspace) zu erhalten, müssen Sie die GitHub Copilot Chat-Erweiterung installieren.

Workspaces erstellen

Sie können Copilot auffordern, Workspaces für gängige Projekttypen mit dem Slash-Befehl /createWorkspace zu erstellen. Copilot generiert zunächst eine Verzeichnisstruktur für Ihre Anfrage.

Sie können dann die Schaltfläche Create Workspace verwenden, um das Projektverzeichnis als neuen Workspace zu erstellen und zu öffnen.

Create and open workspace using GitHub Copilot

Notebooks erstellen

Sie können Copilot auffordern, Jupyter-Notebooks basierend auf Ihren Anforderungen mit dem Slash-Befehl /createNotebook zu erstellen. Copilot generiert eine Gliederung des Notebooks basierend auf Ihren Anforderungen.

Sie können dann den Befehl Create Notebook verwenden, um das Notebook zu erstellen und die Codezellen basierend auf der vorgeschlagenen Gliederung auszufüllen.

Suchparameter generieren

Sie können Copilot auffordern, die Suchparameter in der Workspace-Suche automatisch auszufüllen. Verwenden Sie dazu den Befehl /search gefolgt von einer Beschreibung dessen, was Sie im Text finden möchten.

Diese Vorschau-Slash-Befehle können durch Konfiguration der Einstellung github.copilot.advanced wie folgt aktiviert werden:

"github.copilot.advanced": {
   "slashCommands": {
      "createWorkspace": true,
      "createNotebook": true,
      "search": true
   }
}

Copilot YouTube-Playlist

Es gibt eine neue Folge, die Copilot für PowerShell in der VS Code Copilot Series auf YouTube behandelt. Falls Sie die Serie verpasst haben, finden Sie dort auch andere sprachspezifische Vorträge und Anleitungen zum effektiven Prompting bei der Verwendung von Copilot für die Entwicklung.

Python

Mypy-Erweiterung

Es gibt nun eine Mypy Type Checker-Erweiterung, die Typüberprüfungsunterstützung für Python mit mypy bietet. Sie ist als Vorabversion verfügbar. Diese neue Erweiterung meldet Fehler und Warnungen für Ihren gesamten Code, anstatt nur für die aktuelle Datei. Sie verwendet auch dmypy für schnellere Typüberprüfungen.

Wenn Sie Probleme mit dieser neuen Erweiterung haben oder Feedback geben möchten, können Sie ein Problem im Mypy Extension GitHub-Repo melden.

Debugpy-Erweiterung

Als die Unterstützung für Python 2.7 und Python 3.6 aus der Python-Erweiterung entfernt wurde, erhielten wir viel Feedback von Benutzern, die ihren Code nicht auf die neuesten Python-Versionen aktualisieren konnten und die Möglichkeit verloren, ihre Anwendungen mit den neuesten Versionen der Python-Erweiterung zu debuggen. Um eine Lösung dafür zu entwickeln, haben wir eine separate Python-Debugger-Erweiterung namens Debugpy erstellt. Durch die Trennung des Debuggers von der Python-Erweiterung können Sie schließlich die neueste Version der Python-Erweiterung verwenden, während Sie eine ältere Version des Debuggers verwenden (indem Sie das automatische Aktualisieren von Erweiterungen deaktivieren). Diese Erweiterung ist als Vorabversion mit der neuesten Version von Debugpy verfügbar. Wir planen, ältere Versionen von Debugpy in naher Zukunft zu unterstützen.

Probieren Sie es aus und lassen Sie uns wissen, ob alles ordnungsgemäß funktioniert. Unser Plan ist es, die integrierte Debugging-Funktionalität zugunsten dieser separaten Erweiterung einzustellen.

Lokalisierung von Pylance

Die Pylance-Erweiterung ist jetzt lokalisiert! Das bedeutet, dass Einstellungen, Befehle und andere Texte der Erweiterung in Ihre bevorzugte Sprache übersetzt werden, wenn Sie ein Sprachpaket installiert und in VS Code als aktiv gesetzt haben.

Neufassung der Testerkennung und -ausführung

Diesen Monat setzen wir die Einführung unserer Test-Neufassung als Experiment fort. Zur Erinnerung: Diese Neufassung überarbeitet die Architektur hinter der Testerkennung und -ausführung für unittest und pytest in der Erweiterung. Die Neufassung ist derzeit für 100 % der VS Code Insiders-Benutzer aktiv und wird diesen Monat in die stabile Version übernommen. Die Neufassung wird bald übernommen, aber vorerst existiert die Einstellung zur Ein- und Ausschaltung, pythonTestAdapter, weiterhin.

Dynamische Testergebnisse für pytest und unittest

Mit dem neuen Experiment werden dynamische Testergebnisse für pytest und unittest eingeführt. Zuvor wurden unsere Testergebnisse erst zurückgegeben, nachdem alle Tests ausgeführt wurden. Mit dieser Funktion werden die Testergebnisse nun einzeln geliefert, sodass Sie Ihre Tests in Echtzeit bestehen oder fehlschlagen sehen können.

Index-Persistenz für Drittanbieter-Bibliotheken

Pylance führt eine Indizierung von Drittanbieter-Bibliotheken durch, die in Ihrer Umgebung installiert sind, um IntelliSense-Funktionen wie Autovervollständigung, Auto-Import, Code-Navigation usw. zu ermöglichen. Zuvor indizierte Pylance diese Bibliotheken jedes Mal, wenn Sie einen Workspace in VS Code öffneten. Jetzt speichert Pylance den Index dieser Bibliotheken, wodurch wiederholte Indizierungsprozesse reduziert werden.

Einstellung der Unterstützung für Python 3.7

Python 3.7 erreichte das End of Life (EOL) am 27.06.2023. Daher wird die offizielle Unterstützung für Python 3.7 durch die Python-Erweiterung in drei Monaten mit der Version 2023.18 der Erweiterung (entspricht der Veröffentlichung von VS Code im September 2023) eingestellt. Es gibt keine Pläne, die Unterstützung für Python 3.7 aktiv zu entfernen, und wir erwarten daher, dass die Python-Erweiterung in absehbarer Zeit weiterhin inoffiziell mit Python 3.7 funktioniert.

Da alle anderen Python-Versionen nun jährlich veröffentlicht werden, erwarten wir, die offizielle Unterstützung für eine Python-Version einzustellen, sobald diese in der ersten Python-Erweiterungsversion des folgenden Kalenderjahres das EOL erreicht. Zum Beispiel wird Python 3.8 voraussichtlich im Oktober 2024 das EOL erreichen, sodass die erste Python-Erweiterungsversion im Jahr 2025 die offizielle Unterstützung einstellt.

GitHub Pull Requests und Issues

Es wurden weitere Fortschritte bei der Erweiterung GitHub Pull Requests und Issues erzielt, die es Ihnen ermöglicht, Pull Requests und Issues zu bearbeiten, zu erstellen und zu verwalten.

  • Bis zu 1000 (vorher 100) Kommentar-Threads können in einem Pull-Request geladen werden.
  • Der neue VS Code API-Vorschlag für eine schreibgeschützte Nachricht ermöglicht es Ihnen, einen PR direkt aus einem nicht ausgecheckten Diff auszuchecken.
  • Avatare in Bäumen und Kommentaren sind Kreise statt Quadrate.

Überprüfen Sie das Changelog für die Version 0.68.0 der Erweiterung, um mehr über die anderen Highlights zu erfahren.

Vorschau-Features

TypeScript 5.2-Unterstützung

Dieses Update beinhaltet die Unterstützung für die kommende TypeScript 5.2-Version. Schauen Sie sich den TypeScript 5.2 Iterationsplan an, um mehr über die aktuellen Arbeiten des TypeScript-Teams zu erfahren. Kommende Tooling-Highlights umfassen:

  • Eine neue Refactoring-Funktion Inline Constant.
  • Eine neue Refactoring-Funktion Move to File, mit der Sie ein Symbol in eine vorhandene Datei verschieben können.

Um die TypeScript 5.2 Nightly-Builds zu nutzen, installieren Sie die TypeScript Nightly-Erweiterung.

Neuer Diff-Editor

In dieser Iteration haben wir die Neufassung des Diff-Editors abgeschlossen. Die Neufassung ermöglichte uns die Hinzufügung einiger neuer Funktionen, die Verbesserung der Leistung und die Behebung verschiedener Fehler.

Um den neuen Diff-Editor auszuprobieren, fügen Sie "diffEditor.experimental.useVersion2": true zu Ihren Einstellungen hinzu. Der neue Diff-Editor ist noch experimentell, wird aber in einem zukünftigen Update den aktuellen Diff-Editor ersetzen.

Alle vorgestellten Funktionen erfordern den neuen Diff-Editor.

Unveränderte Regionen einklappen

Verwenden Sie diffEditor.experimental.collapseUnchangedRegions, um das Ausblenden unveränderter Regionen im neuen Diff-Editor zu aktivieren. Diese Funktion ist nützlich, wenn Sie große Diffs mit viel unverändertem Code überprüfen.

Die Ränder der ausgeblendeten Zeilenblöcke können gezogen oder angeklickt werden, um Code von unten oder oben anzuzeigen.

A screenshot of the "Collapse Unchanged Regions" feature in the new diff editor

Einfüge-/Löschmarkierungen anzeigen

Einfüge-/Löschmarkierungen zeigen an, wo in einer Zeile Wörter eingefügt oder gelöscht wurden, was besonders hilfreich ist, wenn eine Zeile sowohl Einfügungen als auch Löschungen enthält.

Verwenden Sie diffEditor.experimental.showEmptyDecorations, um Einfüge- und Löschmarkierungen zu aktivieren/deaktivieren.

Deletion markers

Verbesserte Dekorationen

Vollzeilenlöschungen/-einfügungen haben jetzt eine Hintergrundfarbe über die gesamte Breite. Dies reduziert Rauschen erheblich.

Dies ist ein Beispiel dafür, wie der neue Diff-Editor Änderungen hervorhebt:

New Diff Editor highlighted changes

So rendert der alte Diff-Editor Dekorationen (beachten Sie, dass Zeile 57 auf der rechten Seite keinen Hintergrund mit voller Breite hat)

Current Diff Editor highlighted changes

Synchrone Diff-Aktualisierung

Beim Tippen im neuen Diff-Editor werden Änderungen heuristisch sofort angewendet und lösen nach einiger Verzögerung eine asynchrone Diff-Berechnung aus. Im alten Diff-Editor wurden Änderungen nicht sofort angewendet, was zu sichtbarem Flimmern beim Tippen führte.

Neu - die Diffs werden beim Tippen sofort aktualisiert

Diffs update immediately when typing

Alt - es gibt ein sichtbares Flackern

Diffs did only update after a delay in the old diff editor

Verschiebungsdetektion

Diese experimentelle Funktion erkennt verschobene Codeblöcke innerhalb einer Datei. Verwenden Sie diffEditor.experimental.showMoves, um sie zu aktivieren. Derzeit werden nur einfache Verschiebungen erkannt, aber wir planen, diese Funktion in Zukunft zu verbessern. Sobald ein verschobener Codeblock ausgewählt ist, werden Quell- und Zielpositionen ausgerichtet und ein Diff zwischen ihnen angezeigt.

Move detection displays line connecting moved code block

Da die Verschiebungserkennung noch experimentell ist, erwarten Sie in zukünftigen Updates erhebliche Änderungen.

Erweiterungs-Authoring

SecretStorage API verwendet jetzt Electron API statt Keytar

Die SecretStorage API ist seit Jahren die empfohlene Methode zum Speichern von Geheimnissen wie Passwörtern, Zugriffstoken usw. Intern wurde keytar verwendet, eine Abstraktionsschicht zur Speicherung von Geheimnissen im OS-Schlüsselbund. Aufgrund der Einstellung und Archivierung von Keytar suchten wir nach anderen Lösungen für das Problem, insbesondere nach einer Lösung in unserem Laufzeitsystem Electron.

In dieser Version haben wir den Übergang von Keytar zur safeStorage API von Electron begonnen. Dieser Wechsel sollte für Sie transparent sein, da Geheimnisse von Keytar abgerufen und über die safeStorage API von Electron wiederhergestellt werden. Zukünftig werden wir diese Migration entfernen, um unsere Abhängigkeit von Keytar vollständig zu beseitigen.

Keytar-Einstellungsplan

VS Code hat seit einiger Zeit eine große Abhängigkeit von keytar, einer Abstraktionsschicht zur Speicherung von Geheimnissen im OS-Schlüsselbund. Zusätzlich haben wir einen Keytar-Shim in VS Code aufgenommen, von dem Erweiterungen vor der Einführung der SecretStorage API abhängig waren. Keytar selbst ist offiziell archiviert und wird nicht mehr gepflegt... Um gute Sicherheitspraktiken zu fördern, indem wir nicht auf eine archivierte Software zur Speicherung von Geheimnissen angewiesen sind, arbeiten wir an einem Plan, diesen Shim aus VS Code zu entfernen.

Wir haben bereits direkt Erweiterungsautoren von beliebten Erweiterungen kontaktiert, die diesen Keytar-Shim noch verwenden, und sie arbeiten daran, davon wegzukommen. Wir möchten dies hier und in unseren GitHub-Diskussionen für diejenigen, die wir nicht direkt kontaktiert haben, mitteilen, um die Störungen durch diese Änderung zu minimieren. Wir wissen, dass dies keine gute Nachricht ist, da wir ebenfalls erhebliche Arbeit hatten, um unsere Abhängigkeit von Keytar zu beseitigen, aber wir glauben, dass dies das Richtige ist, um sicherzustellen, dass Erweiterungen sichere APIs verwenden.

Wenn Sie Keytar direkt in Ihrer Erweiterung verwenden, haben Sie einige Optionen zur Auswahl:

  • (empfohlen) Verwenden Sie die SecretStorage API, die VS Code auf dem ExtensionContext bereitstellt. Diese API ist plattformübergreifend und funktioniert auf allen Plattformen, die VS Code unterstützt. Sie wird vom VS Code-Team gepflegt, wird auch weiterhin gepflegt und ist seit Jahren Teil der VS Code API.
  • (nicht empfohlen) Sie können das Modul keytar mit Ihrer Erweiterung bündeln. Beachten Sie, dass Keytar ein natives Node-Modul ist, was bedeutet, dass Sie eine plattformspezifische Erweiterung für jede Plattform veröffentlichen müssen, die Sie unterstützen möchten.

Zeitplan: Der aktuelle Plan ist, diesen Shim aus VS Code Insiders im Anfang August zu entfernen, was bedeutet, dass die stabile Version vom September 2023 die erste Version ohne den Shim sein wird.

Die Arbeiten hierfür werden in Issue #115215 verfolgt. Wenn Sie Fragen haben, können Sie diese gerne hier in unseren GitHub-Diskussionen stellen.

Verbesserte vscode.fs.writeFile-Leistung für lokale Dateien

Wenn Sie die vscode.fs.writeFile API zum Schreiben von Daten in Dateien verwenden (was Sie tun sollten!), werden Schreiboperationen auf Dateien, die sich lokal beim Extension Host befinden, nun viel schneller aufgelöst.

Zuvor delegierte der Extension Host die Schreiboperation zur Ausführung an den VS Code-Client, aber jetzt wird die Operation direkt innerhalb des Extension Hosts ausgeführt, wodurch Rundreisen eingespart werden.

Tree-Checkbox-API

Die TreeItem checkboxState API wurde fertiggestellt. Standardmäßig wird der ausgewählte Zustand von Tree-Elementen mit Kontrollkästchen vom VS Code verwaltet. Dieses Verhalten kann durch Setzen der TreeViewOptions-Eigenschaft manageCheckboxStateManually auf true geändert werden. Wenn manageCheckboxStateManually gesetzt ist, ist die Erweiterung für die Verwaltung des Auswählens und Abwählens von Eltern- und Kind-Kontrollkästchen verantwortlich.

EnvironmentVariableCollection.description

Diese neue API ermöglicht die Angabe einer Beschreibung für EnvironmentVariableCollection, die dem Benutzer im Terminal-Tab-Hover angezeigt wird, um zu erklären, was die Änderung genau bewirkt.

// Example of what the Git extension could use
context.environmentVariableCollection.description =
  'An explanation of what the environment changes do';

Sie können die API in Aktion sehen in der integrierten Git-Erweiterung, die nun beschreibt, was die Änderung bewirkt.

Environment variable collection descriptions are explained in a terminal tab's hover

Vorgeschlagene APIs

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

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

Sie können keine Erweiterung veröffentlichen, die eine vorgeschlagene API verwendet. Es kann zu Breaking Changes in der nächsten Version kommen und wir möchten niemals bestehende Erweiterungen beeinträchtigen.

Schreibgeschützte Nachricht für Dateisystemanbieter

Bei der Registrierung von registerFileSystemProvider können Sie anstelle einer einfachen Kennzeichnung als schreibgeschützt eine Meldung für schreibgeschützte Dateien bereitstellen. Die untenstehende Meldung wird im Editor angezeigt, wenn ein Benutzer versucht, eine Datei von diesem Anbieter zu bearbeiten.

Read-only file system message

Technik

Namens-Mangelung exportierter Symbole

Letztes Jahr haben wir begonnen, die Namen privater Eigenschaften und Methoden zu verändern, um die Code-Größe zu reduzieren. Jetzt verändern wir auch exportierte Symbolnamen, was die Größe unserer Haupt-Workbench-JavaScript-Datei um weitere 8 % reduziert.

Unser Namens-Mangelungs-Build-Schritt spart nun insgesamt 3,9 MB JavaScript im Kern von VS Code und unseren integrierten Erweiterungen. Diese Reduzierung beschleunigt Downloads, verringert die Installationsgröße von VS Code und beschleunigt das Laden von Code jedes Mal, wenn Sie VS Code starten.

Prüfung auf Integrität von Checksummen für Node.js, integrierte Erweiterungen und Electron

Als Teil unseres Builds konsumieren wir Binärressourcen aus anderen Quellen, wie z.B. Node.js für unseren Remote-Server und integrierte Erweiterungen aus dem Marketplace und Electron. In diesem Meilenstein stellen wir die Integrität dieser Binärressourcen sicher, indem wir gegen eine SHA256-Checksumme validieren, die im vscode GitHub-Repository eingecheckt ist.

Neue Linux-Leistungsmaschine

Wir nehmen die Leistung von VS Code sehr ernst, insbesondere die benötigte Zeit, um einen Texteditor zu öffnen und einen blinkenden Cursor zu sehen. Um diese benötigte Zeit zu überwachen, führen wir tägliche Leistungstests unter Windows und macOS durch.

In diesem Meilenstein haben wir eine Linux-Maschine in den Testlauf aufgenommen und berichten über die Startzeiten unter Ubuntu 22.

Linux performance machine

Optimierungen des Ereignisemitters

VS Code verwendet Event-Emitter extensiv in unserer gesamten Codebasis. Wir haben diese Emitter in dieser Iteration optimiert, was die Startzeit und den Speicherverbrauch leicht verbessert hat.

Weitere Informationen zu dieser Verbesserung finden Sie in Issue #185789.

Verbesserungen am Terminal-Pty-Host

Der Prozess "Pty Host" verwaltet alle Shell-Prozesse, die vom Terminal gestartet werden, und es wurden mehrere Verbesserungen vorgenommen

  • Leistung
    • Es gibt nun einen direkten Kommunikationskanal zum Pty-Host-Prozess. Die bedeutendste Änderung hierbei ist die Reduzierung der Eingabe-Latenz des Terminals.
    • Die Leistung beim Wiederverbinden (Fenster neu laden) und Wiederherstellen von Prozessen (neu starten) wurde durch die Reduzierung unnötiger Aufrufe und die Parallelisierung von Aufgaben bei der Wiederherstellung mehrerer Terminals verbessert.
    • Wir sammeln nun Leistungsmetriken für den Terminalstart und die Wiederverbindung, die über den Befehl Entwickler: Startleistung eingesehen werden können.
  • Diagnosen
    • Alle terminalbezogenen Protokolle wurden aus dem Ausgabekanal Fenster in den neuen Ausgabekanal Terminal verschoben.
    • Wenn die Protokollstufe "Trace" für den Ausgabekanal Pty Host aktiviert ist, protokolliert das Terminal alle RPC-Aufrufe, was bei der Diagnose von Terminalproblemen hilft.

Dokumentation

Neue C#-Themen

Sie können mehr über die C#-Entwicklung in VS Code mit der Erweiterung C# Dev Kit durch eine neue Reihe von C#-Artikeln lernen. Dort finden Sie Themen, die erklären, wie Sie loslegen, die Sprachfunktionen der Erweiterung beschreiben (Code-Navigation, Refactoring, Debugging) und den Entwicklungslebenszyklus unterstützen, wie z.B. Projekt- und Paketverwaltung.

Referenz für Glob-Muster

VS Code hat eine eigene Implementierung von Glob-Mustern, die es für Funktionen wie die Dateisuche und Ordnerfilterung verwendet, mit der Sie die Ansicht des Datei-Explorers anpassen können usw. Um die Details zu erfahren, können Sie die neue Referenz für Glob-Muster einsehen.

Bemerkenswerte Fehlerbehebungen

  • Verliert Text beim Maximieren des integrierten Terminals #134448
  • Unterstützung für die automatische Injektion der Fish-Shell-Integration #139400

Vielen Dank

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

Fehlerverfolgung

Beiträge zu unserer Fehlerverfolgung

Pull-Anfragen

Beiträge zu vscode

Beiträge zu vscode-emmet-helper

Beiträge zu vscode-livepreview

Beiträge zu vscode-pull-request-github

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