Teilen ü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.14

Veröffentlicht mai 2025

Weitere Informationen zu Siehe
Neuerungen für C++-Entwicklerinnen und -Entwickler Neuerungen für C++-Entwickler in Visual Studio 2022 17.14
Zusammengeführte C++26- und C++23-Features der Standardbibliothek (StL), Problemauflösungen der Spracharbeitsgruppe (Language Working Group, LWG), Leistungsverbesserungen, verbessertes Verhalten und behobene Fehler STL Changelog 17.14
Neue Features in der IDE Versionshinweise zu Visual Studio 2022, Version 17.14
C++-Sprachaktualisierungen Updates der C++-Sprache in MSVC in Visual Studio 2022 17.14
Verbesserungen bei der C++-Sprachkonformität Verbesserungen der C++-Konformität, Verhaltensänderungen und Fehlerbehebungen in Visual Studio 2022 17.14

Eine schnelle Hervorhebung einiger der neuen Features:

  • Mit dem dynamischen Debuggen von C++ können Sie optimierten Code debuggen, ohne die Leistung zu beeinträchtigen. Weitere Informationen finden Sie unter "Dynamisches Debuggen in C++".

  • Implementierte C++23-Features (erfordert /std:c++latest oder /std:c++23preview):

  • Generieren Sie automatisch Dokumentationskommentare mit GitHub Copilot. Weitere Informationen finden Sie unter Einführung der automatischen Generierung von Dokumentationskommentaren in Visual Studio.

  • Verwenden Sie die Modellauswahl in Visual Studio, um Ihr KI-Modell für GitHub Copilot auszuwählen. Weitere Informationen finden Sie unter Ändern des KI-Modells für Copilot Chat. Dieser Screenshot zeigt die Modellauswahl unten im GitHub Copilot-Chatfenster:

    Screenshot des GitHub Copilot-Chatfensters mit hervorgehobener Dropdownliste

    Das Dropdownmenü für die Modellauswahl ist geöffnet. Dazu gehören: GPT-4o, o3-mini, Claude 3.7 Sonnet Thinking und andere.

  • Verbesserungen der Unreal Engine-Integration:

    • Der Visual Studio C++-Debugger unterstützt jetzt Unreal Engine Blueprints.
    • Befehle zum Erstellen von Dateien, Modulen und Plug-Ins stehen in Visual Studio nativ zur Verfügung.
  • Neues Compilerflag /forceInterlockedFunctions wählt dynamisch zwischen Armv8.0 Load- und Store-exklusiv-Anweisungen oder Armv8.1 Large System Extension (LSE)-Atomanweisungen, basierend auf den CPU-Fähigkeiten zur Laufzeit.

  • Unterstützung für IntelliSense-basierte Fertigstellungen und schnelle Informationen für CMake-Module in Visual Studio hinzugefügt. Sie können alle verfügbaren CMake-Module anzeigen und wenn Sie mit dem Mauszeiger auf ein referenziertes CMake-Modul zeigen, bietet IntelliSense weitere Informationen zum ausgewählten Modul:

    Screenshot von IntelliSense zur Erläuterung von C Make Print Helpers.

    Der Screenshot ist eine Bearbeitung in der Datei "C Make Lists" .txt. Der Cursor befindet sich in include ( CMakePrintHelpers ). IntelliSense sagt: Komfortfunktionen zum Drucken von Eigenschaften und Variablen, nützlich für das Debuggen.

    Wenn Sie mit der Eingabe eines CMake-Modulnamens in Ihren CMakeLists.txt oder anderen CMake-Skriptdateien beginnen, bietet IntelliSense eine Liste der verfügbaren Module, aus der Sie auswählen können:

    Screenshot von IntelliSense für eine include-Anweisung.

    Der Screenshot ist eine Bearbeitung in der Datei "C Make Lists" .txt. Der Cursor befindet sich bei "include" (C Make). Das IntelliSense-Dropdown enthält Einträge für C Make Add Fortran Subdirectory, C Make Dependent Option und mehr.

  • Guidelines Support Library (GSL) 4.2.0: Diese Version enthält Leistungsverbesserungen für gsl::span, neue Features und eine bessere Ausrichtung mit C++-Standards. Weitere Informationen finden Sie unter Ankündigung der Richtlinien-Supportbibliothek v4.2.0.

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

Veröffentlicht im Februar 2025

Weitere Informationen zu Siehe
Neuerungen für C++-Entwicklerinnen und -Entwickler Neuerungen für C++-Entwickler in Visual Studio 2022 17.13
Standardbibliothek (STL) C++26- und C++23-Features, Problemauflösungen der Spracharbeitsgruppe (Language Working Group, LWG), Leistungsverbesserungen, verbessertes Verhalten und behobene Fehler STL Changelog 17.13
Neue Features in der IDE Visual Studio 2022, Version 17.13, Versionshinweise
C++-Sprachaktualisierungen MSVC-Compiler-Updates in Visual Studio 2022 17.13
Verbesserungen bei der C++-Sprachkonformität C++-Konformitätsverbesserungen, Verhaltensänderungen und Fehlerbehebungen in Visual Studio 2022 17.13

Eine schnelle Hervorhebung einiger neuer Features:

  • C++-Sprachverbesserungen

    • Testen Sie C++23-Vorschaufeatures, indem Sie den C++-Sprachstandard auf /std:c++23previewfestlegen. Diese Einstellung aktiviert die neuesten C++23-Features und Fehlerkorrekturen. Weitere Informationen finden Sie unter /std (Angeben der Sprachstandardversion).

    • Unterstützung für das size_t-Literal-Suffix von C++23, das hilft, Verkürzungen oder Unstimmigkeiten bei vorzeichenbehafteten Vergleichen zu vermeiden - insbesondere beim Schreiben von Schleifen. Zum Beispiel:

      // Infinite loop if v.size > max unsigned int 
      for (auto i = 0u; i < v.size(); ++i)
      { 
        ...
      } 
      
      // Fixed because of uz literal 
      for (auto i = 0uz; i < v.size(); ++i)
      { 
        ...
      } 
      
    • Unterstützung für Vektorlängen für die Codegenerierung auf x86 und x64. Für mehr Informationen siehe /vlen.

    • Unterstützung für Intel Advanced Vector Extensions 10, Version 1. Weitere Informationen zu /arch:AVX10.1finden Sie unter /arch (x64).

  • Verbesserungen der Standardbibliothek

    • Unterstützung der Standard-Bibliothek für Coroutines. In diesem Beispiel aus P2502R2 ist die fib-Funktion eine Coroutine. Wenn die co_yield-Anweisung ausgeführt wird, wird fib angehalten, und der Wert wird an den Aufrufer zurückgegeben. Sie können die fib-Coroutine später fortsetzen, um weitere Werte zu erzeugen, ohne manuell den Zustand verwalten zu müssen.

      std::generator<int> fib()
      { 
        auto a = 0, b = 1; 
      
        while (true)
        { 
            co_yield std::exchange(a, std::exchange(b, a + b)); 
        }
      } 
      
      int answer_to_the_universe()
      { 
        auto rng = fib() | std::views::drop(6) | std::views::take(3); 
        return std::ranges::fold_left(std::move(range), 0, std::plus{}); 
      } 
      
  • system_clock, high_resolution_clockund chrono_literals von einem häufig genutzten internen Header nach <chrono>verschoben. Wenn Sie Compilerfehler sehen, die Typen wie system_clock oder benutzerdefinierte Literale wie 1729ms nicht erkannt werden, schließen Sie <chrono> ein.

  • Verbesserte die vektorisierten Implementierungen von bitset-Konstruktoren aus Zeichenfolgen, basic_string::find_last_of(), remove(), ranges::removeund den minmax_element() und minmax() Algorithmusfamilien.

  • Vektorisierte Implementierungen hinzugefügt von:

    • find_end() und ranges::find_end für 1-Byte- und 2-Byte-Elemente.
    • basic_string::find() und basic_string::rfind() für eine Unterzeichenfolge.
    • basic_string::rfind() für ein einzelnes Zeichen.
  • Zusammengeführte C++23-Fehlerberichte:

    • P3107R5 Erlaubt eine effiziente Implementierung von <print>.
    • P3235R3std::print Mehr Typen schneller mit weniger Arbeitsspeicher.
  • GitHub Copilot

    • GitHub Copilot Free ist jetzt verfügbar. Erhalten Sie 2.000 Codevervollständigungen und 50 Chatanfragen pro Monat kostenlos.

    • GitHub Copilot Codevervollständigungen bieten automatische Inline-Vervollständigungsvorschläge, während Sie programmieren. Um die Erfahrung von C++-Entwicklern zu verbessern, enthält GitHub Copilot andere relevante Dateien als Kontext. Dadurch werden Fehler reduziert, während relevantere und genauere Vorschläge angeboten werden.

    • Sie können jetzt eine Codeüberprüfung von GitHub Copilot aus dem Git Changes-Fenster anfordern:

      Screenshot des Fensters

      Das Fenster "Git-Änderungen" ist geöffnet, wobei die Schaltfläche "GitHub Copilot Überprüfen" hervorgehoben ist.

      GitHub Copilot sucht nach potenziellen Problemen und erstellt Kommentare für sie:

      Ein Screenshot des GitHub Copilot zur Erläuterung eines Problems.

      GitHub Copilot hat ein Problem mit der Zeile if ( is_enabled_) new_site.disable(). gefunden. Es heißt, dass dies ein Fehler sein könnte und wahrscheinlich if ( is_enabled_) new_site.enable() lauten sollte, denn die Intention scheint zu sein, die neue Seite zu aktivieren, wenn der Haltepunkt aktiviert ist.

      Um dieses Feature zu verwenden, stellen Sie sicher, dass Folgendes aktiviert ist:

      • Tools>Optionen>Preview-Features>Pull Request-Kommentare
      • Tools>Optionen>GitHub>Copilot>Integration der Quellcodeverwaltung>Git-Previewfunktionen aktivieren.
    • GitHub Copilot Edits ist ein neues Feature, das Änderungen an mehreren Dateien in Ihrem Projekt vornehmen kann. Um eine neue Bearbeitungssitzung zu starten, klicken Sie auf Neue Bearbeitungssitzung erstellen oben im GitHub Copilot Chat-Fenster:

      Screenshot des GitHub Copilot-Chatfensters. Die Schaltfläche

      Beschreiben Sie die Änderungen, die Sie vornehmen möchten, und Copilot schlägt relevante Änderungen vor. Sie können eine Vorschau der Bearbeitungen einzeln anzeigen und die gewünschten Änderungen akzeptieren oder Korrekturen vornehmen:

      Screenshot des GitHub Copilot-Chatfensters, in dem die bearbeiteten Dateien angezeigt werden.

      GitHub Copilot zeigt eine Zusammenfassung der vorgenommenen Änderungen an, z. B. 1. Erstellen Sie eine neue Unterklasse range_breakpoint in include/libsdb/breakpoint.hpp" und 2. Implementieren Sie die range_breakpoint Klasse in src/breakpoint.cpp. Es wird eine Option zum Akzeptieren der Änderungen angezeigt.

      Weitere Informationen finden Sie unter Iterieren Sie effizienter über mehrere Dateien mit GitHub Copilot Edits.

  • CMake

    • Unterstützt jetzt CMake Presets v9. Neue Makro-Erweiterungen im Include-Feld einer Voreinstellung. Weitere Informationen finden Sie unter Makroerweiterung in der offiziellen CMake-Dokumentation.

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
Zusammengeführte C++26- und C++23-Features der Standardbibliothek (StL), Problemauflösungen der Spracharbeitsgruppe (Language Working Group, LWG), 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. Hinzugefügt wurden Formatierer für die Container-Adapter stack, queue, und priority_queue.
    • Es wurden mehrdimensionale tiefgestellte Operatoren hinzugefügt, die auch <mdspan> unterstützen. 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. Das folgende Programm hat zum Beispiel einen Off-by-One-Fehler in seiner Schleifenbedingung:

    Ein 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 variable it klicken, wird ihnen mitgeteilt, warum es <NULL>ist:

    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 es über den Vektor animals_ im House-Objekt iterieren, um die Anzahl der Katzenobjekte zu zählen. Warum es null ist. Ausgehend von den Locals und dem Call-Stack-Kontext: das House-Objekt h hat einen leeren animals_-Vektor (size=0). Die Schleifenbedingung it <= h.animals_.end() ist falsch. Sie sollte it != h.animals_.end() lauten."

    • 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, bei dem 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 iteriert die Schleife über Referenzen auf die std::unique_ptr Objekte, was erlaubt ist."

  • Debuggen
    • Neue Debug-Visualisierer für mutex, recursive_mutex, und move_iterator.
    • Der Debugger zeigt jetzt Rückgabewerte inline an: Ein Screenshot einer QuickInfo mit dem Wert 8,25. Es ist das Ergebnis des Ausdrucks nach der übersprungenen Rückgabe-Anweisung.

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) zusammengeführt C++26- und C++23-Features, C++20-Fehlerberichte, Problembehebungen der Spracharbeitsgruppe (Language Working Group, LWG), Leistungsverbesserungen, verbessertes Verhalten und behobene Fehler. 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 jetzt std::range_formatter und Formatierer für std::pair und std::tuple.
    • Unterstützung für 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(), , ranges::replace_copyranges::replace_copy_iffind_first_of()und ranges::find_first_of, für 8-Bit- und 16-Bit-Elemente, mismatch(), , ranges::mismatch, , count()ranges::count, find()ranges::find, ranges::find_lastund 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 Fehlersuche

    • 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 den Mauszeiger über Symbole im Code-Editor bewegen, klicken Sie auf die Schaltfläche Copilot Erzählen Sie mir mehr im Dialog Schnellinfo, 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 von std::get<T> auf einem std::tuple, das mehrere Instanzen von T in seinen Vorlagenargumenten hat. MSVC berichtete früher:
      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 Diagnosen, wenn std::ranges::to das gewünschte Ergebnis nicht konstruieren kann. MSVC berichtete früher:
      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) zusammengeführt C++26- und C++23-Features, C++20-Fehlerberichte, Problembehebungen der Spracharbeitsgruppe (Language Working Group, LWG), Leistungsverbesserungen, verbessertes Verhalten und behobene Fehler. 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 Formatierungszeiger hinzugefügt, die den Satz von Formatbezeichnern für Zeiger, wenn std::format verwendet, mehr im Einklang mit denen stehen lässt, die bereits für Ganzzahlen existieren. 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 Feature-Flag Pull Request-Kommentare unter Optionen>Umgebung>Vorschaufeatures und checken Sie den Pull Request-Branch aus, um loszulegen.
  • 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". Unterhalb wird eine Vorschau des Visual Studio-Logos angezeigt, zusammen mit Angaben zu seiner Größe von 251 x 500 Pixeln und einem Dateivolumen von 13,65 KB.

  • 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 einen Prozess anfügen“: Die vom Dialogfeld „An einen Prozess anfügen“ 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, da es die bidirektionale Nachverfolgung ermöglicht: Wenn man einen Prozess auswählt, wird sein Fenster hervorgehoben, und durch Klicken auf ein Fenster wird dessen Prozess ausgewä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
Mit der Standardbibliothek (STL) zusammengeführte C++23-Features, Leistungsverbesserungen, verbessertes Verhalten, Problemauflösungen der Spracharbeitsgruppe (Language Working Group, LWG) und Behobene Fehler 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 liefert. 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 Build-Zeit Ihrer #include Direktiven zu sehen, führen Sie Build Insights aus, indem Sie zu Build>Build Insights on Solution>Build navigieren.

    Screenshot der #include-Diagnose.

    Oberhalb der # Include-Datei befindet sich ein **Referenz** Link und viele der Referenzen 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 CMake-Ausführungsdatei 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 nachfolgende Änderungen am Wortlaut, 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) zusammengeführt C++26, C++23-Features, C++20-Erweiterungen, Problemauflösungen der Spracharbeitsgruppe (Language Working Group, LWG), Leistungsverbesserungen, erweitertes Verhalten und behobene Fehler 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 Zustand 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.
    • Mit Codeschnipseln für Unreal Engine finden Sie allgemeine Unreal Engine-Konstrukte als Schnipsel in Ihrer Mitgliedsliste.
    • 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 auf Ihren Remote-Linux-Computern aus dem Test-Explorer von Visual Studio ausführen, genau wie Ihre lokalen Tests.

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 Neuigkeiten 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
Zusammengeführte C++23-Features der Standardbibliothek (STL), Problemauflösungen der Spracharbeitsgruppe (Language Working Group, LWG), Leistungsverbesserungen, verbessertes Verhalten und behobene Fehler 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 Neuigkeiten für C++-Entwickler in Visual Studio 2022 17.6
Zusammengeführte C++23-Features der Standardbibliothek (STL), Problemauflösungen der Spracharbeitsgruppe (Language Working Group, LWG), Leistungsverbesserungen, verbessertes Verhalten und behobene Fehler 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:

  • Debugging von CMake-Skripten
  • 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 einige Features der C++23-Standardbibliothek für Ranges.

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 Neuigkeiten für C++-Entwickler in Visual Studio 2022 17.5
Zusammengeführte C++23-Features der Standardbibliothek (STL), Problemauflösungen der Spracharbeitsgruppe (Language Working Group, LWG), Leistungsverbesserungen, verbessertes Verhalten und behobene Fehler 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 Versionsnummern der mit Visual Studio ausgelieferten ausführbaren CMake-Dateien wurden an die Kitware-Versionen angepasst.

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

  • „Go To Definition“ für C++ verwendet jetzt einen subtileren Indikator, der aufzeigt, dass der Vorgang mehr Zeit in Anspruch nimmt. Dieser ersetzt das modale Dialogfeld aus früheren Versionen.

  • Der Rollout eines Experiments, das mehr intelligente Ergebnisse in der C++-Autovervollständigung und Mitgliederliste bereitstellt, wurde gestartet. 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 Standardbibliotheksfunktionen:

    • basic_format_stringP2508R1, , format_stringwformat_string
    • P2322R6ranges::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 Neuigkeiten für C++-Entwickler in Visual Studio 2022 17.4
Zusammengeführte C++23-Features der Standardbibliothek (STL), Problemauflösungen der Spracharbeitsgruppe (Language Working Group, LWG), Leistungsverbesserungen, verbessertes Verhalten und behobene Fehler 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:

    • ranges::containsP2302R4,ranges::contains_subrange

    • P2499R0string_view Range Constructor 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 Ranges ursprünglich hinzugefügt wurde.)

    • P0881R7<stacktrace>

    • P2301R1 Einen pmr-Alias für std::stacktrace hinzufügen

    • P1328R1constexpr type_info::operator==()

    • ranges::iotaP2440R1, ranges::shift_left, ranges::shift_right

    • P2441R2views::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
Zusammengeführte C++23-Features der Standardbibliothek (STL), Problemauflösungen der Spracharbeitsgruppe (Language Working Group, LWG), Leistungsverbesserungen, verbessertes Verhalten und behobene Fehler 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

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.
  • Go to 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 Erfahrung zu verbessern, und ermutigen Sie, 17.3 auszuprobieren. 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) mit zusammengeführten C++20-Fehlerberichten, C++23-Features, LWG-Problemlösungen (Language Working Group), 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 Fähigkeiten dieser Ansichten durch Benutzerfreundlichkeitsverbesserungen 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 über die implementierten Backports finden Sie im VS 2022 Changelog im Microsoft/STL GitHub Repository und im Blogbeitrag MSVC's STL Completes /std:c++20.
  • 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
Zusammengeführte C++23-Features der Standardbibliothek (STL), Problemauflösungen der Spracharbeitsgruppe (Language Working Group, LWG), Leistungsverbesserungen, verbessertes Verhalten und behobene Fehler 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
Die Standardbibliothek (STL) vereinte C++23- und C++26-Features, C++20-Fehlerberichte, Problemauflösungen der Spracharbeitsgruppe (Language Working Group, LWG), 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 natives C++

  • 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- und Open-Folder-Projekte.

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 Debugging-Visualizer hinzugefügt, um die Darstellung der folgenden Typen zu verbessern: source_location, bind_front(), u8string (und deren Iteratoren), default_sentinel_t, unreachable_sentinel_t, ranges::empty_view, ranges::single_view, ranges::iota_view (und dessen 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 wurde in VS 2019 16.10 erstellt. Wird jetzt für Clang unterstützt.
  • P1004R2 Erledigt std::vectorconstexprin VS 2019 16.10. Wird jetzt für Clang unterstützt.

Hervorgehobene Features von 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 zulassen von std::variant
  • 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 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 es in ein back_insert_iterator für ein basic_string oder ein vector schreibt, und macht einen schnelleren Aufruf an insert() am end() des Containers.
  • 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 von 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.

Bloggen

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.