Freigeben über


Neuerungen bei C++ in Visual Studio 2022

Visual Studio 2022 enthält viele Updates und Fixes für die C++-Compiler und -Tools von Microsoft. Die Visual Studio-IDE bietet auch erhebliche Leistungs- und Produktivitätsverbesserungen und wird jetzt nativ als 64-Bit-App ausgeführt.

Neuerungen für C++ in Visual Studio, Version 17.12

Veröffentlicht im November 2024

Weitere Informationen zu Siehe
Neuerungen für C++-Entwicklerinnen und -Entwickler Neuerungen für C++-Entwickler in Visual Studio 2022 17.12
C++26- und C++23-Features, LWG-Problemauflösungen, Leistungsverbesserungen, verbessertes Verhalten und behobene Fehler STL Changelog 17.12
Neue Features in der Visual Studio 17.12-IDE Versionshinweise zu Visual Studio 2022, Version 17.12
Verbesserungen bei der C++-Sprachkonformität in Visual Studio 2022 17.12 Verbesserungen der C++-Konformität, Verhaltensänderungen und Fehlerbehebungen in Visual Studio 2022 17.12

Eine schnelle Hervorhebung einiger der neuen Features:

  • Verbesserungen der Standardbibliothek
    • Die Implementierung von C++23 Formatierungsbereichen (P2286R8) ist abgeschlossen. Formatierer für die Containeradapter stack, queueund priority_queue.
    • multidimensionale Tiefstellungsoperatoren hinzugefügt, die ebenfalls unterstützt <mdspan>werden. Beispiel: print("m[{}, {}]: '{}'; ", i, j, m[i, j])
  • Spieleentwicklung in C++
  • Einblicke erstellen
    • Sie können Build Insights für ausgewählte Dateien ausführen. Wählen Sie die gewünschten Dateien in der Projektmappen-Explorer aus, klicken Sie mit der rechten Maustaste, und wählen Sie "Buildeinblicke für ausgewählte Dateien ausführen" aus:Screenshot der Dateien im Projektmappen-Explorer. Das Kontextmenü ist geöffnet, und die Option zum Ausführen von Buildeinblicken für ausgewählte Dateien ist hervorgehoben.
    • Sie können Build Insights-Ergebnisse nach Projekt filtern. Klicken Sie auf die Filterschaltfläche in der Spaltenüberschrift des Filters, und wählen Sie die Projekte aus, für die Ergebnisse angezeigt werden sollen: Screenshot des Fensters
    • Klicken Sie im Fenster "Build Insights" auf das Fragezeichensymbol, um eine kurze Beschreibung für die Registerkarten im Fenster "Build Insights" und einen Link zur Dokumentation anzuzeigen, um eine ausführliche Erläuterung zu erhalten: Screenshot des Fensters
  • GitHub Copilot
    • Sie können neben dem Wert einer Variablen auf "Ask Copilot" klicken, um KI-gesteuerte Einblicke in den aktuellen Zustand zu erhalten. Beispielsweise weist das folgende Programm einen Off-by-One-Fehler in der Schleife auf:

    Screenshot des Fensters

    Der Code, der dieses Problem verursacht hat, lautet: for (auto it = h.animals_.begin(); it <= h.animals_.end(); it++).

    Wenn Sie auf das Symbol "Copilot fragen" für die it Variable klicken, wird ihnen mitgeteilt, warum sie lautet <NULL>:

    Screenshot eines GitHub Copilot-Fensters.

    Dieser Fehler befindet sich innerhalb einer Funktion, die als int calculate_number_of_cats(const house& h) definiert ist. Die GitHub Copilot-Nachricht sagt: "Der Wert des Ausdrucks ist NULL, was bedeutet, dass der Iterator nicht auf ein gültiges Element im Vektor animals_ zeigt. Im Kontext Ihres Programms soll der animals_ Vektor im Hausobjekt durchlaufen werden, um die Anzahl der Katzenobjekte zu zählen. Warum es null ist. Basierend auf dem Lokalen und Aufrufstapelkontext: Das Hausobjekt h verfügt über einen leeren animals_Vektor (Size=0). Die Schleifenbedingung <= h.animals_.end() ist falsch. Es sollte sein != h.animals_.end()."

    • Sie können in der Visual Studio-Fehlerliste auf "Copilot fragen" klicken, um Hilfe zu dem Fehler und einer vorgeschlagenen Lösung zu erhalten. Zum Beispiel:

    Screenshot des Fensters

    Das Symbol "Ask Copilot" wird neben einem Fehler hervorgehoben, der unique_ptr versucht, auf eine gelöschte Funktion zu verweisen.

    Wenn Sie auf "Copilot fragen" klicken, wird ihnen der Fehler mitgeteilt:

    Screenshot der GitHub Copilot-Erklärung für den Fehler.

    Die Copilot-Meldung besagt: "Der Fehler tritt auf, weil der bereichsbasierte For-Loop versucht hat, std::unique_ptr-Objekte zu kopieren, die nicht zulässig sind, da std::unique_ptr nicht kopiert werden kann. Um dies zu beheben, habe ich die Schleife so geändert, dass ein Verweis verwendet wird, um das Kopieren der std::unique_ptr-Objekte zu vermeiden. Auf diese Weise durchläuft die Schleife Verweise auf die objekte std::unique_ptr, die zulässig sind."

  • Debuggen
    • Neue Debugschnellansichten für mutex, recursive_mutexund move_iterator.
    • Der Debugger zeigt jetzt Rückgabewerte inline an: Screenshot einer QuickInfo mit dem Wert 8,25. Es ist das Ergebnis des Ausdrucks nach der Rückgabe-Anweisung, die überschritten wurde.

Neuerungen für C++ in Visual Studio, Version 17.11

Veröffentlicht august 2024

Weitere Informationen zu Siehe
Neuerungen für C++-Entwicklerinnen und -Entwickler Neuerungen für C++-Entwickler in Visual Studio 2022 17.11
Standardbibliothek (STL): Zusammenführung von C++26- und C++23-Funktionen, C++20-Fehlerberichten, LWG-Problemlösungen, Leistungsverbesserungen, verbessertem Verhalten und behobenen Fehlern STL Changelog 17.11
Neue Features in der Visual Studio 17.11-IDE Visual Studio 2022, Version 17.11: Versionshinweise
Verbesserungen bei der C++-Sprachkonformität in Visual Studio 2022 17.11 Verbesserungen der C++-Konformität, Verhaltensänderungen und Fehlerbehebungen in Visual Studio 2022 17.11

Eine partielle Liste der neuen Features:

  • Verbesserungen der Standardbibliothek

    • Die formatierte Ausgabeimplementierung enthält std::range_formatter jetzt Und Formatierer für std::pair und std::tuple.
    • Unterstützung std::println() ohne Argumente hinzugefügt. Dadurch wird eine leere Zeile gedruckt, wie in P3142R0 vorgeschlagen.
    • Verbesserte Vektorisierung für mehrere Algorithmen, einschließlich replace_copy(), replace_copy_if(), , find_first_of() ranges::replace_copyranges::replace_copy_ifund ranges::find_first_of, für 8-Bit- und 16-Bit-Elemente, mismatch(), , ranges::mismatch, count() ranges::count, find(), ranges::find_lastranges::findund ranges::iota.
  • Spieleentwicklung in C++

    • Sie können jetzt allgemeine Unreal Engine-Klassenvorlagen, -Module und -Plug-Ins aus Visual Studio hinzufügen. Weitere Informationen finden Sie unter Hinzufügen von Unreal Engine-Klassen, Modulen und Plug-Ins in Visual Studio.
    • Die neue Unreal Engine-Symbolleiste bietet schnellen Zugriff auf aktionen im Zusammenhang mit dem Unreal Engine in Visual Studio. Mit der Symbolleiste können Sie schnell an Unreal Engine-Prozesse anfügen, den Blueprints-Cache erneut scannen, schnell auf das Unreal Engine Log zugreifen und schnell auf die Unreal Engine Configuration Page für Visual Studio zugreifen. Weitere Informationen finden Sie unter Unreal Engine Toolbar.
    • Sie können jetzt Ablaufverfolgungsergebnisse nach Projekt filtern. Außerdem zeigen die Ergebnisse in jeder Zeile den relativen Pfad und Dateinamen anstelle des vollständigen Pfads an. Die Ergebnisgruppierung in der Ansicht "Eingeschlossene Dateien " wurde ebenfalls verbessert:

    Screenshot der verbesserten Diagnoseergebnisse der enthaltenen Dateien.

    Die Ansicht "Enthaltene Dateien" verfügt über eine neue Spalte für das Projekt. Die Spalte "Projekt" ist ausgewählt, und Projekte wie (Select All), CompilerIdC, OpenAL, common usw. werden ausgewählt. Die enthaltenen Dateien werden nach relativem Pfad und Dateinamen aufgelistet und gruppiert.

  • CMake-Debugging

    • Sie können nun Ihre CMake-Skripts und CMakeLists.txt Dateien im Visual Studio-Debugger für CMake-Projekte debuggen, die linux über Windows-Subsystem für Linux (WSL) oder SSH als Ziel verwenden. Um eine CMake-Debugsitzung in Visual Studio zu starten, legen Sie einen Haltepunkt in Ihrer CMakeLists.txt Datei fest, und navigieren Sie dann zum Project>Configure Cache with CMake Debugging.
  • GitHub Copilot

    • Wenn Sie im Code-Editor auf Symbole zeigen, klicken Sie im Dialogfeld "Schnellinfo" auf die Schaltfläche "Weitere Informationen", um mehr über ein bestimmtes Symbol zu erfahren:

    Screenshot des QuickInfo-Fensters.

    Das QuickInfo-Fenster wird oberhalb einer Funktion angezeigt. Der Link "Weitere Informationen" ist hervorgehoben.

    • GitHub Copilot kann Benennungsvorschläge für Ihre Bezeichner (Variablen, Methoden oder Klassen) basierend auf der Verwendung Ihres Bezeichners und dem Stil Ihres Codes generieren.

      Screenshot des Dialogfelds

      Das Dialogfeld "Umbenennen" enthält ein Feld "Neuer Name" mit einer Dropdownliste, in der die folgenden Optionen angezeigt werden: text_color, font_color, display_color, console_color und menu_text_color.

    Sie benötigen ein aktives GitHub Copilot-Abonnement. Klicken Sie mit der rechten Maustaste auf die Variable, die Sie umbenennen möchten, und wählen Sie "Umbenennen" (Ctrl+R, Ctrl+R). Wählen Sie das GitHub Copilot Sparkle-Symbol aus, um Benennungsvorschläge zu generieren.

  • Debuggen

    • Bedingte Haltepunkte in C++ sind schneller.
  • Diagnoseverbesserungen

    • Verbesserte Diagnose beim Aufrufen std::get<T> einer Instanz std::tuple mit T mehreren Instanzen in ihren Vorlagenargumenten. MSVC, das zum Melden verwendet wird:
      error C2338: static_assert failed: 'duplicate type T in get<T>(tuple)'.
      Jetzt meldet es:
      error C2338: static_assert failed: 'get<T>(tuple<Types...>&) requires T to occur exactly once in Types.(N4971 [tuple.elemm]/5)'
    • Verbesserte Diagnose, wenn std::ranges::to das angeforderte Ergebnis nicht erstellt werden kann. MSVC, das zum Melden verwendet wird:
      error C2338: static_assert failed: 'the program is ill-formed per N4950 [range.utility.conv.to]/2.3'
      Jetzt meldet es:
      error C2338: static_assert failed: 'ranges::to requires the result to be constructible from the source range, either by using a suitable constructor, or by inserting each element of the range into the default-constructed object. (N4981 [range.utility.conv.to]/2.1.5)'

Neuerungen bei C++ in Visual Studio, Version 17.10

Veröffentlicht im Mai 2024

Weitere Informationen zu Siehe
Neuerungen für C++-Entwicklerinnen und -Entwickler Neuerungen für C++-Entwickler in Visual Studio 2022 17.10
Standardbibliothek (STL): Zusammenführung von C++26- und C++23-Funktionen, C++20-Fehlerberichten, LWG-Problemlösungen, Leistungsverbesserungen, verbessertem Verhalten und behobenen Fehlern STL-Änderungsprotokoll 17.10
Neue Features in der Visual Studio 17.10-IDE Visual Studio 2022, Version 17.10: Versionshinweise
Verbesserungen der C++-Sprachkonformität in Visual Studio 2022 17.10 Verbesserungen der C++-Konformität, Verhaltensänderungen und Fehlerbehebungen in Visual Studio 2022 17.10

Eine partielle Liste der neuen Features:

  • MSVC Toolset Update: Die MSVC Toolset-Version wird von 19.39 auf 19.40 aktualisiert. Dies kann Auswirkungen auf Projekte mit Versionsannahmen haben. Weitere Informationen zu einigen Möglichkeiten, wie sich dies auf Projekte auswirkt, bei denen davon ausgegangen wird, dass MSVC-Versionen alle 19.3X für Visual Studio 2022-Versionen sind, finden Sie unter MSVC Toolset Minor Version 14.40 in VS 2022 v17.10.
  • Standardbibliothekserweiterungen: Die Standardbibliothek hat Unterstützung für P2510R3 Formatierungspunkte hinzugefügt, die den Satz von Formatbezeichnern für Zeiger bietet, wenn std::format mehr in Übereinstimmung mit denen verwendet wird, die bereits für ganze Zahlen vorhanden sind. Die vektorisierten Implementierungen von std::min_element, std::ranges::min, und Freunden wurden verbessert.
  • Build Insights: Bietet jetzt Informationen zur Instanziierung von Vorlagen. Weitere Informationen finden Sie in der Ansicht Vorlagen für Build Insights in Visual Studio oder in der Aufzeichnung Pure Virtual C++-Vorlagen für Build Insights in der Visual Studio.
  • Unreal Engine Plugin: Es gibt eine neue Opt-In-Funktion für das Unreal Engine Plug-In, das im Hintergrund ausgeführt werden soll, wodurch die Startkosten reduziert werden. Dies ist ein Opt-In-Feature, das über Tools>Optionen>Unreal Engine aktiviert wird.
  • Neue Features für Linux: Siehe neue Linux-Entwicklungsfeatures in Visual Studio.
  • CMake-Ziele: Sie können jetzt Ziele in der CMake-Zielansicht anheften.
  • Verbindungs-Manager-UX: Die Benutzeroberfläche bietet eine nahtlosere Benutzererfahrung beim Herstellen einer Verbindung mit Remotesystemen. Weitere Informationen finden Sie unter Verbesserungen der Benutzerfreundlichkeit im Visual Studio-Verbindungs-Manager.
  • Pull Request-Kommentare: Sie können jetzt GitHub- und Azure DevOps-Kommentare direkt in Ihrer Arbeitsdatei anzeigen. Aktivieren Sie das Featureflag, Pull Request-Kommentare unter Optionen>Umgebung>Vorschaufeatures und checken Sie den Pull Request-Branch aus, um zu beginnen.
  • KI-generierter Inhalt: GitHub Copilot kann jetzt Pull Request-Beschreibungen entwerfen. Erfordert ein aktives GitHub Copilot-Abonnement. Probieren Sie die Funktion aus, indem Sie das funkelnde Stiftsymbol KI-generierte Pull Request-Beschreibung hinzufügen im Fenster Pull Request erstellen auswählen.
  • Bildvorschau: Zeigen Sie mit der Maus auf einen Bildpfad, um eine Vorschau mit Größendetails anzuzeigen. Die Größe ist auf 500 px breit und hoch begrenzt.

    Screenshot der Hovervorschau.

    Die Maus bewegt sich über die Zeile std::filesystem::path vs_logo_path = "../images/vs_logo.png". Darunter wird eine Vorschau des Visual Studio-Logos und die Informationen angezeigt, die 251 x 500 Pixel und 13,65 KB groß sind.

  • Breakpoint/Tracepoint-Erstellung: Sie können jetzt bedingte Breakpoints oder Tracepoints direkt aus Ausdrücken im Quellcode über das Rechtsklickmenü erstellen. Dies funktioniert für Eigenschafts- oder Feldnamen und -werte von autos, locals, watch windows oder DataTips.
  • Dialogfeld „An Prozess anheften“: Die vom Dialogfeld „An Prozess anheften“ bereitgestellte Funktionalität ist benutzerfreundlicher. Sie können jetzt ganz einfach zwischen Struktur- und Listenansichten wechseln, Prozesse besser mit reduzierbaren Abschnitten organisieren und Codetypen mit einem vereinfachten Kombinationsfeld auswählen. Außerdem ist das Feature „Fenster auswählen/nachverfolgen“ jetzt einfacher zu verwenden, indem die bidirektionale Nachverfolgung, das Auswählen eines Prozesses das Fenster hervorhebt und das Klicken auf ein Fenster den Prozess auswählt.
  • GitHub Copilot Integration: GitHub Copilot und Copilot Chat-Erweiterungen sind jetzt vereinheitlicht und werden jetzt direkt in Visual Studio ausgeliefert. Um sie zu installieren, installieren Sie die GitHub Copilot-Komponente im Visual Studio-Installer:

    Screenshot der Visual Studio-Installer GitHub Copilot-Installationsoption.

    Die GitHub Copilot-Schnittstelle befindet sich in der oberen rechten Ecke von Visual Studio. Um sie zu verwenden, benötigen Sie ein aktives GitHub Copilot-Abonnement.

    Screenshot der Schaltfläche „GitHub Copilot“.

    Die GitHub Copilot-Schaltfläche wird in der oberen rechten Ecke von Visual Studio angezeigt. Sie verfügt über Optionen zum Öffnen eines Chatfensters, den GitHub Copilot-Einstellungen, weitere Informationen und zum Verwalten des Copilot-Abonnements.

Neuerungen bei C++ in Visual Studio, Version 17.9

Veröffentlicht im Februar 2024

Weitere Informationen zu Siehe
Neuerungen für C++-Entwicklerinnen und -Entwickler Neuerungen für C++-Entwickler in Visual Studio 2022 17.9
Standardbibliothek (STL): Zusammenführung von C++23-Funktionen, Leistungsverbesserungen, verbessertem Verhalten, LWG-Problemlösungen und behobenen Fehlern STL-Änderungsprotokoll 17.9
Neue Features in der Visual Studio 17.9-IDE Visual Studio 2022, Version 17.9: Versionshinweise
Verbesserungen der C++-Sprachkonformität in Visual Studio 2022 17.9 Verbesserungen der C++-Konformität, Verhaltensänderungen und Fehlerbehebungen in Visual Studio 2022
Zusammenfassung von C++-Back-End-Updates MSVC-Back-End-Updates seit Visual Studio 2022, Version 17.3

Eine partielle Liste der neuen Features:

  • #include-Diagnose, die eine detaillierte Analyse Ihrer #include-Direktiven bereitstellt. Aktivieren Sie dieses Feature, indem Sie mit der rechten Maustaste auf eine #include-Richtlinie klicken und #include-Direktiven>Aktivieren von #include-Direktivendiagnose auswählen. Über jedem #include befindet sich die Häufigkeit, mit der Ihr Code auf diese #include-Datei verweist. Wählen Sie den Verweislink aus, um zu der Stelle zu navigieren, an der Ihr Code etwas aus dieser Headerdatei verwendet. Um die Buildzeit Ihrer #include-Direktiven anzuzeigen, führen Sie Build Insights aus, indem Sie zu Build>Build Insights für Solution>Build navigieren.

    Screenshot der #include-Diagnose.

    Oberhalb des #include ist ein **reference**-Link und viele der Verweise auf diese #include-Datei (in diesem Fall 1). Die Buildzeit wird ebenfalls aufgeführt (in diesem Fall weniger als 1/2 Sekunde).

  • Visualisierung des Speicherlayouts, die zeigt, wie der Speicher für Ihre Klassen, Strukturen und Unions angeordnet ist. Bewegen Sie den Mauszeiger über einen Typ und wählen Sie den Link Speicherlayout in der QuickInfo, um ein spezielles Fenster zu öffnen, das das Speicherlayout des ausgewählten Typs anzeigt. Wenn Sie auf einzelne Datentypen in diesem Fenster zeigen, erhalten Sie detaillierte Informationen über ihre Größe und den Offset innerhalb des Typs.

    Screenshot des Speicherlayoutfensters

    Das Speicherlayoutfenster zeigt den Inhalt der Snake-Klasse an. Es zeigt die Speicherversätze der verschiedenen Felder der Klasse, z. B. Point-Klassen für die Position des Kopfes und des Körpers, den Punktestand usw.

  • Sie können jetzt ihre eigene benutzerdefinierte ausführbare CMake-Datei angeben. Dieses Feature ist nützlich, wenn Sie eine bestimmte Version von CMake verwenden möchten, die nicht mit Visual Studio bereitgestellt wird. Navigieren Sie zu Tools>Optionen, und wählen Sie CMake>Allgemein aus. Wählen Sie Benutzerdefinierte ausführbare CMake-Datei aktivieren aus, und geben Sie den Verzeichnispfad Ihrer ausführbaren CMake-Datei an.

    Screenshot des Dialogfelds „CMake-Optionen“.

    Das Dialogfeld „CMake-Optionen“ in dem die Option „Benutzerdefiniertes ausführbares CMake-Verzeichnis aktivieren“ und das Feld „Ausführbares CMake-Verzeichnis“ hervorgehoben sind.

  • Verbessertes IntelliSense für Unreal Engine-Projekte
  • Verbesserte C++23-Unterstützung: std::format und std::spanformattable, range_format, format_kind, und set_debug_format() als Teil der P2286R8-Formatierungsbereiche<mdspan> per P0009R18 und nachfolgenden Wortänderungen, die auf den C++23-Standard angewendet wurden. Außerdem kann format() Zeiger per P2510R3 formatieren.

Neuerungen bei C++ in Visual Studio, Version 17.8

Veröffentlicht im November 2023

Weitere Informationen zu Siehe
Neuerungen für C++-Entwicklerinnen und -Entwickler Neuerungen für C++-Entwickler in Visual Studio 2022 17.8
Standardbibliothek (STL): Zusammenführung von C++26-, C++23-Funktionen, C++20-Erweiterungen, LWG-Problemlösungen, Leistungsverbesserungen, verbessertem Verhalten und behobenen Fehlern STL-Änderungsprotokoll 17.8
Neue Features in der Visual Studio 17.8-IDE Visual Studio 2022, Version 17.8: Versionshinweise
Verbesserungen der C++-Sprachkonformität in Visual Studio 2022 17.8 Verbesserungen der C++-Konformität, Verhaltensänderungen und Fehlerbehebungen in Visual Studio 2022
Eine Übersicht über C++-Verbesserungen in Visual Studio, VS Code und vcpkg während 2023 Ein Jahr mit C++-Verbesserungen

Eine partielle Liste der neuen Features:

  • C++ strukturierte Diagnose im Ausgabefenster und ein neues Fenster mit Problemdetails, das weitere Informationen zum Fehler bereitstellt. Weitere Informationen finden Sie unter Strukturierte SARIF-Ausgabe und Fenster „Problemdetails“.
  • Ein Feature, mit dem Sie die Größe und Ausrichtung Ihrer Klassen, Strukturen, Vereinigungen, Basistypen oder Enumerationen sogar vor der Kompilierung des Codes visualisieren können. Wenn Sie mit der Maus auf den Bezeichner zeigen, wird ein QuickInfo mit Informationen zur Größe und Ausrichtung angezeigt.
  • Ein Feature, das vorschlägt, wann Memberfunktionen const markiert werden sollen, weil sie den Status des Objekts nicht ändern. Zeigen Sie auf eine Memberfunktion, und klicken Sie auf das Glühbirnensymbol, um die Funktion als const zu markieren.
  • Visual Studio fordert Sie jetzt auf, globale Funktionen über ein Schraubenziehersymbol, das neben dem Funktionsnamen angezeigt wird, als statisch zu markieren. Klicken Sie auf das Schraubenziehersymbol, um die Funktion als statisch zu markieren.
  • Nicht verwendete #include-Anweisungen werden im Editor abgeblendet. Sie können mit dem Mauszeiger auf eine abgeblendete include-Anweisung zeigen und das Glühbirnenmenü verwenden, um die betreffende include-Anweisung oder alle nicht verwendeten include-Anweisungen zu entfernen. Sie können auch #include-Anweisungen für Entitäten hinzufügen, die indirekt über andere Header eingebunden werden. Weitere Informationen finden Sie unter Bereinigen von include-Anweisungen in C/C++ in Visual Studio.
  • Weitere Unreal Engine-Unterstützung:
    • Mit dem Unreal Engine Test Adapter können Sie Ihre Unreal Engine-Tests ermitteln, ausführen, verwalten und debuggen, ohne die IDE von Visual Studio verlassen zu müssen.
    • In den Unreal Engine-Codeschnipseln finden Sie allgemeine Unreal Engine-Konstrukte als Codeschnipsel in Ihrer Memberliste.
    • Build Insights ist jetzt in Visual Studio 2022 integriert und funktioniert mit MSBuild- und CMake-Projekten, die MSVC verwenden. Sie können nun zusätzliche Informationen zur Kompilierung einer Funktion anzeigen, z. B. wie lange das Kompilieren dauerte und die Anzahl der ForceInlines und die Auswirkungen von Headerdateien auf die Buildzeit. Weitere Informationen finden Sie im Tutorial: Problembehandlung von Funktions-Inlining auf die Buildzeit und im Tutorial: Problembehandlung der Auswirkungen von Header-Dateien auf die Buildzeit.
  • Mit der Remote-Linux-Komponententestunterstützung können Sie jetzt Ihre CTest- und GTest-Tests genau wie Ihre lokalen Tests auf Ihren Remote-Linux-Computern aus dem Test-Explorer von Visual Studio ausführen.

Neuerungen bei C++ in Visual Studio, Version 17.7

Veröffentlicht im August 2023

Weitere Informationen zu Siehe
Neuerungen für C++-Entwicklerinnen und -Entwickler Neuerungen für C++-Entwickler in Visual Studio 2022 17.7
Neue C++-Features speziell für die Spieleentwicklung Entfesseln der Leistungsfähigkeit von Visual Studio 2022 für die C++-Spieleentwicklung
Standardbibliothek (STL): Zusammenführung von C++23-Funktionen, LWG-Problemlösungen, Leistungsverbesserungen, verbessertem Verhalten und behobenen Fehlern STL-Änderungsprotokoll 17.7
Neue Features in der Visual Studio 17.7-IDE Visual Studio 2022, Version 17.7: Versionshinweise
Verbesserungen der C++-Sprachkonformität in Visual Studio 2022 17.7 Verbesserungen der C++-Konformität, Verhaltensänderungen und Fehlerbehebungen in Visual Studio 2022

Eine partielle Liste der neuen Features:

  • Schnellere Debugsitzungen und schnellere Projektladezeiten
  • Schritt-für-Schritt-Visualisierung der Makroerweiterung
  • Ein-Klick-Download für Windows-Subsystem für Linux (WSL)
  • Verbesserter Support für Doxygen-Kommentare
  • C++ Build Insights für die Spieleentwicklung
  • Für den C-Compiler wurde /std:clatest hinzugefügt.
  • Unreal Engine-Projektverbesserungen wie schnelleres IntelliSense und Syntaxeinfärbung, die Möglichkeit, alle Unreal Engine Blueprint-Referenzen zu finden, und mehr.

Neuerungen bei C++ in Visual Studio, Version 17.6

Veröffentlicht im Mai 2023

Weitere Informationen zu Siehe
Neuerungen für C++-Entwicklerinnen und -Entwickler Neuerungen für C++Entwicklerinnen und -Entwickler in Visual Studio 2022 17.6
Standardbibliothek (STL): Zusammenführung von C++23-Funktionen, LWG-Problemlösungen, Leistungsverbesserungen, verbessertem Verhalten und behobenen Fehlern STL-Änderungsprotokoll 17.6
Neue Features in der Visual Studio 17.6-IDE Versionshinweise zu Visual Studio 2022, Version 17.6
Verbesserungen der C++-Sprachkonformität in Visual Studio 2022 17.6 Verbesserungen der C++-Konformität, Verhaltensänderungen und Fehlerbehebungen in Visual Studio 2022

Eine Partielle Liste der neuen Features:

  • CMake-Skriptdebugging
  • Integrierte Unterstützung für High Level Shading Language (HLSL)
  • Unreal Engine-Protokollanzeige
  • VCPKG wird jetzt standardmäßig hinzugefügt.
  • Anfängliche Unterstützung für C++20 in C++/CLI-Projekten und einigen C++23-Standardbibliotheksfeatures für Bereiche.

Neuerungen bei C++ in Visual Studio, Version 17.5

Veröffentlicht im Februar 2023

Weitere Informationen zu Siehe
Neuerungen für C++-Entwicklerinnen und -Entwickler Neuerungen für C++Entwicklerinnen und -Entwickler in Visual Studio 2022 17.5
Standardbibliothek (STL): Zusammenführung von C++23-Funktionen, LWG-Problemlösungen, Leistungsverbesserungen, verbessertem Verhalten und behobenen Fehlern STL-Änderungsprotokoll 17.5
Neue Features in der Visual Studio 17.5-IDE Versionshinweise zu Visual Studio 2022, Version 17.5

Eine Partielle Liste der neuen Features:

  • std::move, std::forward, std::move_if_noexcept und std::forward_like erzeugen jetzt keine Funktionsaufrufe im generierten Code, auch nicht im Debugmodus. Diese Änderung vermeidet benannte Umwandlungen, was unnötigen Aufwand in Debugbuilds verursacht. /permissive- (oder eine Option, die dies impliziert, z. B. /std:c++20 oder std:c++latest) ist erforderlich.

  • [[msvc::intrinsic]] wurde hinzugefügt. Sie können dieses Attribut auf nicht rekursive Funktionen anwenden, die aus einer einzelnen Umwandlung bestehen, die nur einen Parameter akzeptiert.

  • Unterstützung für die Linux-Konsole im integrierten Terminal wurde hinzugefügt, die Terminal-E/A ermöglicht.

  • Anfängliche experimentelle Unterstützung für atomische C11-Grundtypen (<stdatomic.h>) wurde hinzugefügt. Sie können dieses experimentelle Feature mit der Option /experimental:c11atomics im Modus /std:c11 oder höher aktivieren.

  • Der Lebensdauerüberprüfung wurden neue experimentelle Überprüfungen mit hoher Konfidenz hinzugefügt, um Stördaten zu reduzieren.

  • Eine neue Previewfunktion, der Remotedatei-Explorer, ermöglicht es Ihnen, das Dateiverzeichnis auf Ihren Remotecomputern innerhalb von VS anzuzeigen und Dateien darin hoch- und herunterzuladen.

  • Die Versionsverwaltung der ausführbaren CMake-Dateien wurde mit Visual Studio an Kitware-Versionen angepasst.

  • Unterstützung für Hot Reload zur CMake-Projektvorlage wurde hinzugefügt.

  • „Gehe zu Definition“ für C++ verwendet jetzt einen subtileren Indikator für den Vorgang, der mehr Zeit in Anspruch nimmt und das modale Dialogfeld aus früheren Versionen ersetzt.

  • Der Rollout eines Experiments wurde begonnen, das weitere intelligente Ergebnisse in der C++-Autovervollständigung und der Memberliste bereitstellt. Diese Funktionalität wurde zuvor als „Predictive IntelliSense“ bezeichnet, verwendet aber jetzt eine neue Präsentationsmethode.

  • Wir versenden nun ein natives Arm64 Clang-Toolset mit unserer LLVM-Workload, sodass die native Kompilierung auf Arm64-Computern möglich ist.

  • Die Lokalisierung wurde zur Image Watch-Erweiterung hinzugefügt (Diese Erweiterung ist im Marketplace verfügbar und wird nicht über den Visual Studio-Installer gebündelt).

  • Es wurde Unterstützung für das Öffnen eines Terminalfensters im derzeit ausgeführten Entwicklercontainer hinzugefügt.

  • Es wurden mehrere Verbesserungen an der IntelliSense-Makroerweiterung vorgenommen. Insbesondere haben wir die rekursive Erweiterung in weiteren Kontexten aktiviert und dem Popupfenster Optionen hinzugefügt, um die Erweiterung in die Zwischenablage zu kopieren oder das Makro inline zu erweitern.

  • Die gleichzeitige Überwachung wird jetzt im seriellen Monitor unterstützt. Die gleichzeitige Überwachung ermöglicht es Ihnen, mehrere Ports gleichzeitig nebeneinander zu überwachen. Drücken Sie die Plustaste, um einen anderen seriellen Monitor zu öffnen und loszulegen.

  • Sie können jetzt Eigenschaften von Basisklassen anzeigen, die in einer Unreal Blueprint-Ressource geändert wurden, ohne Visual Studio zu verlassen. Doppelklicken Sie auf einen Blueprint-Verweis für eine C++-Klasse oder -Eigenschaft, um die UE-Ressourcenprüfung in Visual Studio zu öffnen.

  • Die Ausführung von DevContainers wurde auf einem Linux-Remotecomputer aktiviert.

  • Die Auswahl mehrerer Ziele zum Erstellen in der CMake-Zielansicht wurde aktiviert.

  • Die Unterstützung für CMakePresets.json, Version 5, wurde hinzugefügt. Informationen zu neuen Features finden Sie in der CMake-Dokumentation.

  • Der Test-Explorer wurde zum parallelen Erstellen und Testen mehrerer CMake-Ziele aktiviert.

  • Die Option „Container im Terminal öffnen“ wurde Dev Containers hinzugefügt.

  • Implementierte Standardbibliotheksfeatures:

    • P2508R1 basic_format_string, format_string, wformat_string
    • P2322R6 ranges::fold_left, ranges::fold_right, usw.
    • P2321R2views::zip (enthält nicht zip_transform, adjacent und adjacent_transform)

Neuerungen bei C++ in Visual Studio, Version 17.4

Veröffentlicht im November 2022

Weitere Informationen zu Siehe
Neuerungen für C++-Entwicklerinnen und -Entwickler Neuerungen für C++Entwicklerinnen und -Entwickler in Visual Studio 2022 17.4
Standardbibliothek (STL): Zusammenführung von C++23-Funktionen, LWG-Problemlösungen, Leistungsverbesserungen, verbessertem Verhalten und behobenen Fehlern STL-Änderungsprotokoll 17.4
Neue Features in der Visual Studio 17.4-IDE Versionshinweise zu Visual Studio 2022, Version 17.4
Verbesserungen der C++-Sprachkonformität in Visual Studio 2022 17.4 Verbesserungen der C++-Konformität, Verhaltensänderungen und Fehlerbehebungen in Visual Studio 2022

Eine partielle Liste der neuen Features in 17.4:

  • Compilerfehlermeldungen wurden verbessert, um genauere und hilfreichere Informationen bereitzustellen, insbesondere für Konzepte.

  • Die experimentelle MSVC-Option /experimental:log<directory> wurde hinzugefügt, um strukturierte SARIF-Diagnosen in das angegebene Verzeichnis auszugeben.

  • Unterstützung für C23-Attribute wurde zu IntelliSense hinzugefügt und es wurden weitere Fortschritte bei der Unterstützung von C++20-Modulen gemacht.

  • Die Indizierungsleistung beim Öffnen einer neuen Projektmappe wurde verbessert. Für große Projekte könnte eine Verbesserung von 20-35 % gegenüber 17.3 erreicht werden.

  • Verbesserte Optimierung von benannten Rückgabewerten (NRVO, Named Return Value Optimization):

    • NRVO ist für Fälle aktiviert, die Ausnahmebehandlungen oder Schleifen umfassen.
    • NRVO ist auch unter /Od aktiviert, wenn Benutzer die /Zc:nrvo-Option oder /std:c++20 oder höher oder /permissive- übergeben.
    • Sie können jetzt NRVO mit der Option /Zc:nrvo- deaktivieren.
  • Für die Version von LLVM, die mit Visual Studio ausgeliefert wird, wurde ein Upgrade auf 15.0.1 durchgeführt. In den Versionshinweisen zu LLVM und Clang finden Sie weitere Informationen zu den verfügbaren Optionen.

  • Für Visual Studio wurde Unterstützung für vcpkg-Artefakte mit CMake-Projekten hinzugefügt. Bei Projekten, die ein vcpkg-Manifest enthalten, wird die Umgebung beim Öffnen des Projekts automatisch aktiviert. Weitere Informationen zu diesem Feature finden Sie im Blogbeitrag zur Aktivierung der vcpkg-Umgebung in Visual Studio.

  • Sie können jetzt Dev-Container für Ihre C++-Projekte verwenden. Weitere Informationen zu diesem Feature finden Sie in unserem Blogbeitrag Dev-Container für C++.

  • IntelliSense beachtet jetzt die Reihenfolge der vorab einbezogenen Header, wenn einer davon ein PCH ist. Wenn früher ein PCH über /Yu verwendet und über /FI zwangsweise einbezogen wurde, hat IntelliSense diesen immer zuerst verarbeitet, bevor andere Header über /FI einbezogen wurden. Dieses Verhalten entspricht nicht dem Buildverhalten. Mit dieser Änderung werden /FI-Header in der Reihenfolge verarbeitet, in der sie angegeben werden.

  • Interne Präfixe wurden aus den CTest-Namen im Test Explorer entfernt.

  • Die mit Visual Studio ausgelieferte Version von CMake wurde auf Version 3.24.1 aktualisiert. Details zu den verfügbaren Features finden Sie in den Versionshinweisen zu CMake.

  • Android SDK-Update:

    • Ant-Skripts wurden entfernt, sodass Benutzer*innen keine Ant-basierten Vorlagen mehr im Dialogfeld „Neues Projekt“ sehen werden. Hilfe bei der Migration von Ant-Vorlagen zu Gradle-Vorlagen finden Sie unter Migrating Builds From Apache Ant (Migrieren von Builds aus Apache Ant).
    • Unterstützung für das Erstellen mit NDK 23 und 24 wurde hinzugefügt
    • NDK-Komponente wurde auf die LTS-Version 23 aktualisiert
  • Vektorisierte Implementierungen von ranges::min_element(), ranges::max_element() und ranges::minmax_element() wurden hinzugefügt

  • Wir verfolgen weiterhin die neuesten Entwicklungen hinsichtlich der C++-Standardisierung. Die Unterstützung für diese C++23-Features ist verfügbar, wenn Sie /std:c++latest in Ihren Compileroptionen einschließen:

    • P2302R4 ranges::contains, ranges::contains_subrange

    • P2499R0string_view-Bereichskonstruktor sollte explicit sein

    • P0849R8auto(x): „decay-copy“ in der Sprache

      (Der Compilerteil ist noch nicht implementiert; der Bibliotheksteil wurde im C++20-Modus implementiert, als die Unterstützung für Bereiche ursprünglich implementiert wurde.)

    • P0881R7 <stacktrace>

    • P2301R1pmr-Alias für std::stacktrace hinzufügen

    • P1328R1 constexpr type_info::operator==()

    • P2440R1 ranges::iota, ranges::shift_left, ranges::shift_right

    • P2441R2 views::join_with

  • Es wurde eine Option „Navigation nach Erstellung von Deklaration/Definition“ hinzugefügt, mit der Sie das Navigationsverhalten des Features „Deklaration/Definition erstellen“ auswählen können. Sie können zwischen dem Einsehen (Standardeinstellung) oder dem Öffnen des Dokuments bzw. keiner Navigation wählen.

  • Arm64-Builds von Visual Studio bündeln jetzt die Arm64-Versionen von CMake und Ninja.

  • Unterstützung für CMake Presets Version 4 wurde hinzugefügt. Details zu den verfügbaren Features finden Sie in den Versionshinweisen zu CMake.

  • Remotesystemverbindungen mit dem Verbindungs-Manager unterstützen jetzt SSH ProxyJump. ProxyJump wird verwendet, um über einen SSH-Host auf einen anderen SSH-Host zuzugreifen (z. B. auf einen Host hinter einer Firewall).

Neuerungen bei C++ in Visual Studio, Version 17.3

Veröffentlicht im August 2022

Weitere Informationen zu Siehe
Neuerungen für C++-Entwicklerinnen und -Entwickler C++-Verbesserungen in 17.3
Standardbibliothek (STL): Zusammenführung von C++23-Funktionen, LWG-Problemlösungen, Leistungsverbesserungen, verbessertem Verhalten und behobenen Fehlern STL-Änderungsprotokoll 17.3
Neue Features in der Visual Studio 17.3-IDE Versionshinweise zu Visual Studio 2022, Version 17.3
Verbesserungen der C++-Sprachkonformität in Visual Studio 2022 17.3 Verbesserungen der C++-Konformität, Verhaltensänderungen und Fehlerbehebungen in Visual Studio 2022 17.10

Eine partielle Liste der neuen Features in 17.3:

  • Die Arm64EC-Toolkette wird nicht mehr als experimentell gekennzeichnet und ist bereit für die Verwendung in der Produktionsumgebung.
  • Das Visual Studio-Terminal kann jetzt als SSH-Client mit Ihren gespeicherten SSH-Verbindungen verwendet werden. Öffnen Sie bei installierten „C++ für Linux“-Tools das Toolfenster „Terminal“. Die Dropdownliste „Terminal“ wird mit Ihren gespeicherten Verbindungen gefüllt. Wenn Sie eine Verbindung auswählen, wird ein neues Terminalfenster in Visual Studio geöffnet, in dem ein Pseudoterminal auf Ihrem Remotesystem angezeigt wird. Steuerzeichen, Farben und Cursorpositionsbewusstsein werden unterstützt.
  • Visual Studio kann jetzt Unreal Engine-Klassenvorlagen für Ihre UE-Projekte hinzufügen. Um dieses Feature zu testen, stellen Sie sicher, dass IDE-Unterstützung für Unreal Engine im Visual Studio-Installer in der Workload Spieleentwicklung mit C++ ausgewählt ist. Wenn Sie an einem UE-Projekt arbeiten, klicken Sie mit der rechten Maustaste im Projekt oder auf einen Ordner/Filter und wählen Hinzufügen>UE-Klasse aus.
  • Gehe zu Definition merkt sich jetzt die vorherige Signatur und navigiert entsprechend, wenn keine bessere Übereinstimmung verfügbar ist (z. B. nachdem Sie die Signatur eines der Paare manuell geändert haben). Die Reaktionsfähigkeit von Gehe zu allen wird verbessert. Zuvor wurden die Ergebnisse angezeigt, nachdem Sie die Eingabe beendet haben. In der neuen Umgebung werden die Ergebnisse während der Eingabe angezeigt.
  • In Kontexten, die eine Vervollständigung des enum-Typs erfordern (z. B. Zuweisungen an enum-Variablen, case-Bezeichnungen, Rückgabe des enum-Typs usw.), wird die Liste für die automatische Vervollständigung jetzt hinsichtlich der passenden Enumeratoren und zugehörigen Konstrukte gefiltert.
  • NuGet PackageReference-Unterstützung wurde für C++/CLI MSBuild-Projekte hinzugefügt, die auf .NET Core ausgerichtet sind. Diese Änderung wurde vorgenommen, um die Blockierung gemischter Codebasen hinsichtlich der Übernahme von .NET Core aufzuheben. Diese Unterstützung funktioniert nicht für andere C++-Projekttypen oder C++-Projekttypen, die auf .NET Framework ausgerichtet sind. Es gibt keine Pläne, PackageReference-Unterstützung auf andere C++-Szenarien auszudehnen. Das Team arbeitet an separaten Erfahrungen mit vcpkg für Nicht-MSBuild-Szenarien und um weitere Funktionen hinzuzufügen.
  • Es wurde das Fenster „Serieller Monitor“ für die eingebettete Entwicklung hinzugefügt, das über Debuggen>Windows>Serieller Monitor verfügbar ist.
  • Verbesserte C++-Indizierung um ~66 % im Vergleich zu 17.2.
  • Die mit Visual Studio ausgelieferte Version von CMake wurde auf Version 3.23 aktualisiert. Details zu den verfügbaren Funktionen finden Sie in den Versionshinweisen zu CMake 3.23.
  • Für die Versionen von LLVM-Tools, die mit Visual Studio ausgeliefert werden, wurde ein Upgrade auf v14 durchgeführt. In den Versionshinweisen zu LLVM und Clang finden Sie Einzelheiten zu den verfügbaren Optionen.
  • Das parallele Dev 16.11 C++-Toolset wurde auf Version 14.29.30145.00 aktualisiert. Die neueste Version des Dev 16.11 C++-Toolsets enthält wichtige Fehlerkorrekturen, einschließlich der Behebung aller verbleibenden C++20-Fehlerberichte. Weitere Informationen zu Fehlerkorrekturen, einschließlich C++20-Fehlerberichten in Dev 16.11, finden Sie in den Versionshinweisen zu Visual Studio 2019, Version 16.11.14.
  • Es wurden verschiedene Verbesserungen an der Benutzeroberfläche im Editor für C++-Module vorgenommen. Wir arbeiten kontinuierlich daran, die Qualität der Umgebung zu verbessern, aber ermutigen Sie, 17.3 zu testen. Melden Sie verbleibende Probleme über die Entwicklercommunity.

Neuerungen bei C++ in Visual Studio, Version 17.2

Veröffentlicht im Mai 2022

Weitere Informationen zu Siehe
Neuerungen für C++-Entwicklerinnen und -Entwickler Visual Studio 2022 17.2 jetzt verfügbar
Standardbibliothek (STL): Zusammenführung von C++20-Fehlerberichten, C++23-Funktionen, LWG-Problemlösungen, Leistungsverbesserungen, verbessertem Verhalten und behobenen Fehlern STL-Änderungsprotokoll 17.2
Neue Features in der Visual Studio 17.2-IDE Versionshinweise zu Visual Studio 2022, Version 17.2
Verbesserungen der C++-Sprachkonformität in Visual Studio 2022 17.2 Verbesserungen der C++-Konformität, Verhaltensänderungen und Fehlerbehebungen in Visual Studio 2022

Eine partielle Liste der neuen Features in 17.2:

  • Zusätzliche Compilerunterstützung für das C++23-Feature abgeleitet vonthis, verfügbar unter der /std:c++latest-Option.
  • Zusätzliche IntelliSense-Unterstützung für die C++23-Features abgeleitet this von und if consteval.
  • Zusätzlicher Inlineparametername und Unterstützung zu Eingabehinweisen. Lässt sich umschalten durch Drücken von Alt+F1 oder Doppeltippen von STRG. Dieses Verhalten kann unter Tools > Optionen > Text-Editoren > C/C++ > IntelliSense angepasst werden.
  • Experimentelle Unterstützung für C++20-Module in CMake-Projekten wurde hinzugefügt. Diese Unterstützung ist derzeit nur mit dem Visual Studio (MSBuild)-Generator verfügbar.
  • In 17.1 haben wir periphere Register-und RTOS-Ansichten für eingebettete Entwickler eingeführt. Wir verbessern weiterhin die Funktionen dieser Ansichten mit Ntzbarkeitsverbesserungen in 17.2:
    • Das RTOS-Toolfenster ist jetzt standardmäßig ausgeblendet. Es verhindert, dass ein Toolfenster mit Fehlermeldungen angezeigt wird, die nicht relevant sind, wenn Sie kein RTOS verwenden.
    • Wenn Benutzer*innen im Toolfenster auf ein RTOS-Objekt doppelklicken, wird ein Überwachungselement für das Objekt hinzugefügt.
    • Wenn Sie die Start- und Endwerte für den Stapelzeiger im RTOS-Toolfenster auswählen, wird er im Speicherfenster geöffnet.
    • Es wurde Threadbewusstsein für Geräteziele zum Anrufstapelfenster hinzugefügt.
    • Benutzer können jetzt neben Peripheriegeräten, Registern oder Feldern auf ein Stecknadelsymbol klicken, um sie oben in der Peripherieansicht anzuheften.
  • Es wurden Implementierungen der verbleibenden C++20-Fehlerberichte (auch als Backports bezeichnet) hinzugefügt. Alle C++20-Features sind jetzt unter der /std:c++20-Option verfügbar. Weitere Informationen zu den implementierten Backports finden Sie im C++20 Fehlerberichtprojekt im Microsoft/STL-GitHub-Repository und im MSVC STL Completes /std:c++20-Blogeintrag.
  • Es wurden verschiedene C++23 Library -Funktionen hinzugefügt, die unter der /std:c++latest-Option verfügbar sind. Weitere Informationen zu den neuen Features finden Sie im STL Repo-Änderungsprotokoll.
  • Verbesserte Leistung der anfänglichen C++-Indizierung um bis zu 20 %, je nach Tiefe des einschließenden Diagramms.

Neuerungen bei C++ in Visual Studio, Version 17.1

Veröffentlicht im Februar 2022

Weitere Informationen zu Siehe
Neuerungen für C++-Entwicklerinnen und -Entwickler Visual Studio 2022 17.1 ist jetzt verfügbar
Standardbibliothek (STL): Zusammenführung von C++23-Funktionen, LWG-Problemlösungen, Leistungsverbesserungen, verbessertem Verhalten und behobenen Fehlern STL-Änderungsprotokoll 17.1
Neue Features in der Visual Studio 17.1-IDE Versionshinweise zu Visual Studio 2022, Version 17.1
Verbesserungen der C++-Sprachkonformität in Visual Studio 2022 17.1 Verbesserungen der C++-Konformität, Verhaltensänderungen und Fehlerbehebungen in Visual Studio 2022

Eine partielle Liste der neuen Features in 17.1:

  • Eine neue Vorlage zum Konfigurieren der Voreinstellungen wird hinzugefügt, um CMake-Projekte auf einem macOS-Remotesystem mit CMakePresets.json zu konfigurieren und zu erstellen. Sie können CMake-Ziele auch auf einem macOS-Remotesystem starten und dann mit remote mithilfe des Visual Studio-Debuggers debuggen, der von GDB oder LLDB unterstützt wird.
  • Sie können jetzt Kernspeicherabbilder auf einem macOS-Remotesystem über Visual Studio mit LLDB oder GDB debuggen.
  • Die mit Visual Studio ausgelieferten Versionen von Clang und LLVM werden auf v13 upgegradet.
  • Die CMake-Integration von Visual Studio wird nur aktiviert, wenn im Stammverzeichnis des geöffneten Arbeitsbereichs eine CMakeLists.txt-Datei gefunden wird. Wenn eine CMakeLists.txt-Datei auf einer anderen Ebene des Arbeitsbereichs identifiziert wird, werden Sie durch eine Benachrichtigung aufgefordert, die CMake-Integration von Visual Studio zu aktivieren.
  • Neue Ansichten, mit denen Sie Peripherieregister auf Mikrocontrollern und RTOS-Objekten (Real Time Operating Systems) prüfen und mit ihnen interagieren können. Verfügbar über Debuggen>Windows>Eingebettete Register
  • Eine neue Threadansicht für RTOS-Projekte wurde hinzugefügt, die über Debuggen>Windows>RTOS-Objekte verfügbar ist. Weitere Informationen finden Sie unter Eingebettete Softwareentwicklung in Visual Studio.

Neuerungen bei C++ in Visual Studio Version 17.0

Veröffentlicht im November 2021

Weitere Informationen zu Siehe
Neue Features in der Visual Studio 17.0-IDE Versionshinweise zu Visual Studio 2022, Version 17.0
C++23- und C++26-Features, C++20-Fehlerberichte, LWG-Problemauflösungen, Leistungsverbesserungen, verbessertes Verhalten und behobene Fehler STL-Änderungsprotokoll 17.0
Verbesserungen der C++-Sprachkonformität in Visual Studio 2022 17.0 Verbesserungen der C++-Konformität, Verhaltensänderungen und Fehlerbehebungen in Visual Studio 2022 17.10

Eine Übersicht über wichtige neue Features in Visual Studio 2022, Version 17.0:

  • Die Visual Studio-IDE, devenv.exe , ist jetzt eine native 64-Bit-App.
  • Das MSVC-Toolset verwendet jetzt standardmäßig SHA-256-Quellhashing n Debugdatensätzen. Zuvor verwendete das Toolset standardmäßig MD5 für das Quellhashing.
  • Die v143-Buildtools sind jetzt über das Visual Studio-Installationsprogramm sowie über die eigenständigen Buildtools verfügbar.

Hot Reload für native C++-Programmiersprache

  • Mit Hot Reload für C++ können viele verschiedene Codebearbeitungen an laufenden Apps vorgenommen werden, ohne dass die Ausführung der App durch einen Breakpoint oder Ähnliches unterbrochen werden muss.

Wenn Sie ihre App in Visual Studio 2022 im Debugger starten, können Sie die Schaltfläche „Hot Reload“ verwenden, um Ihre Anwendung zu bearbeiten, während sie ausgeführt wird. Diese Funktion wird durch das native Feature „Bearbeiten und fortfahren“ unterstützt. Weitere Informationen zu unterstützten Bearbeitungen finden Sie unter Bearbeiten und fortfahren (C++).

  • Hot Reload unterstützt CMake-Projekte und Projekte, bei denen „Ordner öffnen“ verwendet wird.

WSL2-Unterstützung

  • Das Kompilieren und Debuggen kann jetzt nativ unter WSL2 erfolgen, ohne dass eine SSH-Verbindung hergestellt wird. Sowohl plattformübergreifende CMake-Projekte als auch MSBuild-basierte Linux-Projekte werden unterstützt.

Verbesserte CMake-Unterstützung

  • Für die in Visual Studio enthaltene Version von CMake wurde ein Upgrade auf Version 3.21 ausgeführt. Weitere Informationen zu dieser Version finden Sie in den Versionshinweisen zu CMake 3.21.

  • CMake-Übersichtsseiten wurden aktualisiert, sodass sie CMakePresets.json unterstützen.

  • Sie können ihre CMake-Projekte jetzt mit CMake 3.21 und CMakePresets.json V3 konfigurieren und erstellen.

  • Visual Studio unterstützt jetzt die Option buildPresets.targets in CMakePresets.json . Mit dieser Option können Sie eine Teilmenge von Zielen in Ihrem CMake-Projekt erstellen.

  • Das Menü „Projekt“ in CMake-Projekten wurde optimiert und enthält die Optionen „Cache löschen und neu konfigurieren“ und „Cache anzeigen“.

  • Die Compileroption /scanDependencies wurde implementiert, um wie in P1689R5 beschrieben die C++20-Modulabhängigkeiten für CMake-Projekte aufzulisten. Dies ist ein Schritt hin zur Unterstützung der Erstellung modulbasierter Projekte mit CMake, und es wird daran gearbeitet, diese Unterstützung in späteren Versionen zu vervollständigen.

Verbesserungen der Standardbibliothek

Ausgewählte Verbesserungen an der Standardbibliothek (STL) werden hier hervorgehoben. Eine vollständige Liste der neuen Funktionalitäten, Änderungen, Fehlerkorrekturen und Leistungsverbesserungen finden Sie im Änderungsprotokoll des STL-Teams.

  • Es wurden Debuggingschnellansichten hinzugefügt, um die Darstellung der folgenden Typen zu verbessern: source_location, bind_front(), u8string (einschließlich Iteratoren), default_sentinel_t, unreachable_sentinel_t, ranges::empty_view, ranges::single_view, ranges::iota_view (einschließlich Iterator/Sentinel), ranges::ref_view, thread, thread::id, jthread und filesystem::path.
  • [[nodiscard]] wurde zur Familie der stoi()-Funktionen in <string> und zu verschiedenen Funktionen in <locale> hinzugefügt, zum Beispiel collate-Memberfunktionen, has_facet() und den isalnum()- und tolower()-Funktionsfamilien.
  • P0980R1: In VS 2019 16.10 wurde std::string constexpr eingeführt. Wird jetzt für Clang unterstützt.
  • P1004R2: In VS 2019 16.10 wurde std::vector constexpr eingeführt. Wird jetzt für Clang unterstützt.

Erwähnenswerte Features für C++23

  • P1048R1: Das Merkmal is_scoped_enum wurde zur C++-Standardbibliothek hinzugefügt. Es erkennt, ob es sich bei einem Typ um eine Enumeration mit eigenem Gültigkeitsbereich handelt.
  • P1132R7: out_ptr(), inout_ptr()
  • P1679R3: contains() für basic_string und basic_string_view
  • P1682R3: to_underlying() für Enumerationen
  • P2162R2: Erben von std::variant möglich
  • P2166R1 Das Erstellen von basic_string und basic_string_view aus nullptr verbieten. Diese Änderung ist ein Breaking Change der Quelle. Code mit vorher nicht definiertem Verhalten wird zur Laufzeit jetzt mit Compilerfehlern abgelehnt.
  • P2186R2: Die Unterstützung für die Garbage Collection wurde entfernt. Durch diese Änderung werden declare_reachable, undeclare_reachable, declare_no_pointers, undeclare_no_pointers, und get_pointer_safety entfernt. Diese Funktionen waren zuvor ohne Wirkung.

Erwähnenswerte Leistungsverbesserungen

  • <format> erkennt jetzt, wenn für basic_string oder vector in back_insert_iterator geschrieben wird. Außerdem erfolgt der Aufruf von insert() bei der end()-Funktion des Containers schneller.
  • Die Leistung von std::find() und std::count() für vector<bool> wurde um das 19- bzw. 26-Fache verbessert.
  • Die Leistung von std::count() für vector<bool> wurde verbessert.
  • std::byte ist nun genauso leistungsfähig wie unsigned char in reverse() und variant::swap().

Clang- und LLVM-Unterstützung

  • Die mit Visual Studio ausgelieferten LLVM-Tools werden auf LLVM 12 aktualisiert. Weitere Informationen finden Sie in den Versionshinweisen zu LLVM.

  • Die Clang-cl-Unterstützung wurde auf LLVM 12 aktualisiert.

  • Sie können jetzt Prozesse, die auf einem Remotesystem von Visual Studio ausgeführt werden, mit LLDB debuggen.

C++ AMP veraltet

  • C++ AMP-Header gelten jetzt als veraltet. Das Einschließen von <amp.h> in ein C++-Projekt generiert Buildfehler. Definieren Sie _SILENCE_AMP_DEPRECATION_WARNINGS, um die Fehler auszublenden. Weitere Informationen finden Sie unter den Links zum Lebensende des AMP.

IntelliSense-Optimierungen

  • Es wurden Verbesserungen an C++-IntelliSense beim Bereitstellen von Navigations- und Syntaxhervorhebungen für Typen aus importierten Modulen und Headereinheiten durchgeführt. IntelliSense ist ein aktiver Investitionsbereich. Helfen Sie bei der Verbesserung: Teilen Sie Ihr Feedback zur Entwicklercommunity mithilfe von Hilfe>Feedback senden mit.
  • Verbesserte C++-IntelliSense-Leistung durch Optimieren der Verwendung von zwischengespeicherten Headern und des Zugriffs auf Symboldatenbanken und in der Folge verbesserte Ladezeiten beim Zugriff auf Ihren Code.
  • Der IntelliSense-Code-Linter für C++ ist jetzt standardmäßig aktiviert und unterbreitet sofort Vorschläge bei der Eingabe und Korrekturvorschläge für häufige Codefehler.
  • C++-IntelliSense für CMake-Projekte funktioniert jetzt, wenn eine Voreinstellung mit einem Anzeigenamen verwendet wird.

Updates an C++-Workloads

  • Aktualisierung auf NDK r21 LTS in der Workload Visual C++ Mobile-Entwicklung
  • Die Workload Spieleentwicklung mit C++ installiert jetzt die neueste Unreal Engine mit Unterstützung für Visual Studio 2022.

Verbesserungen bei der Codeanalyse

  • Die Codeanalyse erzwingt jetzt, dass Rückgabewerte von Funktionen, die mit _Check_return_ oder _Must_inspect_result_ kommentiert sind, überprüft werden müssen.
  • Die Erkennung von NULL-Zeigerdereferenzierungen wurde in den Codeanalysetools verbessert.
  • Unterstützung für gsl::not_null zur Codeanalyse hinzugefügt.
  • Unterstützung für Libfuzzer unter der Compileroption /fsanitize=fuzzer

Versionshinweise für ältere Versionen

Versionshinweise für ältere C++-Versionen sind ebenfalls verfügbar.

Bekannte Probleme

IntelliSense für C++

Informationen zu weiteren ungelösten Problemen und verfügbaren Problemumgehungen für C++ in Visual Studio 2022 finden Sie in der Problemliste der C++-Entwicklercommunity.

Feedback und Vorschläge

Wir freuen uns darauf, von Ihnen zu hören. Sie können ein Problem melden oder ein Feature vorschlagen, indem Sie das Symbol „Feedback senden“ in der oberen rechten Ecke des Installationsprogramms oder der Visual Studio-IDE nutzen oder Hilfe>Feedback senden verwenden. Sie können Ihre Probleme in der Entwicklercommunity für Visual Studio nachverfolgen, in der Sie Kommentare hinzufügen und Lösungen suchen können. Über unseren Livechatsupport erhalten Sie zudem kostenlose Hilfe bei der Installation.

Blogs

Nutzen Sie die Erkenntnisse und Empfehlungen, die Sie auf der Website Microsoft Developer Blogs finden, um über alle neuen Versionen auf dem Laufenden zu bleiben. Die Blogs enthalten spezialisierte Beiträge zu einer Vielzahl von Features. Die Bereiche C++ Team Blog und Visual Studio Blog sind von besonderem Interesse.