{"id":33169,"date":"2023-11-14T18:05:41","date_gmt":"2023-11-14T18:05:41","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/cppblog\/?p=33169"},"modified":"2023-11-14T18:05:41","modified_gmt":"2023-11-14T18:05:41","slug":"whats-new-for-cpp-developers-in-visual-studio-2022-17-8","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/cppblog\/whats-new-for-cpp-developers-in-visual-studio-2022-17-8\/","title":{"rendered":"What\u2019s New for C++ Developers in Visual Studio 2022 17.8"},"content":{"rendered":"<p>We are happy to announce that Visual Studio 2022 version 17.8 is now generally available! This post summarizes the new features you can find in this release for C++. You can download Visual Studio 2022 from the\u00a0<a href=\"https:\/\/visualstudio.microsoft.com\/downloads\/\">Visual Studio downloads page\u00a0<\/a>or upgrade your existing installation by following the\u00a0<a href=\"https:\/\/learn.microsoft.com\/en-us\/visualstudio\/install\/update-visual-studio?view=vs-2022\">Update Visual Studio Learn page<\/a>.<\/p>\n<h2>Standard Library<\/h2>\n<p>The Standard Library Modules standardized in C++23 are now available in C++20 mode. This is a cross-vendor extension, planned or supported also by <a href=\"https:\/\/gcc.gnu.org\/bugzilla\/show_bug.cgi?id=106852\">libstdc++<\/a> and <a href=\"https:\/\/libcxx.llvm.org\/UsingLibcxx.html#extensions-to-the-c-23-modules-std-and-std-compat\">libc++<\/a>.<\/p>\n<p>We have also implemented several new C++23 and C++26 features, including augmented support for Freestanding implementations and support for <code>std::stacktrace<\/code> in <code>std::format<\/code>. Read all the details in the <a href=\"https:\/\/github.com\/microsoft\/STL\/wiki\/Changelog\">STL Changelog<\/a>.<\/p>\n<h2>Core Editor<\/h2>\n<h2>Create a Pull Request<\/h2>\n<p>You can now create a Pull Request directly in Visual Studio. Enter the New Pull Request window by clicking the link in the notification banner in Git Changes after pushing, or from the top-level menu via Git &gt; GitHub\/Azure DevOps &gt; New Pull Request.<\/p>\n<p><img decoding=\"async\" width=\"1551\" height=\"542\" class=\"wp-image-33178\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-description-automatica-5.png\" alt=\"A screenshot of a computer Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-description-automatica-5.png 1551w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-description-automatica-5-300x105.png 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-description-automatica-5-1024x358.png 1024w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-description-automatica-5-768x268.png 768w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-description-automatica-5-1536x537.png 1536w\" sizes=\"(max-width: 1551px) 100vw, 1551px\" \/><\/p>\n<h2>Summary Diff<\/h2>\n<p>Leverage the new summary difference view to focus on the changes in your code.<\/p>\n<p><img decoding=\"async\" width=\"1160\" height=\"336\" class=\"wp-image-33180\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-description-automatica-6.png\" alt=\"A screenshot of a computer Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-description-automatica-6.png 1160w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-description-automatica-6-300x87.png 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-description-automatica-6-1024x297.png 1024w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-description-automatica-6-768x222.png 768w\" sizes=\"(max-width: 1160px) 100vw, 1160px\" \/><\/p>\n<p>Enabled in every comparison view, the new summary difference view allows you to toggle the context lines to do file comparison faster.<\/p>\n<h2>Productivity<\/h2>\n<h2>Structured Diagnostics<\/h2>\n<p>Massive compiler errors which seem impossible to navigate are the bane of many C++ developers\u2019 lives. It\u2019s up to tools to provide a better experience to help you comprehend diagnostics and understand how to fix the root issue.<\/p>\n<p>To aid this, you can now view structured diagnostics in the Output window and new Problem Details window. Error List entries which have additional information available will show an icon in the new Details column.<\/p>\n<p><img decoding=\"async\" width=\"559\" height=\"94\" class=\"wp-image-33183\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-screen-description-aut-1.png\" alt=\"A screenshot of a computer screen Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-screen-description-aut-1.png 559w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-screen-description-aut-1-300x50.png 300w\" sizes=\"(max-width: 559px) 100vw, 559px\" \/><\/p>\n<p>Clicking this will open these details in the Problem Details window, allowing you to navigate through the associated information of the error:<\/p>\n<p><img decoding=\"async\" width=\"460\" height=\"331\" class=\"wp-image-33184\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-description-automatica-8.png\" alt=\"A screenshot of a computer Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-description-automatica-8.png 460w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-description-automatica-8-300x216.png 300w\" sizes=\"(max-width: 460px) 100vw, 460px\" \/><\/p>\n<p>This nested structure is also reflected in the Output window:<\/p>\n<pre class=\"prettyprint language-default\"><code class=\"language-default\">1&gt;Source.cpp(18,6):  \r\n1&gt;or 'void pet(_T0)'  \r\n1&gt;Source.cpp(23,5):  \r\n1&gt;the associated constraints are not satisfied  \r\n1&gt;\tSource.cpp(18,10):  \r\n1&gt;\tthe concept 'pettable&lt;lizard&gt;' evaluated to false  \r\n1&gt;\t\tSource.cpp(16,20):  \r\n1&gt;\t\tthe concept 'has_member_pet&lt;lizard&gt;' evaluated to false  \r\n1&gt;\t\t\tSource.cpp(10,44):  \r\n1&gt;\t\t\t'pet': is not a member of 'lizard'  \r\n1&gt;\t\t\tSource.cpp(20,8):  \r\n1&gt;\t\t\tsee declaration of 'lizard'  \r\n1&gt;\t\tSource.cpp(16,41):  \r\n1&gt;\t\tthe concept 'has_default_pet&lt;lizard&gt;' evaluated to false  \r\n1&gt;\t\t\tSource.cpp(13,30):  \r\n1&gt;\t\t\t'is_pettable': is not a member of 'lizard'  \r\n1&gt;\t\t\tSource.cpp(20,8):  \r\n1&gt;\t\t\tsee declaration of 'lizard' \r\n<\/code><\/pre>\n<p>Find out more about this feature at <a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/structured-diagnostics-in-the-new-problem-details-window\/\" target=\"_blank\" rel=\"noopener\">Structured Diagnostics in the New Problem Details Window.<\/a><\/p>\n<h2>Size and Alignment of Classes, Structs, and Unions<\/h2>\n<p>Based on feedback from you, we have introduced a Size and Alignment feature. This feature enables you to visualize the size and alignment of your classes, structs, unions, base types, or enums even before the code is compiled. To check the size and alignment, hover over the identifier and a Quick Info tooltip will display the information.<\/p>\n<p><img decoding=\"async\" width=\"1090\" height=\"286\" class=\"wp-image-33186\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-description-automatica-9.png\" alt=\"A screenshot of a computer Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-description-automatica-9.png 1090w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-description-automatica-9-300x79.png 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-description-automatica-9-1024x269.png 1024w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-description-automatica-9-768x202.png 768w\" sizes=\"(max-width: 1090px) 100vw, 1090px\" \/><\/p>\n<h2>Make Member Function Const<\/h2>\n<p>We have introduced\u00a0a feature that suggests that you make member functions <code>const<\/code> when they don\u2019t modify the object\u2019s state. You can hover over a member function and click the light bulb icon to quickly access the suggestion and mark the function as const.<\/p>\n<p><img decoding=\"async\" width=\"756\" height=\"227\" class=\"wp-image-33188\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-program-description-au-2.png\" alt=\"A screenshot of a computer program Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-program-description-au-2.png 756w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-program-description-au-2-300x90.png 300w\" sizes=\"(max-width: 756px) 100vw, 756px\" \/><\/p>\n<p>This feature is enabled by default as a suggestion. You can configure its settings by navigating to Tools &gt; Options &gt; Text Editor &gt; C\/C++ &gt; Code Style &gt; Linter.<\/p>\n<p><img decoding=\"async\" width=\"940\" height=\"690\" class=\"wp-image-33190\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-description-automatica-11.png\" alt=\"A screenshot of a computer Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-description-automatica-11.png 940w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-description-automatica-11-300x220.png 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-description-automatica-11-768x564.png 768w\" sizes=\"(max-width: 940px) 100vw, 940px\" \/><\/p>\n<h2>Make Global Function Static<\/h2>\n<p>Visual Studio now prompts you to mark global functions as <code>static<\/code>. When you encounter a global function lacking a forward declaration, Visual Studio will provide a suggestion, symbolized by a screwdriver icon.<\/p>\n<p><img decoding=\"async\" width=\"962\" height=\"198\" class=\"wp-image-33192\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-computer-screen-with-text-and-numbers-descripti-1.gif\" alt=\"A computer screen with text and numbers Description automatically generated\" \/><\/p>\n<p>You can adjust the settings for this feature under Tools &gt; Options &gt; Text Editor &gt; C\/C++ &gt; IntelliSense. To learn more about this feature and Make Member Function Const, check out our <a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/make-member-function-const-and-global-function-static-in-visual-studio\/\" target=\"_blank\" rel=\"noopener\">Make Member Function const and Global Function Static in Visual Studio Blog.<\/a><\/p>\n<h2>Clean Up and Sort #include Directives<\/h2>\n<p>You can now sort and clean up your <code>#include<\/code> directives automatically.<\/p>\n<p>Unused <code>#include<\/code> directives will be dimmed in the editor. You can hover over a dimmed include and use the lightbulb menu to either remove that include or all unused includes.<\/p>\n<p><img decoding=\"async\" width=\"1266\" height=\"633\" class=\"wp-image-33194\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screen-shot-of-a-computer-screen-description-au-1.gif\" alt=\"A screen shot of a computer screen Description automatically generated\" \/><\/p>\n<p>There is now also the option to add<code> #include<\/code> directives for entities which are currently indirectly included via other headers. For example, if you use <code>std::string<\/code> in your code but don\u2019t <code>#include &lt;string&gt;<\/code>, the code will still work if some other header you include transitively includes the correct header. This makes the code fragile to changes in other headers. If <code>#include<\/code> cleanup detects indirect headers, a quick action (indicated by three dots in the default view) will appear. Hovering over it will inform you that content from that transitive include is being used. Then, you have the option to either add the direct include individually or add all transitively used includes.<\/p>\n<p><img decoding=\"async\" width=\"2060\" height=\"487\" class=\"wp-image-33195\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-computer-screen-with-text-and-images-descriptio-1.gif\" alt=\"A computer screen with text and images Description automatically generated\" \/><\/p>\n<p>Find out more about this feature at <a href=\"https:\/\/learn.microsoft.com\/cpp\/ide\/include-cleanup-overview\">Clean up C\/C++ #includes in Visual Studio<\/a>.<\/p>\n<p>To automatically sort <code>#includes<\/code>, right-click on any <code>#include<\/code> statement. Then, hovering over the <code>#include<\/code> directives option in the context menu will reveal &#8220;Sort #include directives.&#8221;<\/p>\n<p><img decoding=\"async\" width=\"597\" height=\"135\" class=\"wp-image-33197 alignnone\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-description-automatica-12.png\" alt=\"A screenshot of a computer Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-description-automatica-12.png 597w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-description-automatica-12-300x68.png 300w\" sizes=\"(max-width: 597px) 100vw, 597px\" \/><\/p>\n<p>You can also configure transitive include cleanups and include sorting through the Code Cleanup entry. First, open the Code Cleanup configuration menu through Analyze &gt; Code Cleanup &gt; Configure Code Cleanup, or by clicking the arrow next to the broom icon in the bottom status bar and selecting Configure Code Cleanup. Add the desired features to the Included fixers section, then click the broom icon to run them.<\/p>\n<p><img decoding=\"async\" width=\"1276\" height=\"756\" class=\"wp-image-33200\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-description-automatica-1.gif\" alt=\"A screenshot of a computer Description automatically generated\" \/><\/p>\n<p>You can configure include cleanup and sorting at Tools &gt; Options &gt; Text Editor &gt; C\/C++ &gt; Code Cleanup.<\/p>\n<p><img decoding=\"async\" width=\"746\" height=\"463\" class=\"wp-image-33202\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-program-description-au-5.png\" alt=\"A screenshot of a computer program Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-program-description-au-5.png 746w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-program-description-au-5-300x186.png 300w\" sizes=\"(max-width: 746px) 100vw, 746px\" \/><\/p>\n<h2>Game Development<\/h2>\n<h2>Unreal Engine Test Adapter<\/h2>\n<p><em>Special thanks to the folks at Rare who contributed tremendously to this feature.<\/em><\/p>\n<p>Streamline your testing process without leaving the IDE with <strong>Unreal Engine Test Adapter<\/strong>. You can now discover, run, manage, and debug your Unreal Engine tests. In Visual Studio 2022 version 17.8, your Unreal Engine tests will automatically show up when you open Visual Studio. To see your tests, you can open Test Explorer with View &gt; Test Explorer.<\/p>\n<p><img decoding=\"async\" width=\"1008\" height=\"567\" class=\"wp-image-33203\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-description-automatica-14.png\" alt=\"A screenshot of a computer Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-description-automatica-14.png 1008w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-description-automatica-14-300x169.png 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-description-automatica-14-768x432.png 768w\" sizes=\"(max-width: 1008px) 100vw, 1008px\" \/><\/p>\n<p>The latest version of our free <a href=\"https:\/\/learn.microsoft.com\/en-us\/visualstudio\/gamedev\/unreal\/get-started\/vs-tools-unreal-overview\" target=\"_blank\" rel=\"noopener\">Visual Studio Tools for Unreal Engine<\/a> is required to use Unreal Engine Test Adapter. In addition, ensure the \u201cUnreal Engine Test Adapter\u201d component in the \u201cGame development with C++\u201d workload is enabled in the Visual Studio Installer.<\/p>\n<h2>Unreal Engine Code Snippets<\/h2>\n<p>Write code more efficiently with <strong>Unreal Engine Code Snippets<\/strong>. In Visual Studio 2022 version 17.8, you can find common Unreal Engine constructs as snippets in your member list. To get started, type any Unreal Engine construct name, for example <code>uclass<\/code>. Press Tab or Enter to expand the snippet.<\/p>\n<p><img decoding=\"async\" width=\"1000\" height=\"563\" class=\"wp-image-33204\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-computer-screen-shot-of-a-program-code-descript-1.png\" alt=\"A computer screen shot of a program code Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-computer-screen-shot-of-a-program-code-descript-1.png 1000w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-computer-screen-shot-of-a-program-code-descript-1-300x169.png 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-computer-screen-shot-of-a-program-code-descript-1-768x432.png 768w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<p>We have also included exported versions of <code>UCLASS<\/code> (<code>uclass<\/code>, <code>uclassexported<\/code>), <code>UINTERFACE<\/code> (<code>uinterface<\/code>, <code>uinterfaceexported<\/code>), and <code>USTRUCT<\/code> (<code>ustruct<\/code>, <code>ustructexported<\/code>) for those working with exported APIs and plugins. In addition, we have included macros such as <code>SWidget<\/code> (<code>swidget<\/code>), <code>TActorRange<\/code> (<code>tactorrange<\/code>), <code>TObjectRange<\/code> (<code>tobjectrange<\/code>), and <code>WITH_EDITOR<\/code> (<code>witheditor<\/code>) based on your feedback.<\/p>\n<p>List of Supported Snippets<\/p>\n<ul>\n<li><code>uclass<\/code><\/li>\n<li><code>uclassexported<\/code><\/li>\n<li><code>uenum<\/code><\/li>\n<li><code>ufunction<\/code><\/li>\n<li><code>uinterface<\/code><\/li>\n<li><code>uinterfaceexported<\/code><\/li>\n<li><code>uproperty<\/code><\/li>\n<li><code>ustruct<\/code><\/li>\n<li><code>ustructexported<\/code><\/li>\n<li><code>uelog<\/code><\/li>\n<li><code>swidget<\/code><\/li>\n<li><code>tactorrange<\/code><\/li>\n<li><code>tobjectrange<\/code><\/li>\n<li><code>witheditor<\/code><\/li>\n<\/ul>\n<h2>Unreal Engine Macro Specifier Suggestions<\/h2>\n<p><em>This is currently an experimental feature and will be gradually made available to Unreal Engine developers in the coming weeks.<\/em><\/p>\n<p>One of the top feedback items we commonly receive is suggesting Unreal Engine macro specifiers. We are happy to share that macro specifiers will start appearing in your member list suggestions for reflection macros in Visual Studio 2022 version 17.8. This feature will help you quickly access all possible specifiers for respective macros without relying on memory or switching back and forth between Visual Studio and documentation.<\/p>\n<p><img decoding=\"async\" width=\"1367\" height=\"768\" class=\"wp-image-33205\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-program-description-au-6.png\" alt=\"A screenshot of a computer program Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-program-description-au-6.png 1367w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-program-description-au-6-300x169.png 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-program-description-au-6-1024x575.png 1024w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-program-description-au-6-768x431.png 768w\" sizes=\"(max-width: 1367px) 100vw, 1367px\" \/><\/p>\n<h2>Build Insights Functions View<\/h2>\n<p>Build Insights is now integrated with Visual Studio 2022 and works with MSBuild and CMake projects using MSVC. In Visual Studio 2022 version 17.8, you can now see additional information relating to function generation. The new <strong>Functions View<\/strong> will provide you with how long a function takes during compilation as well as the number of <code>ForceInlines<\/code> associated.<\/p>\n<p><img decoding=\"async\" width=\"947\" height=\"736\" class=\"wp-image-33206\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-program-description-automatical-1.png\" alt=\"A screenshot of a program Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-program-description-automatical-1.png 947w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-program-description-automatical-1-300x233.png 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-program-description-automatical-1-768x597.png 768w\" sizes=\"(max-width: 947px) 100vw, 947px\" \/><\/p>\n<p>Start your Build Insights .etl trace capture by going to the Build Menu.<\/p>\n<p><img decoding=\"async\" width=\"1099\" height=\"571\" class=\"wp-image-33207\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/word-image-33169-18-1.png\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/word-image-33169-18-1.png 1099w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/word-image-33169-18-1-300x156.png 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/word-image-33169-18-1-1024x532.png 1024w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/word-image-33169-18-1-768x399.png 768w\" sizes=\"(max-width: 1099px) 100vw, 1099px\" \/><\/p>\n<p>After compilation, Build Insights will create a diagnostic report that shows you function generation time as well as <code>ForceInlines<\/code>.<\/p>\n<h2>Cross Platform<\/h2>\n<h2>Remote Linux Unit Test Support<\/h2>\n<p>We have added support so that you can run CTest and GTest tests on your remote Linux machines from Visual Studio\u2019s Test Explorer, just like you would any local tests.<\/p>\n<h2>CMake Targets View Improvements<\/h2>\n<p>To make the CMake Targets View more usable, we have implemented a few new improvements to make it easier than ever to navigate your CMake targets. This includes improved navigation to the CMake Targets View, a new, more simplified CMake Targets View, and the ability to exclude specified CMake items from the Targets View.<\/p>\n<p>Now, you can right-click anywhere in your Solution Explorer and simply navigate to the CMake Targets View from the context menu.<\/p>\n<p><img decoding=\"async\" width=\"1008\" height=\"900\" class=\"wp-image-33208\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-description-automatica-15.png\" alt=\"A screenshot of a computer Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-description-automatica-15.png 1008w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-description-automatica-15-300x268.png 300w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-description-automatica-15-768x686.png 768w\" sizes=\"(max-width: 1008px) 100vw, 1008px\" \/><\/p>\n<p>The CMake Targets View has been further simplified so that users don\u2019t have to click through folders without buildable executables to get to their desired target.<\/p>\n<p><img decoding=\"async\" width=\"858\" height=\"991\" class=\"wp-image-33209\" src=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-program-description-au-7.png\" alt=\"A screenshot of a computer program Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-program-description-au-7.png 858w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-program-description-au-7-260x300.png 260w, https:\/\/devblogs.microsoft.com\/cppblog\/wp-content\/uploads\/sites\/9\/2023\/11\/a-screenshot-of-a-computer-program-description-au-7-768x887.png 768w\" sizes=\"(max-width: 858px) 100vw, 858px\" \/><\/p>\n<p>You can also now define in your <code>VSWorkspaceSettings.json<\/code> items to exclude from the CMake Targets View using the new<code> CMakeTargetsViewExcludedItems<\/code> field, which is an array of strings.<\/p>\n<p>To view more details, please see this blog post: <a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/enhancing-the-cmake-targets-view-in-visual-studio\/\" target=\"_blank\" rel=\"noopener\">Enhancing the CMake Targets View in Visual Studio<\/a>.<\/p>\n<h2>Send us your feedback<\/h2>\n<p>We are very much interested in your feedback to continue to improve this experience. The comments below are open. Feedback can also be shared through\u00a0<a href=\"https:\/\/developercommunity.visualstudio.com\/cpp\" target=\"_blank\" rel=\"noopener\">Visual Studio Developer Community<\/a>. You can also reach us on Twitter (<a href=\"https:\/\/twitter.com\/visualc\" target=\"_blank\" rel=\"noopener\">@VisualC<\/a>), or via email at\u00a0<a href=\"mailto:visualcpp@microsoft.com\">visualcpp@microsoft.com<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>We are happy to announce that Visual Studio 2022 version 17.8 is now generally available! This post summarizes the new features you can find in this release for C++. You can download Visual Studio 2022 from the\u00a0Visual Studio downloads page\u00a0or upgrade your existing installation by following the\u00a0Update Visual Studio Learn page. Standard Library The Standard [&hellip;]<\/p>\n","protected":false},"author":706,"featured_media":35994,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[270,1],"tags":[],"class_list":["post-33169","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-announcement","category-cplusplus"],"acf":[],"blog_post_summary":"<p>We are happy to announce that Visual Studio 2022 version 17.8 is now generally available! This post summarizes the new features you can find in this release for C++. You can download Visual Studio 2022 from the\u00a0Visual Studio downloads page\u00a0or upgrade your existing installation by following the\u00a0Update Visual Studio Learn page. Standard Library The Standard [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/33169","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/users\/706"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/comments?post=33169"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/posts\/33169\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/media\/35994"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/media?parent=33169"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/categories?post=33169"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/cppblog\/wp-json\/wp\/v2\/tags?post=33169"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}