{"id":245781,"date":"2023-11-14T09:55:04","date_gmt":"2023-11-14T17:55:04","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/visualstudio\/?p=245781"},"modified":"2024-01-30T17:10:40","modified_gmt":"2024-01-31T01:10:40","slug":"visual-studio-17-8-now-available","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/visualstudio\/visual-studio-17-8-now-available\/","title":{"rendered":"Visual Studio 17.8 now available!"},"content":{"rendered":"<p style=\"text-align: center;\"><strong>Unlock New Heights in Developer Productivity: Optimized C++ Support, Enhanced Enterprise Capabilities, and Full .NET 8 Integration<\/strong><\/p>\n<p><div  class=\"d-flex justify-content-center\"><a class=\"cta_button_link btn-primary mb-24\" href=\"https:\/\/visualstudio.microsoft.com\/downloads\/\" target=\"_blank\">Download Visual Studio 2022<\/a><\/div><\/p>\n<p>The latest update (17.8) for Visual Studio 2022 is now generally available! Offering a comprehensive suite of enhancements that span productivity, programming languages, and enterprise management, this general release is a monumental step forward. Developed with extensive user feedback, this version is fully compatible with .NET 8, which is also generally available as of today.<\/p>\n<p>Let us know your <a href=\"#share-your-feedback-and-stay-connected-with-visual-studio\">favorite feature<\/a>!<\/p>\n<table>\n<tbody>\n<tr>\n<td><strong>Area<\/strong><\/td>\n<td><strong>Enhancements<\/strong><\/td>\n<\/tr>\n<tr>\n<td><a href=\"#productivity\"><strong>Productivity<\/strong>\u202f<\/a><\/td>\n<td><a href=\"#github-copilot\">GitHub Copilot<\/a><\/p>\n<p><a href=\"#create-a-pull-request-add-reviewers-and-edit-descriptions-with-markdown-all-in-visual-studio\">Create a Pull Request<\/a>\u00a0(\ud83d\ude4f<a href=\"https:\/\/developercommunity.visualstudio.com\/t\/cant-create-pull-request-in-visual-studio-with-new\/1017696\" target=\"_blank\" rel=\"noopener\">Community Suggestion<\/a> \u2013 293 votes)<\/p>\n<p><a href=\"#case-preserving-find-and-replace\">Case Preserving Find and Replace<\/a> (\ud83d\ude4f<a href=\"https:\/\/developercommunity.visualstudio.com\/t\/case-preserving-search-replace\/580810\" target=\"_blank\" rel=\"noopener\">Community Suggestion<\/a> &#8211; 76 votes)<\/p>\n<p><a href=\"#multi-repo-limit-increase\">Multi-Repo limit increase<\/a> (\ud83d\ude4f<a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Raiseremove-maximum-number-of-multiple-\/10414991\" target=\"_blank\" rel=\"noopener\">Community Suggestion<\/a> \u2013 8 votes)<\/p>\n<p><a href=\"#summary-diff-and-improvements\">Summary Diff &amp; improvements<\/a> (\ud83d\ude4f<a href=\"https:\/\/developercommunity.visualstudio.com\/t\/git-differences-show-only-differences-and-omit-lin\/1193376\" target=\"_blank\" rel=\"noopener\">Community Suggestion<\/a> &#8211; 7 votes)<\/p>\n<p><a href=\"#remote-linux-unit-test-support\">Remote Linux Unit Test Support<\/a><\/p>\n<p><a href=\"#make-global-function-static\">Make Global Function Static<\/a><\/p>\n<p><a href=\"#clean-up-and-sort-include-directives\">Sort #include Directives<\/a><\/p>\n<p><a href=\"#visual-studio-update-notification\">Visual Studio Update Notification<\/a><\/p>\n<p><a href=\"#github-avatars-added-to-git-repository-window\">GitHub Avatars added to Git Repository Window<\/a><\/p>\n<p><a href=\"#teams-toolkit\">Teams Toolkit<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=\"#PerfEnhancements\"><strong>Performance Enhancements<\/strong><\/a><\/td>\n<td>\n<p aria-level=\"3\"><a href=\"#RazorBlazor\">Improved Razor\/Blazor Responsiveness\u00a0<\/a><\/p>\n<p aria-level=\"3\"><a href=\"#F5Speed\">Enhanced F5 Speed<\/a><\/p>\n<p><a href=\"#IntellisenseCPlus\">Optimized IntelliSense for C++ Unreal Engine\u00a0<\/a><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335551550&quot;:0,&quot;335551620&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/p>\n<p aria-level=\"3\"><a href=\"#BuildAccelerate\">Build Acceleration for Non-SDK style .NET Projects<\/a><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td><a href=\"#c-game-dev\"><strong>C++ Game Dev<\/strong>\u202f<\/a><\/td>\n<td><a href=\"#c-structured-diagnostics\">C++ Structure Diagnostics<\/a><\/p>\n<p><a href=\"#cmake-targets-view-improvements\">CMake Targets View Improvements<\/a><\/p>\n<p><a href=\"#size-and-alignment-of-c-classes-structs-and-unions\">Size and Alignment of C++ Classes, Struct, and Union<\/a><\/p>\n<p><a href=\"#make-member-function-const-hints\">Make member function const hints<\/a><\/p>\n<p><a href=\"#c-standard-library\">C++ Standard Library<\/a><\/p>\n<p><a href=\"#unreal-engine-test-adapter\">Unreal Engine Test Adapter<\/a><\/p>\n<p><a href=\"#unreal-engine-code-snippets\">Unreal Engine Code Snippets<\/a><\/p>\n<p><a href=\"#unreal-engine-macro-specifier-suggestions\">Unreal Engine Macro Specifier Suggestions<\/a><\/p>\n<p><a href=\"#build-insights-functions-view\">Build Insights Function View<\/a><\/p>\n<p><a href=\"#structured-diagnostics\">Structured Diagnostics<\/a><\/p>\n<p><a href=\"#c11-threading-support\">C11 Threading Support\u202f<\/a><\/p>\n<p><a href=\"#remote-file-explorer-updates\">Remote File Explorer Improvements<\/a><\/p>\n<p><a href=\"#size-and-alignment-hints\">Size and Alignment Hints<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=\"#f\"><strong>F#<\/strong><\/a><\/td>\n<td><a href=\"#new-code-fix\">New code fix<\/a><\/p>\n<p><a href=\"#improved-autocompletion\">Improved autocompletion<\/a><\/p>\n<p><a href=\"#reduced-noise-in-parameter-name-hints\">Reduced noise in parameter name hints<\/a><\/p>\n<p><a href=\"#diagnostics-for-unopened-files\">Diagnostics for unopened files<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=\"#net-c\"><strong>.NET\/C#<\/strong>\u202f<\/a><\/td>\n<td><a href=\"#net-counters-tool-in-debugging-scenario\">.NET Counters Tool in Debugging Scenario<\/a><\/p>\n<p><a href=\"#safely-use-secrets-in-http-requests\">How to safely use secrets in HTTP files<\/a><\/p>\n<p><a href=\"#net-counter-support-for-new-instruments-via-meters-api\">.NET Counter Support for New Instruments via Meters API<\/a><\/p>\n<p><a href=\"#benchmarkdotnet-idiagnosers\">BenchmarkDotNet IDiagnosers<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=\"#javascript-and-typescript-development\"><strong>JavaScript and TypeScript Development<\/strong><\/a><\/td>\n<td><a href=\"#launch-json-support-for-open-folder\">launch.json support for open folder<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=\"#debugging-and-diagnostics\"><strong>Debugging and Diagnostics<\/strong><\/a><\/td>\n<td><a href=\"#cross-platform-enc-hot-reload-debugging-support-docker-wsl\">Cross-platform Enc\/Hot Reload debugging support (Docker, WSL)<\/a><\/p>\n<p><a href=\"#debug-linux-app-services-via-attach-to-process\">Debug Linux App Services via Attach to Process<\/a><\/p>\n<p><a href=\"#test-profiling-with-vs-profiler\">Test Profiling with VS Profiler<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=\"#razor-tooling\"><strong>Razor Tooling<\/strong>\u00a0<\/a><\/td>\n<td><a href=\"#code-action-for-event-handler-method-generation\">Code Action for Event Handler Method Generation<\/a><\/p>\n<p><a href=\"#background-color-for-c-code\">Background Color for C# Code<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=\"#testing\"><strong>Testing<\/strong><\/a><\/td>\n<td><a href=\"#new-intellitest-now-in-preview\">New IntelliTest now in Preview<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=\"#sql-server-data-tools\"><strong>SQL Server Data Tools<\/strong><\/a><\/td>\n<td><a href=\"#mds-3-0-to-mds-5-0-upgrade-in-sql-server-data-tools\">Upgraded Microsoft.Data.SQLClient (MDS) 3.0 to MDS 5.0 and more!<\/a><\/td>\n<\/tr>\n<tr>\n<td><a href=\"#enterprise-management\"><strong>Enterprise Management<\/strong><\/a><\/td>\n<td><a href=\"#installing-just-the-installer\">Ability to install just the Installer<\/a><\/p>\n<p><a href=\"#administrators-can-prompt-users-to-close-to-unblock-updates\">Admins can prompt users to close VS to unblock administrator updates<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p>This release is a big deal not just for its extensive list of features but also for its emphasis on community-driven enhancements. The above features are the top-ranking improvements, voted by customers themselves. For enterprises, this version simplifies client initialization and adds new management features, ensuring that development teams can operate efficiently. Advanced debugging controls and expanded Test Profiling options are part of this release, providing crucial metrics for application performance optimization.<\/p>\n<h2><strong>Productivity<\/strong><\/h2>\n<h4>GitHub Copilot<\/h4>\n<p>Supercharging your productivity with Visual Studio gets a lot easier in the newest release of Visual Studio. GitHub Copilot autocomplete is now available as an optional component, making it far easier to install along with a new Visual Studio. A GitHub Copilot subscription is required to activate features; <a href=\"https:\/\/visualstudio.microsoft.com\/github-copilot\/?utm_source=vscom-homepage&amp;utm_medium=web-hero&amp;utm_id=landing-page&amp;utm_campaign=vscom-hp-hero-to-copilot-lp\">free trial is available<\/a>.<\/p>\n<p>Component details here: <a href=\"https:\/\/learn.microsoft.com\/en-us\/visualstudio\/install\/workload-component-id-vs-enterprise?view=vs-2022\" target=\"_blank\" rel=\"noopener\">Visual Studio Enterprise workload and component IDs | Microsoft Learn.<\/a><\/p>\n<h4><span data-contrast=\"none\">Create a Pull Request \u2013 Add reviewers and edit descriptions with Markdown all in Visual Studio<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}\">\u00a0<\/span><\/h4>\n<p><span data-contrast=\"none\">We see lots of engagement on this <\/span><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/cant-create-pull-request-in-visual-studio-with-new\/1017696\"><span data-contrast=\"none\">Developer Community ticket<\/span><\/a><span data-contrast=\"none\">.<\/span><span data-contrast=\"auto\"> In response, you can now create a Pull Request, completing the entire inner workflow, 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. In each preview version of Visual Studio <\/span><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/create-a-pull-request-in-visual-studio\/\"><span data-contrast=\"none\">since 17.7 preview 2<\/span><\/a><span data-contrast=\"auto\">, we\u2019ve shared new updates on this experience, and we\u2019re excited to make this available as a feature to general audiences.<\/span><\/p>\n<p><img decoding=\"async\" width=\"975\" height=\"511\" class=\"wp-image-245808\" style=\"font-size: 1rem; text-align: var(--bs-body-text-align);\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/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\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-15.png 975w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-15-300x157.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-15-768x403.png 768w\" sizes=\"(max-width: 975px) 100vw, 975px\" \/><\/p>\n<p><span data-contrast=\"auto\">Take <\/span><a href=\"https:\/\/aka.ms\/CreatePR\"><span data-contrast=\"none\">this survey<\/span><\/a><span data-contrast=\"none\"> to let us know what you think.<\/span><span data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:0,&quot;335559740&quot;:240}\">\u00a0<\/span><\/p>\n<h4>Case Preserving Find and Replace<\/h4>\n<p>When you do a Replace, you can now preserve the original casing of each match in your code. Note that to get Pascal case and Camel case, your Replace string must also be in Pascal case or Camel case.<\/p>\n<p><img decoding=\"async\" width=\"1099\" height=\"590\" class=\"wp-image-245798\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-7.png\" alt=\"A screenshot of a computer Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-7.png 1099w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-7-300x161.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-7-1024x550.png 1024w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-7-768x412.png 768w\" sizes=\"(max-width: 1099px) 100vw, 1099px\" \/><\/p>\n<p>Toggle case preservation in the Replace window with \u2018Alt+V\u2019 or by clicking on the \u2018Preserve case\u2019 option.<\/p>\n<p>Quick Replace (Ctrl+H):<\/p>\n<p><img decoding=\"async\" width=\"439\" height=\"139\" class=\"wp-image-245800\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/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\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-9.png 439w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-9-300x95.png 300w\" sizes=\"(max-width: 439px) 100vw, 439px\" \/><\/p>\n<p>Replace in Files (Ctrl+Shift+H):<\/p>\n<p><img decoding=\"async\" width=\"918\" height=\"427\" class=\"wp-image-245802\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/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\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-11.png 918w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-11-300x140.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-11-768x357.png 768w\" sizes=\"(max-width: 918px) 100vw, 918px\" \/><\/p>\n<p>Share your thoughts on the case preserving replace experience on this <a href=\"https:\/\/developercommunity.visualstudio.com\/t\/case-preserving-search-replace\/580810\" target=\"_blank\" rel=\"noopener\">Developer Community ticket<\/a>.<\/p>\n<h4>Multi-Repo Limit Increase<\/h4>\n<p>As more of you are using our Multi-repository features, we heard on this <a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Raiseremove-maximum-number-of-multiple-\/10414991\" target=\"_blank\" rel=\"noopener\">Developer Community suggestion ticket<\/a> that many of you needed the number of active repositories to be more than 10. You can now work with up to 25 repositories at once in your solution.<\/p>\n<h4>Summary Diff (and Improvements!)<\/h4>\n<p>Leverage the new summary difference view to focus on the changes in your code.<\/p>\n<p><img decoding=\"async\" width=\"975\" height=\"597\" class=\"wp-image-245804\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/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\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-12.png 975w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-12-300x184.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-12-768x470.png 768w\" sizes=\"(max-width: 975px) 100vw, 975px\" \/><\/p>\n<p>Enabled in every comparison view, the new summary difference view allows you to toggle\u00a0<span style=\"font-size: 1rem; text-align: var(--bs-body-text-align);\">the context lines to do file comparison faster. We&#8217;ve also implemented the Summary view in the diff and compare views. This new option allows you to see only the changes in the file with a few lines of context, making reviewing your changes in a commit or the comparison between two files much more efficient.<\/span><\/p>\n<p><img decoding=\"async\" width=\"1233\" height=\"581\" class=\"wp-image-245806\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-program-description-au-4.png\" alt=\"A screenshot of a computer program Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-program-description-au-4.png 1233w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-program-description-au-4-300x141.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-program-description-au-4-1024x483.png 1024w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-program-description-au-4-768x362.png 768w\" sizes=\"(max-width: 1233px) 100vw, 1233px\" \/><\/p>\n<p>Let us know what you think of this feature by sharing your feedback <a href=\"https:\/\/aka.ms\/SummaryDiff\" target=\"_blank\" rel=\"noopener\">here<\/a> and engage with us on the <a href=\"https:\/\/developercommunity.visualstudio.com\/t\/git-differences-show-only-differences-and-omit-lin\/1193376\" target=\"_blank\" rel=\"noopener\">suggestion ticket in Developer Community<\/a>.<\/p>\n<h4>Remote Linux Unit Test Support<\/h4>\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<h4>Make Global Function Static<\/h4>\n<p>Visual Studio now prompts you to mark global functions as static. When you encounter a global function without a forward declaration, Visual Studio will offer a quick fix, represented by a screwdriver icon.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/Make-Global-Functions-Static.gif\"><img decoding=\"async\" class=\"alignnone size-full wp-image-245914\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/Make-Global-Functions-Static.gif\" alt=\"Image Make Global Functions Static\" width=\"962\" height=\"198\" \/><\/a><\/p>\n<p>You can customize the setting 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, visit 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<h4>Clean Up and Sort #include Directives<\/h4>\n<p>You can now sort and clean up your #include directives automatically.<\/p>\n<p>Unused #include 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><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/Sort-includes-Directives.gif\"><img decoding=\"async\" class=\"alignnone size-full wp-image-245915\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/Sort-includes-Directives.gif\" alt=\"Image Sort includes Directives\" width=\"1279\" height=\"762\" \/><\/a><\/p>\n<p>There is now also the option to add #include directives for entities which are currently indirectly included via other headers. For example, if you use std::string in your code but don\u2019t #include &lt;string&gt;, 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 #include 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><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/Sort-include-Directives-2-1.gif\"><img decoding=\"async\" class=\"alignnone size-full wp-image-245908\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/Sort-include-Directives-2-1.gif\" alt=\"Image Sort include Directives 2\" width=\"1182\" height=\"263\" \/><\/a><\/p>\n<p>Find out more about this feature at <a href=\"https:\/\/learn.microsoft.com\/en-us\/cpp\/ide\/include-cleanup-overview?view=msvc-170\" target=\"_blank\" rel=\"noopener\">Clean up C\/C++ #includes in Visual Studio<\/a>.<\/p>\n<p>To automatically sort #includes, right-click on any #include statement. Then, hovering over the #include directives option in the context menu will reveal &#8220;Sort #include directives.&#8221;<\/p>\n<p><img decoding=\"async\" width=\"1222\" height=\"346\" class=\"wp-image-245816\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-20.png\" alt=\"A screenshot of a computer Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-20.png 1222w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-20-300x85.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-20-1024x290.png 1024w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-20-768x217.png 768w\" sizes=\"(max-width: 1222px) 100vw, 1222px\" \/><\/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><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/Sort-include-Directives-1.gif\"><img decoding=\"async\" class=\"alignnone size-full wp-image-245909\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/Sort-include-Directives-1.gif\" alt=\"Image Sort include Directives\" width=\"1276\" height=\"756\" \/><\/a><\/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<h4>Visual Studio Update Notification<\/h4>\n<p>Noticed something new? For Visual Studio 2022, we added an overlay to the VS task bar icon to help you know when VS will update. When there is an update available and you have enabled the &#8220;Update on Close&#8221; option, the icon will appear. Once you close VS, an update will immediately start and as a result the icon will also disappear. For more information on Update on Close, please visit <a href=\"https:\/\/aka.ms\/PersistentUpdateonClose\" target=\"_blank\" rel=\"noopener\">VS Update on Close<\/a>.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/10\/a-logo-of-a-company-description-automatically-gen.png\" alt=\"A logo of a company Description automatically generated\" \/><\/p>\n<h4>GitHub Avatars added to Git Repository Window<\/h4>\n<p>See your GitHub avatars in the multi-branch graph in the Git Repository Window.<\/p>\n<p><img decoding=\"async\" width=\"921\" height=\"518\" class=\"wp-image-245822\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-22.png\" alt=\"A screenshot of a computer Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-22.png 921w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-22-300x169.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-22-768x432.png 768w\" sizes=\"(max-width: 921px) 100vw, 921px\" \/><\/p>\n<h4>Teams Toolkit<\/h4>\n<p>You can now create even more types of apps for Microsoft Teams using the new options released in the Microsoft Teams App project template. Included in <a href=\"https:\/\/learn.microsoft.com\/en-us\/microsoftteams\/platform\/toolkit\/toolkit-v4\/teams-toolkit-fundamentals-vs?pivots=visual-studio-v17-7\" target=\"_blank\" rel=\"noopener\">Teams Toolkit<\/a> are now the options to create:<\/p>\n<ul>\n<li>Echo Bot &#8211; a simple bot project that echos user input and can be customized<\/li>\n<li>Link Unfurling project &#8211; a message extension to render URL links as Adaptive Cards<\/li>\n<li>Custom Search Results \u2013 a message extension to run custom search queries from the chat compose area and display results as Adaptive Cards<\/li>\n<li>Collect Form Input and Process Data \u2013 an action-based message extension that shows how to get user input, perform some action, and send results back to the users.<\/li>\n<\/ul>\n<p>Install the \u201cMicrosoft Teams development tools\u201d component in the ASP.NET workload to get started or <a href=\"https:\/\/learn.microsoft.com\/en-us\/microsoftteams\/platform\/toolkit\/toolkit-v4\/install-teams-toolkit-vs?pivots=visual-studio-v17-7\" target=\"_blank\" rel=\"noopener\">visit the documentation to learn more<\/a>.<\/p>\n<h2><a id=\"PerfEnhancements\"><\/a>Performance Enhancements<\/h2>\n<h4 aria-level=\"3\"><b><span data-contrast=\"none\"><a id=\"RazorBlazor\"><\/a>Improved Razor\/Blazor Responsiveness<\/span><\/b><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335551550&quot;:0,&quot;335551620&quot;:0,&quot;335559738&quot;:281,&quot;335559739&quot;:281}\">\u00a0<\/span><\/h4>\n<p><span data-contrast=\"auto\">Solutions using Razor and Blazor will experience better responsiveness. We achieved this by significantly reducing memory allocations during cross-process communications between Visual Studio and Roslyn. We tested the <\/span><a href=\"https:\/\/github.com\/OrchardCMS\/OrchardCore\"><span data-contrast=\"none\">OrchardCore<\/span><\/a><span data-contrast=\"auto\"> solution, and the results are impressive. To open the solution and get Razor intellisense ready, we allocate about 1.4GB less memory. Fewer heap allocations mean less work for the garbage collector, which results in improved responsiveness.\u00a0 <\/span><span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<h4 aria-level=\"3\"><b><span data-contrast=\"none\"><a id=\"F5Speed\"><\/a>Enhanced F5 Speed\u00a0<\/span><\/b><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335551550&quot;:0,&quot;335551620&quot;:0,&quot;335559738&quot;:281,&quot;335559739&quot;:281}\">\u00a0<\/span><\/h4>\n<p><span data-contrast=\"auto\">We&#8217;ve substantially enhanced F5 performance for native projects by optimizing how breakpoints get set up. The improvements seen by any given project depends on the number of files with breakpoints, the number of DLLs with symbols, etc.\u00a0 Additionally, we\u2019ve optimized the PDB loading process for Windows applications, reducing the time required to load a PDB once it&#8217;s located.\u00a0 In our testing, these optimizations delivered a remarkable 20% speed improvement for Unreal Editor projects.<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335551550&quot;:0,&quot;335551620&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/debuglaunchbp-1.png\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-246108\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/debuglaunchbp-1.png\" alt=\"F5 Speed\" width=\"2240\" height=\"1293\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/debuglaunchbp-1.png 2240w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/debuglaunchbp-1-300x173.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/debuglaunchbp-1-1024x591.png 1024w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/debuglaunchbp-1-768x443.png 768w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/debuglaunchbp-1-1536x887.png 1536w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/debuglaunchbp-1-2048x1182.png 2048w\" sizes=\"(max-width: 2240px) 100vw, 2240px\" \/><\/a><\/p>\n<h4><b><span data-contrast=\"auto\"><a id=\"IntellisenseCPlus\"><\/a>Optimized IntelliSense for C++ Unreal Engine\u00a0<\/span><\/b><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335551550&quot;:0,&quot;335551620&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/h4>\n<p><span data-contrast=\"auto\">We&#8217;ve made improvements to the speed with which IntelliSense and colorization become available after opening a previously opened C++ file. We have always cached IntelliSense state for an opened file. In 17.8, we&#8217;ve restructured the reading from cache, such that the most critical information, including colorization and the highlighting of selected references, are computed first. This optimization helps you get productive sooner.<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335551550&quot;:0,&quot;335551620&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/Intellisense-New-1.png\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-246109\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/Intellisense-New-1.png\" alt=\"Intellisence C++\" width=\"2116\" height=\"1406\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/Intellisense-New-1.png 2116w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/Intellisense-New-1-300x199.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/Intellisense-New-1-1024x680.png 1024w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/Intellisense-New-1-768x510.png 768w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/Intellisense-New-1-1536x1021.png 1536w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/Intellisense-New-1-2048x1361.png 2048w\" sizes=\"(max-width: 2116px) 100vw, 2116px\" \/><\/a><\/p>\n<h4 aria-level=\"3\"><b><span data-contrast=\"none\"><a id=\"BuildAccelerate\"><\/a>Build Acceleration for Non-SDK style .NET Projects<\/span><\/b><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;134245418&quot;:true,&quot;134245529&quot;:true,&quot;335551550&quot;:0,&quot;335551620&quot;:0,&quot;335559738&quot;:281,&quot;335559739&quot;:281}\">\u00a0<\/span><\/h4>\n<p><span data-contrast=\"auto\">Visual Studio 17.8 extends <\/span><a href=\"https:\/\/github.com\/dotnet\/project-system\/blob\/main\/docs\/build-acceleration.md\"><span data-contrast=\"none\">Build Acceleration<\/span><\/a><span data-contrast=\"auto\"> to managed applications targeting the <\/span><a href=\"https:\/\/learn.microsoft.com\/en-us\/nuget\/resources\/check-project-format\"><span data-contrast=\"none\">non-SDK<\/span><\/a><span data-contrast=\"auto\"> style projects (e.g. projects targeting .NET Framework 4.8 or lower) providing a substantial impact on build times. To enable, set an msbuild project property as follows:\u00a0\u00a0<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335551550&quot;:0,&quot;335551620&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">\u00a0<\/span><b><span data-contrast=\"auto\">&lt;Project&gt;<\/span><\/b><span data-contrast=\"auto\">\u00a0<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/p>\n<p><b><span data-contrast=\"auto\">\u00a0 \u00a0 \u00a0 \u00a0 &lt;PropertyGroup&gt; <\/span><\/b><span data-contrast=\"auto\">\u00a0<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/p>\n<p><b><span data-contrast=\"auto\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 &lt;AccelerateBuildsInVisualStudio&gt;true&lt;\/AccelerateBuildsInVisualStudio&gt;<\/span><\/b><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/p>\n<p><b><span data-contrast=\"auto\">\u00a0 \u00a0 \u00a0 \u00a0&lt;\/PropertyGroup&gt; <\/span><\/b><span data-contrast=\"auto\">\u00a0<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/p>\n<p><b><span data-contrast=\"auto\">&lt;\/Project&gt;\u00a0\u00a0<\/span><\/b><span data-contrast=\"auto\">\u00a0<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335551550&quot;:1,&quot;335551620&quot;:1,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">This builds on the success introduced in 17.5 for <\/span><a href=\"https:\/\/learn.microsoft.com\/en-us\/nuget\/resources\/check-project-format\"><span data-contrast=\"none\">SDK-style<\/span><\/a><span data-contrast=\"auto\"> projects, reducing incremental build times significantly.\u00a0\u00a0<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335551550&quot;:0,&quot;335551620&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/p>\n<p><span data-contrast=\"auto\">In our internal testing with in-house solutions, we noticed up to a 50% improvement in incremental build times.\u00a0 However, the actual improvement depends on the state of projects when the build begins.\u00a0 Specifically, the fewer the projects that have been modified in comparison to the total projects in the solution, the greater the improvement. The actual extent of improvement you experience will depend on the specific characteristics of your project and its modifications.<\/span><span data-ccp-props=\"{&quot;134233117&quot;:false,&quot;134233118&quot;:false,&quot;335551550&quot;:0,&quot;335551620&quot;:0,&quot;335559738&quot;:240,&quot;335559739&quot;:240}\">\u00a0<\/span><\/p>\n<h2><\/h2>\n<h2><strong>C++ Game Dev<\/strong><\/h2>\n<h4>C++ Structured Diagnostics<\/h4>\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-245824\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-screen-description-aut-3.png\" alt=\"A screenshot of a computer screen Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-screen-description-aut-3.png 559w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-screen-description-aut-3-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-245826\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-24.png\" alt=\"A screenshot of a computer Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-24.png 460w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-24-300x216.png 300w\" sizes=\"(max-width: 460px) 100vw, 460px\" \/><\/p>\n<p>This nested structure is also reflected in the Output window:<\/p>\n<p><code>1&gt;Source.cpp(18,6):<\/code><code><\/code><code><\/code><code><\/code><code><\/code><\/p>\n<p><code>1&gt;or\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 'void pet(_T0)'<\/code><code><\/code><code><\/code><\/p>\n<p><code>1&gt;Source.cpp(23,5):<\/code><code><\/code><code><\/code><code><\/code><\/p>\n<p><code>1&gt;the associated constraints are not satisfied<\/code><code><\/code><code><\/code><code><\/code><\/p>\n<p><code>1&gt;\u00a0 \u00a0 Source.cpp(18,10):<\/code><code><\/code><\/p>\n<p><code>1&gt;\u00a0 \u00a0 the concept 'pettable&lt;lizard&gt;' evaluated to false<\/code><code><\/code><\/p>\n<p><code>1&gt;\u00a0 \u00a0 \u00a0 \u00a0 Source.cpp(16,20):<\/code><code><\/code><\/p>\n<p><code>1&gt;\u00a0 \u00a0 \u00a0 \u00a0 the concept 'has_member_pet&lt;lizard&gt;' evaluated to false<\/code><code><\/code><\/p>\n<p><code>1&gt;\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 Source.cpp(10,44):<\/code><code><\/code><\/p>\n<p><code>1&gt;\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 'pet': is not a member of 'lizard'<\/code><code><\/code><\/p>\n<p><code>1&gt;\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 Source.cpp(20,8): ra<\/code><code><\/code><\/p>\n<p><code>1&gt;\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 see declaration of 'lizard'<\/code><code><\/code><\/p>\n<p><code>1&gt;\u00a0 \u00a0 \u00a0 \u00a0 Source.cpp(16,41):<\/code><code><\/code><\/p>\n<p><code>1&gt;\u00a0 \u00a0 \u00a0 \u00a0 the concept 'has_default_pet&lt;lizard&gt;' evaluated to false<\/code><code><\/code><\/p>\n<p><code>1&gt;\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 Source.cpp(13,30):<\/code><code><\/code><\/p>\n<p><code>1&gt;\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 'is_pettable': is not a member of 'lizard'<\/code><code><\/code><\/p>\n<p><code>1&gt;\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 Source.cpp(20,8):<\/code><code><\/code><\/p>\n<p><code>1&gt;\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 see declaration of 'lizard'\u00a0<\/code><\/p>\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<h4>CMake Targets View Improvements<\/h4>\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-245828\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-26.png\" alt=\"A screenshot of a computer Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-26.png 1008w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-26-300x268.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-26-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-245830\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/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\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-program-description-au-6.png 858w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-program-description-au-6-260x300.png 260w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-program-description-au-6-768x887.png 768w\" sizes=\"(max-width: 858px) 100vw, 858px\" \/><\/p>\n<p>You can also now define in your VSWorkspaceSettings.json items to exclude from the CMake Targets View using the new CMakeTargetsViewExcludedItems 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 &#8211; C++ Team Blog\u00a0<\/a><\/p>\n<p>You can also simply navigate to the CMake Targets View by right-clicking anywhere in your Solution Explorer and selecting Switch to CMake Targets View<\/p>\n<p><img decoding=\"async\" width=\"565\" height=\"504\" class=\"wp-image-245832\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-27.png\" alt=\"A screenshot of a computer Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-27.png 565w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-27-300x268.png 300w\" sizes=\"(max-width: 565px) 100vw, 565px\" \/> \u2019<\/p>\n<p>You can also access the CMake Targets View by selecting it from the View dropdown now.<\/p>\n<p><img decoding=\"async\" class=\"wp-image-245834\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-28.png\" alt=\"A screenshot of a computer Description automatically generated\" width=\"242\" height=\"717\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-28.png 182w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-28-101x300.png 101w\" sizes=\"(max-width: 242px) 100vw, 242px\" \/><\/p>\n<p>Additionally, the CMake Targets View has been simplified so that users don&#8217;t have to click through folders without buildable executables to get to their desired target.<\/p>\n<h4>Size and Alignment of C++ Classes, Structs, and Unions<\/h4>\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 data types, such as classes, structs, unions, base types, or enums, without compiling your code. To check the size and alignment, hover over the identifier and a Quick Info tooltip will display the information. To use this feature, hover over the identifier and a Quick Info tooltip will display the details.<\/p>\n<p><img decoding=\"async\" width=\"1090\" height=\"286\" class=\"wp-image-245836\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-30.png\" alt=\"A screenshot of a computer Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-30.png 1090w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-30-300x79.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-30-1024x269.png 1024w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-30-768x202.png 768w\" sizes=\"(max-width: 1090px) 100vw, 1090px\" \/><\/p>\n<h4>Make member function const hints<\/h4>\n<p>You can now use this new feature that suggests making a member function const if it logically should not modify the object&#8217;s state. The use of const member functions is crucial for achieving const-correctness in C++ code. When a member function is declared as const, it can be safely invoked on const objects, enabling you to create const-correct code and avoid unexpected side effects when working with immutable objects.<\/p>\n<p>One of the advantages of utilizing const member functions is the enhanced safety and predictability they bring to the codebase. By clearly distinguishing between functions that modify the object&#8217;s state and those that do not, it becomes easier to reason about the behavior of different member functions.<\/p>\n<p>By hovering over a member function and clicking the light bulb icon, you can quickly access suggestions to mark the function as const.<\/p>\n<p><img decoding=\"async\" width=\"1002\" height=\"324\" class=\"wp-image-245838\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-32.png\" alt=\"A screenshot of a computer Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-32.png 1002w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-32-300x97.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-32-768x248.png 768w\" sizes=\"(max-width: 1002px) 100vw, 1002px\" \/><\/p>\n<p>By default, this feature is set as a suggestion, indicated by three dots below the function. To configure the setting, navigate 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-245842\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-35.png\" alt=\"A screenshot of a computer Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-35.png 940w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-35-300x220.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-35-768x564.png 768w\" sizes=\"(max-width: 940px) 100vw, 940px\" \/><\/p>\n<h4>C++ Standard Library<\/h4>\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\" target=\"_blank\" rel=\"noopener\">libstdc++<\/a> and <a href=\"https:\/\/libcxx.llvm.org\/UsingLibcxx.html#extensions-to-the-c-23-modules-std-and-std-compat\" target=\"_blank\" rel=\"noopener\">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 std::stacktrace in std::format. Read all the details in the <a href=\"https:\/\/github.com\/microsoft\/STL\/wiki\/Changelog\" target=\"_blank\" rel=\"noopener\">STL Changelog<\/a>.<\/p>\n<h4>Unreal Engine Test Adapter<\/h4>\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 Unreal Engine Test Adapter. 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-245844\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-36.png\" alt=\"A screenshot of a computer Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-36.png 1008w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-36-300x169.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-36-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<h4>Unreal Engine Code Snippets<\/h4>\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 uclass. Press Tab or Enter to expand the snippet.<\/p>\n<p><img decoding=\"async\" width=\"1000\" height=\"563\" class=\"wp-image-245846\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/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\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-computer-screen-shot-of-a-program-code-descript-1.png 1000w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-computer-screen-shot-of-a-program-code-descript-1-300x169.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/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 UCLASS (uclass, uclassexported), UINTERFACE (uinterface, uinterfaceexported), and USTRUCT (ustruct, ustructexported) for those working with exported APIs and plugins. In addition, we have included macros such as SWidget (swidget), TActorRange (tactorrange), TObjectRange (tobjectrange), and WITH_EDITOR (witheditor) based on your feedback.<\/p>\n<p>List of Supported Snippets<\/p>\n<ul>\n<li>uclass<\/li>\n<li>uclassexported<\/li>\n<li>uenum<\/li>\n<li>ufunction<\/li>\n<li>uinterface<\/li>\n<li>uinterfaceexported<\/li>\n<li>uproperty<\/li>\n<li>ustruct<\/li>\n<li>ustructexported<\/li>\n<li>uelog<\/li>\n<li>swidget<\/li>\n<li>tactorrange<\/li>\n<li>tobjectrange<\/li>\n<li>witheditor<\/li>\n<\/ul>\n<h4>Unreal Engine Macro Specifier Suggestions<\/h4>\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\" class=\"wp-image-245848\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-program-description-au-7.png\" alt=\"A screenshot of a computer program Description automatically generated\" width=\"1635\" height=\"919\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-program-description-au-7.png 1367w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-program-description-au-7-300x169.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-program-description-au-7-1024x575.png 1024w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-program-description-au-7-768x431.png 768w\" sizes=\"(max-width: 1635px) 100vw, 1635px\" \/><\/p>\n<h4>Build Insights Functions View<\/h4>\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 ForceInlines associated.<\/p>\n<p><img decoding=\"async\" width=\"947\" height=\"736\" class=\"wp-image-245850\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/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\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-program-description-automatical-1.png 947w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-program-description-automatical-1-300x233.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/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=\"1425\" height=\"740\" class=\"wp-image-245852\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-39.png\" alt=\"A screenshot of a computer Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-39.png 1425w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-39-300x156.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-39-1024x532.png 1024w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-39-768x399.png 768w\" sizes=\"(max-width: 1425px) 100vw, 1425px\" \/><\/p>\n<p>After compilation, Build Insights will create a diagnostic report that shows you function generation time as well as ForceInlines.<\/p>\n<h4>Structured Diagnostics<\/h4>\n<p>C++ compiler errors can be long and unwieldy. To address this, we\u2019ve created a new Problem Details window which allows you to navigate compiler errors in a structured way. The Problem Details window can be opened by clicking the Details icon for an entry in the Error List.<\/p>\n<p><img decoding=\"async\" width=\"582\" height=\"97\" class=\"wp-image-245854\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-40.png\" alt=\"A screenshot of a computer Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-40.png 582w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-40-300x50.png 300w\" sizes=\"(max-width: 582px) 100vw, 582px\" \/><\/p>\n<p>Entries in the Problem Details window can be expanded to view nested information about the error from the compiler.<\/p>\n<h4>C11 Threading Support<\/h4>\n<p>We have now implemented support for the optional C11 threads library.<\/p>\n<p>Unlike with C11 atomics there is no compatibility between C11 threads and C++ threads, but C++ programs can include the C11 threads header and call the functions just like any C program. The implementations are distinct.<\/p>\n<p>C11 contains support for threads and a variety of supporting concurrency primitives including mutexes, condition variables, and thread static storage. (All of which are implemented)<\/p>\n<h4>Remote File Explorer Updates<\/h4>\n<p>Now, in the Remote File Explorer you can view and edit your remote files by double clicking on them, editing, and saving them like you would normally through the Solution Explorer.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/09\/a-screenshot-of-a-computer-description-automatica.gif\"><img decoding=\"async\" class=\"alignnone wp-image-245144\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/09\/a-screenshot-of-a-computer-description-automatica.gif\" alt=\"A screenshot of a computer Description automatically generated\" width=\"1810\" height=\"969\" \/><\/a><\/p>\n<h4>Size and Alignment Hints<\/h4>\n<p>With this feature, you can effortlessly check the size and alignment of classes, structs, unions, base types, and enums right within your code editor, without the need to compile your code. When you hover over these elements, Quick Info will display their size and alignment information. You have the flexibility to hover over the names of classes, structs, or unions anywhere they appear in your code, not just at their declarations. This eliminates the need to scroll and search for their declarations, allowing you to effortlessly access their size and alignment information from any part of the codebase.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/08\/a-screen-shot-of-a-computer-code-description-auto.gif\"><img decoding=\"async\" class=\"alignnone size-full wp-image-244386\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/08\/a-screen-shot-of-a-computer-code-description-auto.gif\" alt=\"A screen shot of a computer code Description automatically generated\" width=\"1182\" height=\"263\" \/><\/a><\/p>\n<h2><strong>F#<\/strong><\/h2>\n<h4>New code fix<\/h4>\n<p>We introduced a code\u202ffix\u202fthat\u202fchanges\u202fequals\u202f(`=`)\u202fto\u202fa\u202fcolon\u202f(`:`)\u202fin\u202frecord\u202ffield\u202fdefinitions. This mistake is especially common among newcomers to F#.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/09\/a-screen-shot-of-a-computer-description-automatic.gif\"><img decoding=\"async\" class=\"alignnone size-full wp-image-245135\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/09\/a-screen-shot-of-a-computer-description-automatic.gif\" alt=\"A screen shot of a computer Description automatically generated\" width=\"1700\" height=\"470\" \/><\/a><\/p>\n<h4>Improved autocompletion<\/h4>\n<p>F# autocompletion is now enhanced in various scenarios. This includes:<\/p>\n<ul>\n<li>Anonymous\u202frecord\u202ffields<\/li>\n<\/ul>\n<p><img decoding=\"async\" width=\"916\" height=\"327\" class=\"wp-image-245862\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-43.png\" alt=\"A screenshot of a computer Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-43.png 916w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-43-300x107.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-43-768x274.png 768w\" sizes=\"(max-width: 916px) 100vw, 916px\" \/><\/p>\n<ul>\n<li>Union case fields<\/li>\n<\/ul>\n<p><img decoding=\"async\" class=\"wp-image-245864\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-44.png\" alt=\"A screenshot of a computer Description automatically generated\" width=\"1616\" height=\"482\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-44.png 1441w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-44-300x90.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-44-1024x306.png 1024w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-44-768x229.png 768w\" sizes=\"(max-width: 1616px) 100vw, 1616px\" \/><\/p>\n<ul>\n<li>Discriminated union case fields<\/li>\n<\/ul>\n<p><img decoding=\"async\" width=\"813\" height=\"442\" class=\"wp-image-245867\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-45.png\" alt=\"A screenshot of a computer Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-45.png 813w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-45-300x163.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-45-768x418.png 768w\" sizes=\"(max-width: 813px) 100vw, 813px\" \/><\/p>\n<ul>\n<li>Enum case value expressions<\/li>\n<\/ul>\n<p><img decoding=\"async\" width=\"901\" height=\"235\" class=\"wp-image-245869\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-green-arrow-pointing-to-a-green-line-descriptio-1.png\" alt=\"A green arrow pointing to a green line Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-green-arrow-pointing-to-a-green-line-descriptio-1.png 901w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-green-arrow-pointing-to-a-green-line-descriptio-1-300x78.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-green-arrow-pointing-to-a-green-line-descriptio-1-768x200.png 768w\" sizes=\"(max-width: 901px) 100vw, 901px\" \/><\/p>\n<h4>Reduced noise in parameter name hints<\/h4>\n<p>Now, the hints are hidden for argument names that match discriminated union fields. This contributes to the hints\u2019 goal to only show the information which is not obvious otherwise.<\/p>\n<p><img decoding=\"async\" width=\"1179\" height=\"323\" class=\"wp-image-245870\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-computer-code-with-text-description-automatical-1.png\" alt=\"A computer code with text Description automatically generated with medium confidence\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-computer-code-with-text-description-automatical-1.png 1179w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-computer-code-with-text-description-automatical-1-300x82.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-computer-code-with-text-description-automatical-1-1024x281.png 1024w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-computer-code-with-text-description-automatical-1-768x210.png 768w\" sizes=\"(max-width: 1179px) 100vw, 1179px\" \/><\/p>\n<h4>Diagnostics for unopened files<\/h4>\n<p>We implemented an option to activate diagnostics for unopened files. This is turned off by default for performance considerations (read details <a href=\"https:\/\/github.com\/dotnet\/fsharp\/pull\/15591\" target=\"_blank\" rel=\"noopener\">here<\/a>). You can enable this capability in the <strong>Tools<\/strong> &gt; <strong>Options<\/strong> &gt; <strong>Text Editor<\/strong> &gt; <strong>F#<\/strong> &gt; <strong>Advanced<\/strong> &gt; <strong>Background Analysis<\/strong>:<\/p>\n<p><img decoding=\"async\" width=\"1108\" height=\"602\" class=\"wp-image-245871\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-46.png\" alt=\"A screenshot of a computer Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-46.png 1108w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-46-300x163.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-46-1024x556.png 1024w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-46-768x417.png 768w\" sizes=\"(max-width: 1108px) 100vw, 1108px\" \/><\/p>\n<h2><strong>.NET\/C#<\/strong><\/h2>\n<h4>.NET Counters Tool in Debugging Scenario<\/h4>\n<p>The .NET Counter tool is now available within the diagnostics window now.<\/p>\n<p>This means even during debugging sessions; you can still leverage the power of .NET Counters to monitor and analyze critical performance metrics. Simply Select the &#8220;.NET Counters&#8221; option under the &#8220;Select Tool&#8221; dropdown to enable it.<\/p>\n<p>The tool&#8217;s seamless integration in both Performance Profiling and Debugging environments provides comprehensive insights and enhances their ability to optimize application performance effectively.<\/p>\n<p><img decoding=\"async\" width=\"1449\" height=\"804\" class=\"wp-image-245872\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-47.png\" alt=\"A screenshot of a computer Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-47.png 1449w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-47-300x166.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-47-1024x568.png 1024w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-47-768x426.png 768w\" sizes=\"(max-width: 1449px) 100vw, 1449px\" \/><\/p>\n<h4>Safely use secrets in HTTP requests<\/h4>\n<p>When developing Web APIs in many cases you may need to use a secret value. We have added support for safely using secrets with <a href=\"https:\/\/learn.microsoft.com\/aspnet\/core\/test\/http-files?view=aspnetcore-8.0\" target=\"_blank\" rel=\"noopener\">HTTP files<\/a> in Visual Studio. The support includes storing secrets in three different secret providers. For more info see the <a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/safely-use-secrets-in-http-requests-in-visual-studio-2022\/\" target=\"_blank\" rel=\"noopener\">Safely use secrets in HTTP requests in Visual Studio 2022 &#8211; Visual Studio Blog.<\/a><\/p>\n<h4>.Net Counter Support for New Instruments via Meters API<\/h4>\n<p>The latest version of the .NET Counters tool introduces expanded functionality with the integration of the .NET Meters API, encompassing new instrument options including &#8220;Counter&#8221; and &#8220;ObservableCounter&#8221;<\/p>\n<p>The &#8220;Counter&#8221; keeps track of a value changing over time, with the caller reporting updates using &#8220;Counter&lt;T&gt;.Add.&#8221; In contrast, the &#8220;ObservableCounter&#8221; is like the Counter but the caller takes care of keeping track of the total value. Currently .NET Counters tool reports the rate of change in the total.<\/p>\n<p>You can find these metrics in the list of the .NET counter metrics roster, offering enhanced visibility into system performance and resource utilization.Furthermore, we&#8217;re actively planning to introduce additional instrument options in the future to enhance this capability even further.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/09\/a-screen-shot-of-a-computer-description-automatic-1.gif\"><img decoding=\"async\" class=\"alignnone size-full wp-image-245150\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/09\/a-screen-shot-of-a-computer-description-automatic-1.gif\" alt=\"A screen shot of a computer Description automatically generated\" width=\"1276\" height=\"580\" \/><\/a><\/p>\n<h4>BenchmarkDotNet IDiagnosers<\/h4>\n<p>The Visual Studio Profiler has recently been enhanced to provide support for BenchmarkDotNet IDiagnosers. These IDiagnosers play a crucial role in the aggregation of diagsessions originating within BenchmarkDotNet scenarios.<\/p>\n<p>The Benchmark tab offers a visualization of the executed benchmarks. It also provides the ability to precisely choose a benchmark from the swimlane by a double-clicking on a specific row.<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/09\/a-screenshot-of-a-computer-description-automatica-2.gif\"><img decoding=\"async\" class=\"alignnone size-full wp-image-245148\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/09\/a-screenshot-of-a-computer-description-automatica-2.gif\" alt=\"A screenshot of a computer Description automatically generated\" width=\"1276\" height=\"580\" \/><\/a><\/p>\n<p>Alternatively, you have the option to navigate to the source file through the right-click context menu. The statistical data is sourced directly from BenchmarkDotNet and is presented in a structured grid format.<\/p>\n<p><img decoding=\"async\" width=\"1142\" height=\"642\" class=\"wp-image-245874\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-video-editing-program-descripti-1.png\" alt=\"A screenshot of a video editing program Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-video-editing-program-descripti-1.png 1142w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-video-editing-program-descripti-1-300x169.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-video-editing-program-descripti-1-1024x576.png 1024w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-video-editing-program-descripti-1-768x432.png 768w\" sizes=\"(max-width: 1142px) 100vw, 1142px\" \/><\/p>\n<h2><strong>JavaScript and TypeScript Development<\/strong><\/h2>\n<h4>launch.json support for open folder<\/h4>\n<p>When you choose to open folder on your workspace with launch.json in the .vscode directory to store your launch and debug settings, it will be recognized by Visual Studio and included in the dropdown menu for the Debug targets right next to the green button.<\/p>\n<p><img decoding=\"async\" width=\"915\" height=\"633\" class=\"wp-image-245876\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-48.png\" alt=\"A screenshot of a computer Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-48.png 915w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-48-300x208.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-48-768x531.png 768w\" sizes=\"(max-width: 915px) 100vw, 915px\" \/><\/p>\n<h2><strong>Debugging and Diagnostics<\/strong><\/h2>\n<h4>Cross platform Enc\/Hot Reload debugging support (Docker, WSL)<\/h4>\n<p>Added support for Edit and Continue for F5 (with debugger) and Ctrl-F5 (no debugger) scenarios when diagnosing and debugging apps hosted on Linux containers or in Windows Subsystem for Linux (WSL). Please note the F5 debugging scenario relies on .NET 8 RC1 and above.<\/p>\n<h4>Debug Linux App Services via Attach to Process<\/h4>\n<p>We are excited to unveil a powerful new feature that enables debugging of .NET processes in Linux App Services &#8211; via &#8220;Attach to Process&#8221;.<\/p>\n<p>This feature empowers developers to effortlessly debug and diagnose issues within their running Linux Azure App Services instances.<\/p>\n<p>To attach to a process:<\/p>\n<p>1.Select Debug &gt; Attach to Process (or press Ctrl+Alt+P) to open the Attach to Process dialog box.<\/p>\n<p>2.Check the Connection type. It should be &#8220;Microsoft Azure app Service&#8221;<\/p>\n<p>3.Set the Connection target to your Linux machine name.<\/p>\n<p>4.Select the correct available process and click &#8220;Attach&#8221;<\/p>\n<p><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/09\/a-screenshot-of-a-computer-description-automatica-1.gif\"><img decoding=\"async\" class=\"alignnone size-full wp-image-245147\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/09\/a-screenshot-of-a-computer-description-automatica-1.gif\" alt=\"A screenshot of a computer Description automatically generated\" width=\"1276\" height=\"580\" \/><\/a><\/p>\n<h4>Test Profiling with VS Profiler<\/h4>\n<p>We are thrilled to introduce an updated Test Profiling capabillity. When you right click on your test in Test Explorer and select &#8220;Profile,&#8221; you can now select between a set of available tools including:<\/p>\n<ul>\n<li>CPU Usage<\/li>\n<li>GPU Usage<\/li>\n<li>File IO<\/li>\n<li>.NET Async<\/li>\n<li>Events Viewer<\/li>\n<li><span class=\"ui-provider ed bla blb blc bld ble blf blg blh bli blj blk bll blm bln blo blp blq blr bls blt blu blv blw blx bly blz bma bmb bmc bmd bme bmf bmg bmh\" dir=\"ltr\">.NET Object Allocation <\/span><span class=\"ui-provider ed bla blb blc bld ble blf blg blh bli blj blk bll blm bln blo blp blq blr bls blt blu blv blw blx bly blz bma bmb bmc bmd bme bmf bmg bmh\" dir=\"ltr\">Tracking <\/span><\/li>\n<li><span class=\"ui-provider ed bla blb blc bld ble blf blg blh bli blj blk bll blm bln blo blp blq blr bls blt blu blv blw blx bly blz bma bmb bmc bmd bme bmf bmg bmh\" dir=\"ltr\">Instrumentation<\/span><\/li>\n<\/ul>\n<p>Select which tools you want to use and click &#8220;Start&#8221; and a report will be provided.<\/p>\n<p><img decoding=\"async\" width=\"1287\" height=\"361\" class=\"wp-image-245878\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-49.png\" alt=\"A screenshot of a computer Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-49.png 1287w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-49-300x84.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-49-1024x287.png 1024w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screenshot-of-a-computer-description-automatica-49-768x215.png 768w\" sizes=\"(max-width: 1287px) 100vw, 1287px\" \/><\/p>\n<h2><strong>Razor Tooling<\/strong><\/h2>\n<h4>Code Action for Event Handler Method Generation<\/h4>\n<p>If you\u2019re using an event like @onclick or @onactivate to reference a C# method that hasn\u2019t been defined yet, you can use a new Razor code action to automatically generate that event handler method.\u00a0 This code action also supports custom event arguments.<\/p>\n<p><img decoding=\"async\" width=\"928\" height=\"367\" class=\"wp-image-245879\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-computer-screen-shot-of-a-program-description-a-1.png\" alt=\"A computer screen shot of a program Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-computer-screen-shot-of-a-program-description-a-1.png 928w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-computer-screen-shot-of-a-program-description-a-1-300x119.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-computer-screen-shot-of-a-program-description-a-1-768x304.png 768w\" sizes=\"(max-width: 928px) 100vw, 928px\" \/><\/p>\n<h4>Background Color for C# Code<\/h4>\n<p>For those who prefer it, you now have the option to add a background color for C# code located within Razor files.\u00a0 Turned off by default, enable this option by going to <strong>Tools &gt; Options &gt; Text Editor &gt; Razor &gt; Advanced<\/strong> and setting <strong>Background for C# Code<\/strong> to <strong>True<\/strong>.<\/p>\n<p><img decoding=\"async\" width=\"817\" height=\"192\" class=\"wp-image-245880\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screen-shot-of-a-computer-program-description-a-1.png\" alt=\"A screen shot of a computer program Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screen-shot-of-a-computer-program-description-a-1.png 817w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screen-shot-of-a-computer-program-description-a-1-300x71.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-screen-shot-of-a-computer-program-description-a-1-768x180.png 768w\" sizes=\"(max-width: 817px) 100vw, 817px\" \/><\/p>\n<h2><strong>Testing<\/strong><\/h2>\n<h4>New IntelliTest now in Preview<\/h4>\n<p>IntelliTest explores your .NET code to generate test suites with high code coverage. Powered by the latest version of the Z3 problem solver, it generates a varied set of inputs (scoped to those that improve code coverage) that are then plugged into what we call parameterized unit tests for each of your methods. When you Generate Tests, you have the ability to select which tests you\u2019d like to preserve into a test project that can serve as your regression suite. As your code is updated, you can rerun IntelliTest to keep the generated tests in sync with your code.<\/p>\n<p>Previous implementations of this Enterprise Edition feature only supported code targeting .NET Framework and did not support x64 configuration. This updated version includes the following:<\/p>\n<ul>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/add-intellitest-support-for-net-corestandard\/359250\" target=\"_blank\" rel=\"noopener\">Add IntelliTest support for .NET Core\/Standard &#8211; Developer Community (visualstudio.com)<\/a><\/li>\n<li><a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Add-IntelliTest-support-for-x64\/501088?q=intellitest+x64\" target=\"_blank\" rel=\"noopener\">Add IntelliTest support for x64 &#8211; Developer Community (visualstudio.com)<\/a><\/li>\n<\/ul>\n<p>Give it a try on your projects today by enabling the feature through Tools &gt; Manage Preview Features and selecting IntelliTest support for NetFx and Net6 using Z3 v4 (requires restart).<\/p>\n<p><img decoding=\"async\" width=\"859\" height=\"100\" class=\"wp-image-245881\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-close-up-of-a-sign-description-automatically-ge-1.png\" alt=\"A close up of a sign Description automatically generated\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-close-up-of-a-sign-description-automatically-ge-1.png 859w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-close-up-of-a-sign-description-automatically-ge-1-300x35.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/a-close-up-of-a-sign-description-automatically-ge-1-768x89.png 768w\" sizes=\"(max-width: 859px) 100vw, 859px\" \/><\/p>\n<p>Then in your code, right click within a method and select IntelliTest (Preview) and either Create Project to create a project where your tests can be saved or Generate Tests to generate a set of tests to review and decide which ones to keep.<\/p>\n<p><img decoding=\"async\" width=\"1042\" height=\"118\" class=\"wp-image-245882\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/word-image-245781-50-1.png\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/word-image-245781-50-1.png 1042w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/word-image-245781-50-1-300x34.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/word-image-245781-50-1-1024x116.png 1024w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/word-image-245781-50-1-768x87.png 768w\" sizes=\"(max-width: 1042px) 100vw, 1042px\" \/><\/p>\n<h2><strong>SQL Server Data Tools<\/strong><\/h2>\n<h4>MDS 3.0 to MDS 5.0 Upgrade in SQL Server Data Tools<\/h4>\n<p>SQL Server Data Tools (SSDT) has upgraded from (Microsoft.Data.SQLClient)MDS 3.0 to MDS 5.0. MDS 5.0 has some significant benefits over MDS 3.0. It has added support to TDS 8.0, support for specifying Server SPN and Failover Server SPN on the connection etc. Please refer to this <a href=\"https:\/\/techcommunity.microsoft.com\/t5\/sql-server-blog\/released-general-availability-of-microsoft-data-sqlclient-5-0\/ba-p\/3592710\" target=\"_blank\" rel=\"noopener\">blog<\/a> for more information on the benefits of the upgrade.<\/p>\n<p>For SSDT users, the major change that can be noticed is while connecting to a database. Two new fields, namely: <em>Encrypt <\/em>and <em>Trust Server Certificate<\/em> have been added to the Connect Page. This specifies the Encryption type and the requirement for a Trust Server Certificate. By default, the Encrypt is set as true or Mandatory. You can find details about this in our <a href=\"https:\/\/learn.microsoft.com\/en-us\/sql\/ssdt\/connect-to-an-existing-database-in-sql-server-data-tools?view=sql-server-ver16\" target=\"_blank\" rel=\"noopener\">Microsoft Learn Documentation<\/a>.<\/p>\n<h2><strong>Enterprise Management<\/strong><\/h2>\n<p>We\u2019ve introduced a couple new features in this release that should help IT admins deploy Visual Studio across their enterprise.<\/p>\n<h4>Installing just the Installer<\/h4>\n<p>Last August in 17.7, we introduced a feature that <a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/standard-user-update\/\" target=\"_blank\" rel=\"noopener\">allowed administrators to delegate control of updating Visual Studio to standard users<\/a> who don\u2019t have administrator permissions.\u00a0 To enable this feature, the administrator has to preconfigure the client machine by enabling a global policy, and performing the initial install of the installer.\u00a0 We\u2019ve made latter step very easy to do programmatically with the following new &#8211; &#8211;installeronly parameter:<\/p>\n<p><em>vs_enterprise.exe install &#8211; &#8211;installeronly [- -passive] [- -quiet]<\/em><\/p>\n<h4>Administrators can prompt users to close to unblock updates<\/h4>\n<p>Many enterprises take advantage of our <a href=\"https:\/\/learn.microsoft.com\/visualstudio\/install\/applying-administrator-updates\" target=\"_blank\" rel=\"noopener\">administrator update solution<\/a> to deliver monthly security updates across their organization.\u00a0 This is our recommended best practice to stay secure.\u00a0 However, as some of you have realized and <a href=\"https:\/\/developercommunity.visualstudio.com\/t\/Visual-Studio-Administrator-Updates\/1545149?ftype=idea&amp;stateGroup=active&amp;page=8\" target=\"_blank\" rel=\"noopener\">suggested to us<\/a>, the administrator update is blocked from applying if Visual Studio is open and in use.\u00a0 We\u2019ve created a new <a href=\"https:\/\/aka.ms\/vs\/setup\/policies\" target=\"_blank\" rel=\"noopener\">policy for administrators to set called \u201cAdministratorUpdatesNotifications\u201d<\/a> that will, if necessary, cause a windows toast notification to appear to the user and notify them that they need to close Visual Studio. Once the user then voluntarily saves their work and closes Visual Studio, the administrator update will immediately apply.<\/p>\n<p><img decoding=\"async\" width=\"676\" height=\"253\" class=\"wp-image-245883\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/please-close-vs-administrator-update-notificati-1.jpeg\" alt=\"&quot;Please Close VS&quot; administrator update notification\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/please-close-vs-administrator-update-notificati-1.jpeg 676w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2023\/11\/please-close-vs-administrator-update-notificati-1-300x112.jpeg 300w\" sizes=\"(max-width: 676px) 100vw, 676px\" \/><\/p>\n<p>Notification when new \u2018AdministratorUpdatesNotification\u2019 policy is set<\/p>\n<p>This policy will be available in the Intune settings catalog and it\u2019s also available in our <a href=\"https:\/\/aka.ms\/vs\/admx\/details\" target=\"_blank\" rel=\"noopener\">ADMX templates<\/a>.<\/p>\n<h2>Share your feedback and stay connected with Visual Studio!<\/h2>\n<p style=\"text-align: center;\"><iframe src=\"https:\/\/www.surveymonkey.com\/r\/55CCDSV\" width=\"760\" height=\"450\"><span data-mce-type=\"bookmark\" style=\"display: inline-block; width: 0px; overflow: hidden; line-height: 0;\" class=\"mce_SELRES_start\">\ufeff<\/span><\/iframe><\/p>\n<p>We appreciate the time you\u2019ve spent reporting issues\/suggestions and hope you continue to give us feedback when using Visual Studio on what you like and what we can improve. Your feedback is critical to help us make Visual Studio the best tool it can be! You can share feedback with us via\u202f<a href=\"https:\/\/developercommunity.visualstudio.com\/home%22%20\/t%20%22_blank\" target=\"_blank\" rel=\"noopener\">Developer Community<\/a>: report any bugs or issues via\u202f<a href=\"https:\/\/learn.microsoft.com\/en-us\/visualstudio\/ide\/how-to-report-a-problem-with-visual-studio?view=vs-2022\" target=\"_blank\" rel=\"noopener\">report a problem<\/a>\u202fand\u202f<a href=\"https:\/\/developercommunity.visualstudio.com\/VisualStudio\/suggest\" target=\"_blank\" rel=\"noopener\">share your suggestions<\/a>\u202ffor new features or improvements to existing ones.<\/p>\n<p>Stay connected with the Visual Studio team by following us on <a href=\"https:\/\/www.youtube.com\/@visualstudio\" target=\"_blank\" rel=\"noopener\">YouTube<\/a>, <a href=\"https:\/\/twitter.com\/VisualStudio\" target=\"_blank\" rel=\"noopener\">Twitter<\/a>, <a href=\"https:\/\/www.linkedin.com\/showcase\/microsoft-visual-studio\/\" target=\"_blank\" rel=\"noopener\">LinkedIn<\/a>, <a href=\"https:\/\/www.twitch.tv\/visualstudio\" target=\"_blank\" rel=\"noopener\">Twitch<\/a> and on <a href=\"https:\/\/learn.microsoft.com\/en-us\/visualstudio\/?view=vs-2022\" target=\"_blank\" rel=\"noopener\">Microsoft Learn<\/a>.<\/p>\n<p>On behalf of the whole Visual Studio team, thanks for reading and Happy Coding!!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Unlock New Heights in Developer Productivity: Optimized C++ Support, Enhanced Enterprise Capabilities, and Full .NET 8 Integration The latest update (17.8) for Visual Studio 2022 is now generally available! Offering a comprehensive suite of enhancements that span productivity, programming languages, and enterprise management, this general release is a monumental step forward. Developed with extensive user [&hellip;]<\/p>\n","protected":false},"author":64133,"featured_media":255385,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[6903,6888,1195,6904,6868,6869,1412,155],"tags":[237,354,12,6815],"class_list":["post-245781","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administration","category-copilot","category-cross-platform","category-installation-and-updates","category-performance","category-reliability","category-development","category-visual-studio","tag-net","tag-announcement","tag-visual-studio","tag-visual-studio-2022"],"acf":[],"blog_post_summary":"<p>Unlock New Heights in Developer Productivity: Optimized C++ Support, Enhanced Enterprise Capabilities, and Full .NET 8 Integration The latest update (17.8) for Visual Studio 2022 is now generally available! Offering a comprehensive suite of enhancements that span productivity, programming languages, and enterprise management, this general release is a monumental step forward. Developed with extensive user [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/posts\/245781","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/users\/64133"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/comments?post=245781"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/posts\/245781\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/media\/255385"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/media?parent=245781"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/categories?post=245781"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/tags?post=245781"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}