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

September 2024 (Version 1.94)

Update 1.94.1: Dieses Update behebt dieses Sicherheitsproblem Problem.

Update 1.94.2: Dieses Update behebt diese Probleme.

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


Willkommen zur September 2024-Version von Visual Studio Code. Es gibt viele Updates in dieser Version, die Ihnen hoffentlich gefallen werden. Einige der wichtigsten Highlights sind:

  • In Explorer suchen - Finden Sie schnell Dateien in der Explorer-Ansicht mit der verbesserten Suchfunktion.
  • Source Control-Diagramm - Mehr Filteroptionen und Interaktivität im Source Control-Diagramm.
  • Python-Testabdeckung - Führen Sie Python-Tests mit Abdeckung aus und erhalten Sie detaillierte Ergebnisse im Editor.
  • ESM - Schnellerer VS Code-Start dank der Migration zu ESM.
  • Account-Einstellungen - Geben Sie an, welcher Account für eine Erweiterung verwendet werden soll.
  • Copilot im nativen REPL - Erhalten Sie Code-Vervollständigungen und Inline-Chat im nativen REPL.
  • Verbesserter Chat-Kontext - Ziehen und legen Sie Dateien ab oder verwenden Sie IntelliSense für einen relevanteren Chat-Kontext.
  • Testumgebungs-Setup - Erhalten Sie Hilfe beim Einrichten eines Testframeworks für Ihren Arbeitsbereich.

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.

GitHub Copilot

Wechseln Sie Sprachmodelle im Chat

Zuvor haben wir angekündigt, dass Sie sich für die Vorabregistrierung für OpenAI o1-Modelle anmelden können. Sobald Sie Zugriff haben, erhalten Sie in Copilot Chat in VS Code eine Modellwahl für Copilot Chat, um zu wählen, welche Modellversion Sie für Ihre Chat-Konversationen verwenden möchten.

Copilot model picker control in the Chat view enables switching to another language model.

GPT-4o im Inline-Chat

Wir haben Copilot Inline Chat auf GPT-4o aktualisiert, um Ihnen schnelleren, genaueren und qualitativ hochwertigeren Code und Erklärungen zu liefern, wenn Sie Chat im Editor verwenden.

Übereinstimmung mit öffentlichem Code im Chat

Sie können GitHub Copilot erlauben, Code zurückzugeben, der mit öffentlich verfügbarem Code auf GitHub.com übereinstimmt. Wenn diese Funktionalität für Ihr Organisationsabonnement oder persönliches Abonnement aktiviert ist, lieferten Ihnen Copilot-Code-Vervollständigungen bereits Details zu den erkannten Übereinstimmungen. Wir zeigen Ihnen diese Übereinstimmungen nun auch für öffentlichen Code in Copilot Chat an.

Wenn dies für Ihre Organisation oder Ihr Abonnement aktiviert ist, sehen Sie möglicherweise eine Meldung am Ende der Antwort mit einem Link Übereinstimmungen anzeigen. Wenn Sie auf den Link klicken, öffnet sich ein Editor, der Ihnen die Details der übereinstimmenden Code-Referenzen mit weiteren Details anzeigt.

Chat code referencing example.

Erfahren Sie mehr über Code-Referenzen in GitHub Copilot im GitHub Blog.

Datei-Vorschläge im Chat

In Chat-Eingabefeldern können Sie jetzt #<Dateiname> eingeben, um Dateinamen-Vorschläge zu erhalten und diese schnell als Kontext zu Ihrer Eingabeaufforderung hinzuzufügen. Dies funktioniert in Chat-Bereichen, die Dateianhänge unterstützen, wie der Chat-Ansicht, dem Schnell-Chat, dem Inline-Chat und dem Notebook-Chat.

Wir haben die Darstellung von Arbeitsbereichs-Dateipfaden, die in Copilot-Antworten erwähnt werden, verbessert. Diese Pfade sind sehr häufig, wenn Sie @workspace-Fragen stellen.

Das erste, was Ihnen auffallen wird, ist, dass Pfade zu Arbeitsbereichs-Dateien jetzt ein Dateisymbol enthalten. Dies ermöglicht es Ihnen, sie in der Chat-Antwort leicht zu unterscheiden. Das Dateisymbol basiert auf Ihrem aktuellen Dateisymbol-Design.

Paths to workspace files in the response now render using file icons.

Diese Pfade sind interaktive Links, wählen Sie sie also einfach aus, um die entsprechende Datei zu öffnen. Sie können sie sogar per Drag & Drop in eine neue Editorgruppe ziehen oder in einen Texteditor einfügen, indem Sie die Umschalttaste gedrückt halten, bevor Sie sie loslassen.

Standardmäßig zeigen diese Links nur den Dateinamen an, aber Sie können mit der Maus darüber fahren, um den vollständigen Dateipfad anzuzeigen.

Hovering over a workspace path to see the full workspace path.

Sie können auch mit der rechten Maustaste auf einen dieser Pfade klicken, um ein Kontextmenü mit zusätzlichen Befehlen zu öffnen, z. B. das Kopieren eines relativen Pfads zur Ressource oder das Anzeigen der Datei im Dateiexplorer Ihres Betriebssystems.

The context menu for a workspace path in chat provides options to open the file or copy its path.

Wir planen, die Darstellung von Arbeitsbereichspfaden in den kommenden Iterationen weiter zu verbessern und ähnliche Verbesserungen für Symbolnamen in Antworten vorzunehmen.

Dateien per Drag & Drop ziehen, um Chat-Kontext hinzuzufügen

Sie können jetzt ganz einfach zusätzliche Dateien als Kontext für eine Chat-Eingabeaufforderung anhängen, indem Sie Dateien oder Editor-Tabs von der Werkzeugleiste direkt in den Chat ziehen. Halten Sie für Inline-Chat die Umschalttaste gedrückt und lassen Sie eine Datei fallen, um sie als Kontext hinzuzufügen, anstatt sie im Editor zu öffnen.

Dateianhänge im Verlauf enthalten

Es gibt mehrere Möglichkeiten, eine Datei oder eine Editorauswahl als relevanten Kontext für Ihre Chat-Anfrage anzuhängen. Zuvor wurde dieser Kontext nur für die aktuelle Anfrage hinzugefügt und war nicht im Verlauf von Folgeanfragen enthalten. Jetzt bleiben diese Anhänge im Verlauf erhalten, sodass Sie sich weiterhin darauf beziehen können, ohne sie erneut anhängen zu müssen.

Chat conversation shows that Copilot keeps track of attached files across multiple prompts.

Inline-Chat und Vervollständigungen im nativen Python-REPL

Der native REPL-Editor, der von der Python-Erweiterung verwendet wird, unterstützt jetzt Copilot Inline-Chat und Code-Vervollständigungen direkt im Eingabefeld.

Generierten Code im Notebook akzeptieren und ausführen

Wenn Sie Copilot Inline-Chat verwenden, um Code in einem Notebook zu generieren, können Sie den generierten Code jetzt aus Inline-Chat akzeptieren und direkt ausführen.

Variablen im Notebook-Chat anhängen

Wenn Sie Copilot in einem Notebook verwenden, können Sie jetzt Variablen aus dem Jupyter-Kernel in Ihren Anfragen anhängen. Das Hinzufügen von Variablen gibt Ihnen eine präzisere Kontrolle über den Kontext Ihrer Chat-Anfrage, sodass Sie relevantere Antworten von Copilot erhalten.

Geben Sie # gefolgt vom Variablennamen ein oder verwenden Sie die 📎-Steuerung (⌘/ (Windows, Linux Strg+/)) im Inline-Chat, um eine Kontextvariable hinzuzufügen.

Aufgefrischte Chat-Benutzeroberfläche

Wir haben die Chat-Ansicht mit einer neuen, übersichtlichen Willkommensseite aufgefrischt und das Layout des Chat-Eingabebereichs aktualisiert. Sie können jetzt die @-Schaltfläche verwenden, um die Liste der verfügbaren Chat-Teilnehmer und Slash-Befehle, sowohl die integrierten als auch die von installierten Erweiterungen, einfach zu finden. Sie können Teilnehmer und Slash-Befehle auch weiterhin finden, indem Sie / oder @ in das Chat-Eingabefeld eingeben.

Updated Chat view welcome experience.

Semantische Suchergebnisse (Vorschau)

Einstellung: github.copilot.chat.search.semanticTextResults

Die Suchansicht ermöglicht es Ihnen, eine exakte Suche in Ihren Dateien durchzuführen. Wir haben der Suchansicht nun eine Funktion hinzugefügt, die Copilot verwendet, um semantisch relevante Suchergebnisse zu liefern.

Diese Funktionalität befindet sich noch in der Vorschau und ist standardmäßig nicht aktiviert. Probieren Sie es aus und teilen Sie uns Ihre Meinung mit!

Testfehler beheben (Vorschau)

Einstellung: github.copilot.chat.fixTestFailure.enabled

Wir haben spezielle Logik hinzugefügt, die Ihnen hilft, fehlerhafte Unit-Tests zu diagnostizieren. Diese Logik wird in einigen Szenarien durch den /fix Slash-Befehl ausgelöst, und Sie können sie auch direkt mit dem /fixTestFailure Slash-Befehl aufrufen. Der Befehl ist im Chat standardmäßig aktiviert, kann aber über die Einstellung github.copilot.chat.fixTestFailure.enabled deaktiviert werden.

Automatisierte Testeinrichtung (Experimentell)

Einstellung: github.copilot.chat.experimental.setupTests.enabled

Wir haben einen experimentellen /setupTests Slash-Befehl hinzugefügt, der Ihnen helfen kann, die Testeinrichtung für Ihren Arbeitsbereich zu konfigurieren. Dieser Befehl kann ein Testframework empfehlen, Schritte zur Einrichtung und Konfiguration bereitstellen und eine VS Code-Erweiterung vorschlagen, um Testintegration in VS Code zu bieten. Dies kann Ihnen Zeit und Mühe sparen, um mit dem Testen Ihres Codes zu beginnen.

Wenn Sie den /tests-Befehl verwenden, um Tests für Ihren Code zu generieren, kann er /setupTests und Test-Erweiterungen empfehlen, wenn es so aussieht, als ob eine solche Integration in Ihrem Arbeitsbereich noch nicht eingerichtet wurde.

Debuggen aus dem Chat starten (Experimentell)

Einstellung: github.copilot.chat.experimental.startDebugging.enabled

In diesem Meilenstein haben wir Verbesserungen am experimentellen /startDebugging Slash-Befehl vorgenommen. Dieser Befehl ermöglicht es Ihnen, mühelos eine Startkonfiguration zu finden oder zu erstellen und mit dem Debuggen Ihrer Anwendung zu beginnen. Wenn Sie @vscode in Copilot Chat verwenden, ist /startDebugging jetzt standardmäßig verfügbar.

A user types /startDebugging flask app port 3000 in the panel chat and is provided with the launch configuration.

Chat im Command Center (Experimentell)

Einstellung: chat.commandCenter.enabled

Wir experimentieren mit einem Command Center-Eintrag für den Zugriff auf den Chat. Er bietet schnellen Zugriff auf alle relevanten Chat-Befehle, wie z. B. das Starten der verschiedenen Chat-Erlebnisse oder das Anhängen von Kontext an Ihre Eingabeaufforderung. Beachten Sie, dass das Command Center selbst aktiviert sein muss, damit der Chat-Command Center-Eintrag angezeigt wird.

Chat Command Center button and the drop-down menu with relevant chat actions.

Verbesserter temporaler Kontext (Experimentell)

Einstellung: github.copilot.chat.experimental.temporalContext.enabled

Mit temporärem Kontext können Sie Inline-Chat anweisen, kürzlich geöffnete oder bearbeitete Dateien als Teil des Chat-Kontextes zu berücksichtigen. Wir haben diese Funktion verbessert und laden alle ein, sie auszuprobieren.

Benutzerdefinierte Anweisungen (Experimentell)

Einstellung: github.copilot.chat.experimental.codeGeneration.useInstructionFiles

Einstellung: github.copilot.chat.experimental.testGeneration.instructions

Im letzten Meilenstein haben wir benutzerdefinierte Code-Generierungsanweisungen eingeführt. Wir haben diese Funktionalität weiter ausgebaut, um gemeinsame Anweisungen für die Code-Generierung in einer .github/copilot-instructions.md-Datei in Ihrem Arbeitsbereich zu definieren. Diese gemeinsamen Anweisungen ergänzen Ihre persönlichen Code-Generierungsanweisungen. Aktivieren Sie die Code-Generierungsanweisungsdatei mit der Einstellung github.copilot.chat.experimental.codeGeneration.useInstructionFiles.

Darüber hinaus können Sie jetzt Anweisungen für die Testgenerierung in den Einstellungen definieren oder sie aus einer Datei importieren. Wenn Sie beispielsweise immer ein bestimmtes Unit-Test-Framework für Ihre Tests verwenden möchten. Konfigurieren Sie die Testgenerierungsanweisungen in der Einstellung github.copilot.chat.experimental.testGeneration.instructions.

Barrierefreiheit

Erste Schritte

Unser Menü Hilfe enthält jetzt einen Leitfaden Erste Schritte mit den Barrierefreiheitsfunktionen, der es Ihnen erleichtert, die Barrierefreiheitsoptionen zu erkunden und zu nutzen. Der Leitfaden führt Sie in Funktionen wie den Dialog für Barrierefreiheit, Barrierefreiheitssignale, Tastenkombinationen und mehr ein.

Get Started with Accessibility Features product walkthrough.

Verbesserungen der Barrierefreiheit von Kommentaren

Wir haben eine barrierefreie Ansicht für Kommentar-Thread-Steuerelemente eingeführt. Diese Ansicht enthält den relevanten Editor-Kontext, sodass Sie sich konzentrieren können, ohne zwischen dem Editor und der barrierefreien Ansicht wechseln zu müssen. Ebenso wird der Editor-Kontext jetzt in der barrierefreien Ansicht für das Kommentarfenster bereitgestellt.

Wir haben auch den Befehl Kommentare: Kommentar in aktueller Zeile fokussieren eingeführt, mit dem Sie mit der Tastatur schnell vom Editor zum Kommentar-Steuerelement wechseln können. Es gibt auch neue Aktionen, um zu den nächsten und vorherigen kommentierten Bereichen im Editor zu springen: Kommentare: Zum nächsten kommentierten Bereich springen und Kommentare: Zum vorherigen kommentierten Bereich springen.

Workbench

Ändern der Account-Einstellungen einer Erweiterung

In dieser Iteration haben wir untersucht, wie die Erfahrung beim Ändern des bevorzugten Accounts für eine Erweiterung verbessert werden kann. Wenn Sie beispielsweise mehrere GitHub-Accounts haben und sich versehentlich mit dem falschen Account bei GitHub Copilot angemeldet haben und nun den anderen verwenden müssen.

Es ist jetzt möglich, diese Einstellung nachträglich auf verschiedene Weise zu ändern.

  • Account-Menü in der Aktivitätsleiste > <Ihr Account> > Vertrauenswürdige Erweiterungen verwalten > Wählen Sie das Zahnradsymbol für eine Erweiterung aus.

    Manage trusted extensions Quick Pick, with gear button highlighted.

  • Erweiterungen-Ansicht > Kontextmenü (oder Zahnradsymbol) einer Erweiterung, die die Authentifizierung verwendet > Wählen Sie Account-Einstellungen aus.

    Account preferences option in the context menu of an extension.

  • Erweiterungsdetailansicht > Zahnradsymbol > Wählen Sie Account-Einstellungen aus.

    Account preferences option in the gear menu of an extension.

Die Auswahl einer dieser Optionen führt Sie zu einer Schnellwahl, wo Sie den Account ändern können, den eine Erweiterung verwendet.

The account preference Quick Pick that enables you to select extensions for a given account.

Wenn Sie die Account-Einstellungen einer Erweiterung ändern, wird ein Ereignis an die Erweiterung gesendet, und es liegt an der Erweiterung, es ordnungsgemäß zu verarbeiten. Wenn Sie kein erwartetes Verhalten sehen, melden Sie ein Problem für diese Erweiterung, damit die Account-Einstellungen verarbeitet werden können.

Bitte teilen Sie uns auch mit, ob Sie Feedback zu diesem Ablauf haben.

Verknüpfte Ordner und Arbeitsbereiche mit einem Profil anzeigen

In diesem Meilenstein haben wir einen Abschnitt Ordner & Arbeitsbereiche im Profil-Editor eingeführt. Dieser Abschnitt listet alle Ordner und Arbeitsbereiche auf, die einem bestimmten Profil zugeordnet sind, an einem zentralen Ort. Von diesem Abschnitt aus können Sie Ordner hinzufügen oder ändern oder den Ordner oder Arbeitsbereich in einem neuen Fenster öffnen.

Folders & Workspaces section in the Profile editor.

Erweiterungen über alle Profile hinweg aktualisieren

In diesem Meilenstein haben wir die Möglichkeit eingeführt, Erweiterungen über alle Profile hinweg zu aktualisieren. Dies ist nützlich, wenn Sie mehrere Profile haben und die Versionen Ihrer Erweiterungen synchron halten möchten. Zuvor mussten Sie zu jedem Profil wechseln und die Erweiterungen für dieses Profil aktualisieren.

Warnungen in der Erweiterungsansicht

Die Erweiterungsansicht zeigt jetzt eine Warnung und zugehörige Informationen an, wenn ungültige Erweiterungen vorhanden sind oder Erweiterungen aufgrund von Versionsinkompatibilität deaktiviert sind.

Extensions view shows a warning badge and description about the warning.

Im Explorer suchen

Wir haben die Suchfunktion in der Explorer-Ansicht verbessert, um das Durchsuchen von Dateien in großen Projekten zu erleichtern. Sie können die Suchfunktion im Dateiexplorer mit der Tastenkombination ⌥⌘F (Windows, Linux Strg+Alt+F) öffnen. Während der Suche können Sie zwischen unscharfer Übereinstimmung und fortlaufender Übereinstimmung für flexiblere Ergebnisse wechseln.

Beachten Sie, dass einige Kontextmenüaktionen während der Suche vorübergehend deaktiviert sind. Bleiben Sie dran für weitere Verbesserungen!

Release Notes

Wir haben eine vereinfachte Syntax für die Referenzierung von Einstellungen in unseren Release Notes (setting.name), die auch das nun bekannte Zahnradsymbol-Rendering anzeigt, wenn sie im Release-Notes-Editor angezeigt werden.

Setting URL in release notes enables navigating to the Settings editor directly.

Editor

Verbesserungen bei Inlay-Hints

Wir haben die Einstellung editor.inlayHints.maximumLength hinzugefügt, die steuert, nach wie vielen Zeichen Inlay-Hints abgeschnitten werden.

Wir haben auch die Update-Strategie für Inlay-Hints überarbeitet und sie sollten sich nun beim Tippen früher aktualisieren, ohne dass es zu horizontalen Cursorbewegungen kommt.

Experimenteller Bearbeitungskontext

In diesem Meilenstein haben wir eine neue experimentelle Einstellung editor.experimentalEditContextEnabled eingeführt. Diese Einstellung aktiviert die EditContext API, um die Bearbeitungserfahrung in VS Code zu verbessern. Die Übernahme der EditContext API hat es uns ermöglicht, bestimmte IME-Kompositionsfehler zu beheben. Im Allgemeinen glauben wir, dass sie die Bearbeitungserfahrung langfristig verbessern wird und schließlich standardmäßig aktiviert sein wird.

Stellen Sie sicher, dass Sie Ihr VS Code-Fenster neu laden, nachdem Sie diese Einstellung aktiviert haben, um sie nutzen zu können.

Quellcodeverwaltung

Verbesserungen der Source Control Graph-Ansicht

Im letzten Meilenstein haben wir die neue Ansicht Source Control Graph hinzugefügt. In diesem Meilenstein haben wir daran gearbeitet, die Funktionalität der neu hinzugefügten Ansicht zu erweitern und das Layout der Ansicht zu verfeinern.

Repository-Auswahl

Wenn Sie einen Ordner/Arbeitsbereich öffnen, der mehrere Repositories enthält, zeigt der Titel der Source Control Graph-Ansicht eine Repository-Auswahl an. Standardmäßig zeigt die Source Control Graph-Ansicht das aktive Repository an, das mit den Informationen in der Statusleiste übereinstimmt. Sie können die Repository-Auswahl verwenden, um die Source Control Graph-Ansicht an ein bestimmtes Repository zu heften.

Repository picker control in the title of the Source Control Graph view.

Verweis-Auswahl für Verlaufelemente

In diesem Meilenstein haben wir eine neue Verweis-Auswahl für Verlaufelemente zum Titel der Source Control Graph-Ansicht hinzugefügt. Sie können diese Verweis-Auswahl verwenden, um die im Diagramm angezeigten Verlaufelemente auf einen anderen Branch zu filtern oder mehrere Branches anzuzeigen.

History item reference Quick Pick control to choose one or more items.

Standardmäßig ist die Verweis-Auswahl für Verlaufelemente auf Auto gesetzt, was das Diagramm für das aktuelle Verlaufelement, sein Remote und eine optionale Basis rendert.

History item reference picker control in the title of the Source Control Graph view.

Aktionen für Verlaufelemente

In diesem Meilenstein haben wir die Liste der Aktionen erweitert, die im Kontextmenü für Quellcodeverwaltungs-Verlaufelemente verfügbar sind. Wir haben Aktionen zum Erstellen eines neuen Branches/Tags aus einem Verlaufelement, zum Cherry-Picking eines Verlaufelements und zum Auschecken (detached) eines Elements hinzugefügt.

Context menu for items in the Source Control Graph view.

Einstellungen für Source Control Graph

In diesem Meilenstein haben wir eine Reihe neuer Einstellungen hinzugefügt, damit Sie das Diagramm anpassen können.

  • scm.graph.badges - steuert, welche Abzeichen in der Source Control Graph-Ansicht angezeigt werden.
  • scm.graph.pageOnScroll - steuert, ob die Source Control Graph-Ansicht die nächste Seite von Elementen lädt, wenn Sie zum Ende der Liste scrollen.
  • scm.graph.pageSize - die Standardanzahl der Elemente, die in der Source Control Graph-Ansicht angezeigt werden und beim Laden weiterer Elemente.

Notebooks

Multi-Cursor-Unterstützung über Zellen hinweg (Vorschau)

Der Notebook-Editor unterstützt jetzt Multi-Cursor-Bearbeitung über Zellen hinweg mit der Einstellung notebook.multiCursor.enabled. Derzeit kann dies nur mit der Tastenkombination Strg+D ausgelöst werden und unterstützt Kerneditoraktionen sowie eine begrenzte Teilmenge von Editorbefehlen.

Diff-Editor zeigt Änderungen der Dokumentenmetadaten an

Der Notebook-Diff-Editor zeigt jetzt auch Änderungen an den Dokumentenmetadaten an, wie z. B. Kernelinformationen und Zellensprache.

Notebook dif editor showing side-by-side changes to the document metadata.

Unveränderte Bereiche in der Diff-Ansicht einklappen

Die Notebook-Diff-Ansicht berücksichtigt jetzt die Einstellung diffEditor.hideUnchangedRegions.enabled. Wenn diese aktiviert ist, werden unveränderte Codeblöcke standardmäßig eingeklappt, was die Überprüfung von Änderungen in großen Notebooks erleichtert.

Diff editor shows unchanged code blocks as collapsed.

Notebook-Serialisierung in Web Worker (Experimentell)

Diese Version führt eine experimentelle Funktion ein, die die Notebook-Serialisierung in einem Web Worker ermöglicht. Dies kann helfen, die Blockierungszeit des Hauptthreads im Extension Host-Prozess bei der Arbeit mit großen Notebooks zu reduzieren. Standardmäßig ist diese Funktion deaktiviert, kann aber durch Setzen von ipynb.experimental.serialization auf true aktiviert werden.

Debuggen

Unterstützung für Datenfarbkodierung

VS Code unterstützt neue Textstilisierungsfunktionen des Debug Adapter Protocols. Dies ermöglicht die Farbkodierung von Daten in den Ansichten "Variablen", "Überwachung", "Hover" und "Debug-Konsole" über ANSI-Escape-Sequenzen.

JavaScript Debugger

Verbesserte Anzeige von HTML-Elementen

Wir haben die Anzeige von HTML-Elementen im JavaScript-Debugger verbessert. Zuvor wurden sie als einfache Objekte gerendert, die schwer zu durchsuchen waren. Jetzt spiegeln sie die DOM-Struktur besser wider und wir nutzen neue Farbkodierungsfunktionen, um grundlegende Syntaxhervorhebungen bereitzustellen.

HTML elements are colorized in the JavaScript Debug Console.

Automatische Vervollständigung von Node-Befehlen in der Startkonfiguration

Es gibt eine neue automatische Vervollständigungshilfe in launch.json-Dateien für Befehlszeilenanwendungen, die in Ihrem node_modules installiert sind. Dies erleichtert die Einrichtung des Debuggens für Tools wie vitest oder nest.

Aufgeräumtere Ansicht der geladenen Quellen

Wir haben die Struktur von Quellpfaden für Node.js-integrierte Module, evaluierte Skripte und WebAssembly-Module geändert, um die Ansicht Geladene Quellen weniger unübersichtlich und einfacher zu durchsuchen zu machen.

Sprachen

TypeScript 5.6

Unsere JavaScript- und TypeScript-Unterstützung verwendet jetzt TypeScript 5.6. Dieses große Update enthält eine Reihe von Verbesserungen an Sprache und Werkzeugen sowie wichtige Fehlerbehebungen und Leistungsoptimierungen.

Sie können alles über die TypeScript 5.6-Version im TypeScript-Blog lesen. Wir haben auch einige Tooling-Highlights in den folgenden Abschnitten aufgenommen.

Erkennung einiger häufiger Programmierfehler vom Typ "immer wahr"

Nehmen wir an, Sie verwenden einen regulären Ausdruck in JavaScript oder TypeScript und schreiben Code wie diesen

const str = '...'
if (/\d+(\.\d+)?/) {
  ...
} else {
  ...
}

Oh nein! Sieht so aus, als hätten wir vergessen, .test() auf dem regulären Ausdruck aufzurufen, was bedeutet, dass die if-Bedingung immer zu true ausgewertet wird. Das ist nicht, was wir wollen.

Auch wenn dieses Problem offensichtlich ist, wenn darauf hingewiesen wird, sind Fehler dieser Art überraschend leicht zu machen und haben sogar echte Fehler in VS Code verursacht! Glücklicherweise meldet TypeScript jetzt einige der häufigsten "immer wahr"-Fehler in Ihrem Programm. Dazu gehört das Testen einer if-Bedingung gegen einen Wert, der nie wahr ist, oder ein bedingter Ausdruck, bei dem eine Seite nicht erreichbar ist, wie z. B. /abc/ ?? /xyz/.

Schauen Sie sich die TypeScript-Release-Notes an für weitere Beispiele und Details zur Funktionsweise dieses Features.

Regionenpriorisierte Diagnostik

Arbeiten Sie in einer sehr langen JavaScript- oder TypeScript-Datei? Sie sollten nun Diagnosen für Typfehler etwas schneller sehen, dank regionenpriorisierter Diagnostik. Das bedeutet, dass wir versuchen, die Diagnosen für den aktuell sichtbaren Code zu erhalten und diese zuerst anzuzeigen, auch wenn die Diagnosen für den Rest der Datei noch berechnet werden.

Diese Optimierung ist am relevantesten für komplexe Dateien mit Tausenden und Abertausenden von Zeilen. Bei kleineren Dateien werden Sie möglicherweise keine Änderungen feststellen.

Verbesserte Commit-Zeichen für JavaScript und TypeScript

Commit-Zeichen können die Codierung beschleunigen, indem sie Vervollständigungen automatisch beim Tippen akzeptieren. Zum Beispiel wird in JavaScript und TypeScript oft . als Commit-Zeichen betrachtet. Das bedeutet, um myVariable.property. zu tippen, können Sie einfach myv, ., p, . tippen, wobei der erste . die Vervollständigung für myVariable akzeptiert und der zweite . die Vervollständigung für property.

Diese Commit-Zeichen werden jetzt von TypeScript berechnet, was bedeutet, dass sie die Struktur des Programms besser berücksichtigen können. Wir können auch unsere Unterstützung dafür im Laufe der Zeit weiter verbessern.

Commit-Zeichen sind standardmäßig aktiviert, können aber deaktiviert werden, indem editor.acceptSuggestionOnCommitCharacter auf false gesetzt wird.

Ausschlussmuster für Auto-Importe

Das neue autoImportSpecifierExcludeRegexes ermöglicht es Ihnen, Auto-Importe von bestimmten Paketen mithilfe eines regulären Ausdrucks auszuschließen. Um beispielsweise Auto-Importe aus Unterverzeichnissen eines Moduls wie lodash auszuschließen, können Sie Folgendes festlegen:

{
  "typescript.preferences.autoImportSpecifierExcludeRegexes": ["^lodash/.*$"]
}

Sie können dies mit javascript.preferences.autoImportSpecifierExcludeRegexes für JavaScript und typescript.preferences.autoImportSpecifierExcludeRegexes für TypeScript konfigurieren. Weitere Details finden Sie in den TypeScript 5.6 Release Notes.

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.

Zu den Highlights gehören

  • An eine Kubernetes-Container über SSH/Tunnel anhängen
  • GPU-Verfügbarkeit manuell angeben

Sie erfahren mehr über diese Funktionen in den Remote Development Release Notes.

Beiträge zu Erweiterungen

Python

Tests mit Abdeckung ausführen

Sie können jetzt Python-Tests mit Abdeckung in VS Code ausführen! Um Tests mit Abdeckung auszuführen, wählen Sie das Symbol "Mit Abdeckung ausführen" im Test-Explorer oder "Mit Abdeckung ausführen" aus einem beliebigen Menü, aus dem Sie normalerweise Testläufe auslösen. Die Python-Erweiterung führt die Abdeckung mithilfe des pytest-cov-Plugins aus, wenn Sie pytest verwenden, oder mit coverage.py für unittest.

Sobald der Abdeckungslauf abgeschlossen ist, werden die Zeilen im Editor für die Zeilenabdeckung hervorgehoben. Diese können über das "Ergebnisse"-Fenster unten geschlossen und wieder geöffnet werden, wo es heißt "Testabdeckung schließen" oder "Testabdeckung anzeigen" unter dem letzten Testlauf. Zusätzlich erscheint ein Tab "Testabdeckung" unter dem Tab "Tests" im Test-Explorer, ebenfalls mit einem Becher-Symbol, zu dem Sie auch über Tests: Testabdeckung anzeigen in der Befehlspalette (⇧⌘P (Windows, Linux Strg+Umschalt+P)) navigieren können. In diesem Fenster können Sie Zeilen- und Verzweigungsabdeckungsmetriken für jede Datei und jeden Ordner in Ihrem Arbeitsbereich anzeigen.

Weitere Informationen zum Ausführen von Python-Tests mit Abdeckung finden Sie in unserer Python-Dokumentation. Allgemeine Informationen zur Testabdeckung finden Sie in der Testabdeckungs-Dokumentation von VS Code.

Standard-Problem-Matcher für Python

Die Python-Erweiterung enthält jetzt einen Standard-Problem-Matcher, der die Fehlerverfolgung in Ihrem Python-Code vereinfacht und kontextbezogeneres Feedback bietet. Um ihn zu integrieren, fügen Sie "problemMatcher": "$python" zu Ihren Aufgaben in task.json hinzu. Ein Problem-Matcher scannt die Ausgabe der Aufgabe nach Fehlern und Warnungen und zeigt diese im Probleme-Fenster an, was Ihren Entwicklungs-Workflow verbessert.

Unten sehen Sie ein Beispiel für eine task.json-Datei, die den Standard-Problem-Matcher für Python verwendet.

{
  "version": "2.0.0",
  "tasks": [
    {
      "label": "Run Python",
      "type": "shell",
      "command": "${command:python.interpreterPath}",
      "args": ["${file}"],
      "problemMatcher": "$python"
    }
  ]
}

Shell-Integration im Python Terminal REPL

Die Python-Erweiterung enthält jetzt eine Einstellung, um sich für das PYTHONSTARTUP-Skript zu entscheiden oder sich davon abzumelden, das ausgeführt wird, bevor Sie python oder eine andere Möglichkeit zum Starten des Python REPL im Terminal eingeben. Wenn Sie sich dafür entscheiden, können Sie Features aus Terminal-Shell-Integrationen nutzen, wie z. B. Befehlsdekorationen, Befehle erneut ausführen, zuletzt ausgeführte Befehle ausführen, wenn sie sich auf Mac oder Linux befinden. Sie können dies über die Einstellung python.terminal.shellIntegration.enabled aktivieren.

Pylance Sprachserver-Modus

Es gibt eine neue Einstellung python.analysis.languageServerMode, mit der Sie zwischen unserem aktuellen IntelliSense-Erlebnis oder einem leichten Erlebnis wählen können, das für die Leistung optimiert ist.

Wenn Sie nicht die volle Bandbreite der IntelliSense-Funktionen benötigen und bevorzugen, dass Pylance so ressourcenschonend wie möglich ist, können Sie python.analysis.languageServerMode auf light setzen. Andernfalls, um mit dem Erlebnis fortzufahren, das Sie heute mit Pylance haben, können Sie es auf default setzen.

Diese neue Funktionalität überschreibt die Standardwerte der folgenden Einstellungen

Einstellung light-Modus default-Modus
"python.analysis.exclude" ["**"] []
"python.analysis.useLibraryCodeForTypes" false true
"python.analysis.enablePytestSupport" false true
"python.analysis.indexing" false true

Die oben genannten Einstellungen können immer noch einzeln geändert werden, um die Standardwerte zu überschreiben.

GitHub Pull Requests

Es gab weitere Fortschritte bei der GitHub Pull Requests-Erweiterung, die es Ihnen ermöglicht, Pull-Anfragen und Issues zu bearbeiten, zu erstellen und zu verwalten. Lesen Sie das Changelog für Version 0.98.0 der Erweiterung, um mehr über die Highlights zu erfahren.

Erweiterungsentwicklung

Benutzerdefinierter Allocator in der Desktop-App entfernen

In dieser Version haben wir den benutzerdefinierten Allocator, der in Version 1.78 zum Extension Host der Desktop-Anwendung hinzugefügt wurde, entfernt. Dieser benutzerdefinierte Allocator fungiert als Brücke zur Unterstützung von V8-Sandbox-inkompatiblen Node.js-nativen Add-ons, die gegen die Electron-Laufzeitumgebung kompiliert wurden. Weitere Kontextinformationen finden Sie in diesem Tracking-Issue.

Wir haben sichergestellt, dass die Top 5000 Erweiterungen von dieser Änderung nicht betroffen sind. Wenn Ihre Erweiterung oder eine Abhängigkeit Ihrer Erweiterung von dieser Änderung betroffen ist, können Sie die folgenden Vorschläge zur Behebung ausprobieren:

  • Wenn Ihre Erweiterung n-api verwendet, wird der Status napi_no_external_buffers_allowed zurückgegeben, wenn externe Array-Puffer verwendet werden. In diesem Fall können Sie zur Verwendung der Kopierversion der API napi_create_buffer_copy wechseln.
  • Wenn Ihre Erweiterung node-addon-api verwendet, finden Sie in diesem Dokument alternative APIs und Kompilierungszeit-Einstellungen.
  • Wenn Sie die Leistungskosten der Kopie vermeiden möchten, können Sie den V8-Allocator verwenden, um sicherzustellen, dass der Puffer-Backing-Store mit der V8-Sandbox kompatibel ist.

Wir haben auch Telemetrie hinzugefügt, um potenziell betroffene Erweiterungen und native Add-ons zu identifizieren, damit wir proaktiv auf die Erweiterungsautoren zugehen und nach Möglichkeit Hilfe anbieten können. Wenn Ihre Erweiterung betroffen ist und keiner der oben genannten Vorschläge für Sie funktioniert, hinterlassen Sie einen Kommentar in unserem Diskussionsthread, und wir helfen Ihnen gerne weiter.

Debug Adapter Protocol

Wir haben formalisiert, wie Text in der Anzeige von Variablen und Ausgaben im Debug Adapter Protocol farblich gestaltet und gestylt werden kann. Die Farbgebung erfolgt über ANSI-Steuerzeichen und erfordert, dass sowohl der Client als auch der Debug-Adapter supportsANSIStyling in ihrer jeweiligen Initialisierungsanfrage und ihren Fähigkeiten angeben.

Vorschau-Features

Mehrere GitHub-Konten

Es ist jetzt möglich, sich gleichzeitig mit mehreren GitHub-Konten in VS Code anzumelden.

Diese Funktionalität ist in VS Code Insiders standardmäßig aktiviert. In Stable-Builds von VS Code können Sie sie mit der Einstellung github.experimental.multipleAccounts aktivieren.

Hier sind ein paar Szenarien, in denen Sie mehrere Konten benötigen könnten

  • Verwenden Sie Account1 für Settings Sync und Account2 für die GitHub Pull Request-Erweiterung
  • Verwenden Sie Account1 für die GitHub-Erweiterung (zum Pushen) und Account2 für GitHub Copilot

Um diese Funktionalität zu nutzen, lösen Sie einfach eine Anmeldeaktion aus (entweder mit einer integrierten Funktion wie Settings Sync oder mit einer Erweiterung), und Sie erhalten die Option, sich mit einem anderen Konto anzumelden. Diese Funktion lässt sich auch gut mit der neuen Account Preference Quick Pick kombinieren, falls Sie das Konto später ändern müssen.

Obwohl die meisten Dinge mit Ihren bestehenden Erweiterungen weiterhin funktionieren sollten, spielen einige Verhaltensweisen mit dieser Multi-Account-Welt möglicherweise noch nicht perfekt zusammen. Wenn Sie der Meinung sind, dass es Raum für Verbesserungen gibt, eröffnen Sie bitte ein Issue bei diesen Erweiterungen. Mit Hilfe der relativ neuen API vscode.authentication.getAccounts('github') haben Erweiterungen viele Möglichkeiten, mehrere Konten zu verwalten.

In der nächsten Iteration planen wir, diese Funktion für alle Benutzer standardmäßig zu aktivieren.

MSAL-basierte Microsoft-Authentifizierung

Wir bewegen uns darauf zu, dass unser Microsoft-Authentifizierungs-Stack MSAL (Microsoft Authentication Library) verwendet. Es war ein riesiges Unterfangen, aber wir haben in dieser Iteration große Fortschritte gemacht. Diese Arbeit erstreckt sich über alle VS Code-Clients, einschließlich VS Code und VS Code für das Web.

  • Für vscode.dev haben wir die browserbasierte MSAL.js für alle Microsoft-Authentifizierungsanfragen aktiviert. Mit anderen Worten, vscode.dev verwendet jetzt vollständig MSAL.

  • Für VS Code, den Desktop-Client, haben wir diese Funktion hinter einer Einstellung verborgen: microsoft.useMsal. Sie ist vorerst hinter einer Einstellung verborgen, da wir uns auf den Broker-Flow zubewegen werden, der es VS Code ermöglichen würde, den Authentifizierungsstatus des Betriebssystems zu nutzen. Um also so wenig Unterbrechungen wie möglich zu verursachen, werden wir diese Arbeit zuerst erledigen, bevor wir sie allgemein aktivieren. Wenn Sie diese neue Authentifizierung jedoch unbedingt ausprobieren möchten, können Sie dies gerne tun und uns Feedback geben.

Den detaillierten Status dieses Übergangs zu MSAL über alle VS Code-Komponenten hinweg finden Sie in Issue #178740.

TypeScript 5.7

Diese Version enthält anfängliche Unterstützung für die kommende TypeScript 5.7-Version. Sehen Sie sich den TypeScript 5.7 Plan für Details an.

Um Vorschau-Builds von TypeScript 5.7 zu nutzen, installieren Sie die TypeScript Nightly-Erweiterung.

Vorgeschlagene APIs

Werkzeuge für Sprachmodelle

Wir entwickeln unsere LanguageModelTool-API weiter. Die API besteht aus zwei Hauptteilen

  1. Die Möglichkeit für Erweiterungen, ein Tool zu registrieren. Ein Tool ist ein Funktionalitätsstück, das von Sprachmodellen verwendet werden soll. Zum Beispiel das Lesen der Git-Historie einer Datei.

  2. Die Mechanismen, mit denen Sprachmodelle Tools unterstützen, wie z. B. das Übergeben von Tools durch Erweiterungen bei Anfragen, das Anfordern einer Tool-Ausführung durch Sprachmodelle und die Rückmeldung der Ergebnisse einer Tool-Ausführung durch Erweiterungen.

In diesem Meilenstein haben wir die Möglichkeit hinzugefügt, dass Tools vor der Ausführung eine Benutzerbestätigung anfordern. Dies ist nützlich für Tools, die Nebenwirkungen haben könnten.

Werfen Sie einen Blick auf Issue #213274 für weitere Details oder um uns Feedback zu geben.

Hinweis: Die API befindet sich noch in aktiver Entwicklung, und es wird sich noch etwas ändern.

Technik

ESM wird für VS Code ausgeliefert

Wir liefern unsere ESM-Arbeiten nun auch in den Stable-Releases von VS Code aus. Das bedeutet, dass alle Schichten des VS Code-Kerns (Electron, Node.js, Browser, Worker) die import- und export-Syntax in JavaScript für das Laden und Exportieren von Modulen verwenden. Alle Verwendungen unseres Legacy-AMD-Loaders sind deaktiviert und werden im Rahmen unserer Debt Week im Oktober entfernt.

Der Umstieg auf ESM verbessert die Startleistung erheblich. Zum einen wird ein Großteil des AMD-Overheads entfernt, zum anderen wird die Größe des Haupt-Workbench-Bundles um mehr als 10 % reduziert.

Graph showing the trend of the main bundle load time, showing a large drop after introducing ESM.

Da wir nun vollständig auf ESM umgestellt haben, planen wir, unser Engineering-System für VS Code zu verbessern. Mit ESM werden viele moderne Tools für uns funktionieren, und wir freuen uns darauf, in naher Zukunft weitere Details dazu zu teilen.

Hinweis: Erweiterungen sind von dieser Änderung nicht betroffen und werden nicht über ESM geladen. Weitere Details finden Sie unter https://github.com/microsoft/vscode/issues/130367.

NPM als Standard-Paketmanager verwenden

Anfang September 2024 haben wir den Wechsel von Yarn zu npm für die Paketverwaltung im Repository microsoft/vscode abgeschlossen. Diese Entscheidung basierte auf den spezifischen Anforderungen von VS Code und konzentrierte sich auf folgende Kriterien:

  • Leistung: Wir sind ursprünglich aus Leistungsgründen zu Yarn gewechselt, und npm kann jetzt auch unsere Anforderungen erfüllen
  • Sicherheit: Wir machen unsere Lieferkette sicherer, indem wir die Exposition begrenzen und die Anzahl der von uns abhängigen Tools reduzieren

Bemerkenswerte Fehlerbehebungen

  • 226401 fileWatcher verbraucht weiterhin CPU bei 200%+
  • 10054 [WSL]: Ports-Tab meldet fälschlicherweise, dass Ports in WSL zu lokal weitergeleitet werden, wenn localhostForwarding = false ist

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-docs

Beiträge zu vscode-extension-samples

Beiträge zu vscode-js-debug

Beiträge zu vscode-jupyter

Beiträge zu vscode-languageserver-node

Beiträge zu vscode-pull-request-github

Beiträge zu vscode-python-debugger

Beiträge zu vscode-vsce

Beiträge zu vscode-wasm

Beiträge zu language-server-protocol

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