{"id":231049,"date":"2020-11-10T10:09:04","date_gmt":"2020-11-10T18:09:04","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/visualstudio\/?p=231049"},"modified":"2020-11-11T08:23:10","modified_gmt":"2020-11-11T16:23:10","slug":"visual-studio-2019-v16-8","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/visualstudio\/visual-studio-2019-v16-8\/","title":{"rendered":"Visual Studio 2019 v16.8 and v16.9 Preview 1 Release Today"},"content":{"rendered":"<p>Today the Visual Studio team is proud to announce the release of Visual Studio 2019 v16.8 and v16.9 Preview 1. These releases have several notable features from the teams improving Git Productivity, C++, IntelliCode, .NET, XAML, and Web Tools. In addition, we hope you have been able to <a href=\"https:\/\/visualstudio.microsoft.com\/services\/github-codespaces\/\">sign-up for our Preview of GitHub Codespaces<\/a> as there is so much excitement about this new development environment!<\/p>\n<p>While I detail the features released today, why not take a few minutes to download our latest version to try some of these updates for yourself?\u00a0 We love to hear feedback on <a href=\"https:\/\/developercommunity.visualstudio.com\/\">Developer Community<\/a>, so please do not hesitate to add suggestions for product improvement or problems you may encounter. There is so much content to cover today, so let&#8217;s get started on what&#8217;s new!<\/p>\n<p><div  class=\"d-flex justify-content-center\"><a class=\"cta_button_link btn-primary mb-24\" href=\"https:\/\/visualstudio.microsoft.com\/vs\/\" target=\"_blank\">Install Visual Studio 2019 v16.8<\/a><\/div><\/p>\n<h2>What&#8217;s Releasing in Visual Studio 2019 v16.8?<\/h2>\n<h3><\/h3>\n<h3>Git Productivity<\/h3>\n<p>Git is now the default version control experience in Visual Studio 2019. We have spent the last two releases building out the feature set and iterating based on your feedback. The experience has now been turned on by default for everyone. From the new Git menu, you can clone, create, or open repositories. Use the integrated Git tool windows to commit and push changes to your code, manage branches, stay up to date with your remote repositories, and resolve merge conflicts. Find a full list of features in the <a href=\"https:\/\/docs.microsoft.com\/en-us\/visualstudio\/releases\/2019\/release-notes\">Release Notes<\/a> and <a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/exciting-new-updates-to-the-git-experience-in-visual-studio\/\">earlier blog posts<\/a>. Learn how to use and customize the experience in <a href=\"https:\/\/aka.ms\/vsgitdocs\">documentation<\/a>. Please be sure to supply feedback as we continue to enhance the experience!<\/p>\n<p><figure id=\"attachment_231073\" aria-labelledby=\"figcaption_attachment_231073\" class=\"wp-caption aligncenter\" ><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/Git-overview.gif\"><img decoding=\"async\" class=\"wp-image-231073 size-full\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/Git-overview.gif\" alt=\"Git Productivity Demonstration in Visual Studio 2019 v16.8\" width=\"2048\" height=\"1238\" \/><\/a><figcaption id=\"figcaption_attachment_231073\" class=\"wp-caption-text\">Git Productivity Demonstration in Visual Studio 2019 v16.8<\/figcaption><\/figure><\/p>\n<p>&nbsp;<\/p>\n<h3>C++20 Conformance<\/h3>\n<p>In this release, we have improved support for major C++20 features across our compiler, standard library, and IDE. You can use Modules, Coroutines, and some Ranges in the same project. All of the major feature work is complete and available under <strong>\/std:c++latest<\/strong>. From our team, comes a reminder to include the &lt;coroutine&gt; header to access the new Coroutines features. If you need to access any of the legacy behavior, this remains available under &lt;experimental\/coroutine&gt; and the use of the <strong>\/await<\/strong> switch. When it comes to Modules, header units and experimental MSBuild support will work out any module dependencies automatically. This ensures they are built in the correct order.<\/p>\n<p>Our teams have put together additional blog posts on both Coroutines and Modules, so please take a look if you&#8217;d like to learn more.<\/p>\n<p>In addition, we do support most of the C++ Ranges, but still have some work to do in order to deliver full functionality to you. While this release includes support for most of the range-based algorithms, you can track progress of what is left to do in <a href=\"https:\/\/github.com\/microsoft\/STL\/issues\/39\">this GitHub issue<\/a>.<\/p>\n<p>Finally, IntelliSense also provides support for C++20 &lt;concepts&gt; and &lt;ranges&gt; headers and rename and browsing for concept definitions.<\/p>\n<p><figure id=\"attachment_231072\" aria-labelledby=\"figcaption_attachment_231072\" class=\"wp-caption aligncenter\" ><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GACpp1.png\"><img decoding=\"async\" class=\"size-full wp-image-231072\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GACpp1.png\" alt=\"IntelliSense Support for C++20 in Visual Studio 2019 v16.8\" width=\"338\" height=\"240\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GACpp1.png 338w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GACpp1-300x213.png 300w\" sizes=\"(max-width: 338px) 100vw, 338px\" \/><\/a><figcaption id=\"figcaption_attachment_231072\" class=\"wp-caption-text\">IntelliSense Support for C++20 in Visual Studio 2019 v16.8<\/figcaption><\/figure><\/p>\n<h5>Standard Template Library (STL) Features and Optimization<\/h5>\n<p>Another thing that makes us excited are the new STL features and optimizations.<\/p>\n<p>Examples include:<\/p>\n<ul>\n<li><a href=\"http:\/\/www.open-std.org\/jtc1\/sc22\/wg21\/docs\/papers\/2018\/p0019r8.html\">std::atomic_ref&lt;T&gt;<\/a> which allows you to perform atomic operations on non-atomic objects.<\/li>\n<li>Our <a href=\"http:\/\/www.open-std.org\/jtc1\/sc22\/wg21\/docs\/papers\/2019\/p0811r3.html\">std::midpoint and std::lerp<\/a> implementations are now constexpr.<\/li>\n<li><a href=\"http:\/\/www.open-std.org\/jtc1\/sc22\/wg21\/docs\/papers\/2019\/p1001r2.html\">std::execution::unseq<\/a> indicates that an algorithm\u2019s execution may be vectorized on a single thread.<\/li>\n<li>We\u2019ve hand-vectorized our <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/algorithm\/reverse_copy\">std::reverse_copy<\/a> implementation<\/li>\n<\/ul>\n<p>While we can list several more of these examples, you may enjoy the more thorough list on <a href=\"https:\/\/github.com\/microsoft\/STL\/wiki\/Changelog#expected-in-vs-2019-168-preview-3\">our Change log<\/a>.<\/p>\n<p>As a final mention, conditionally trivial special member functions are supported by Microsoft Visual C++ (MSVC.)<\/p>\n<h3>C17 Conformance<\/h3>\n<p>All required features of C11 and C17 are now supported using the \/std:c11 and \/std:c17 switches. This includes:<\/p>\n<ul>\n<li>_Pragma<\/li>\n<li>restrict<\/li>\n<li>_Noreturn and &lt;stdnoreturn.h&gt;<\/li>\n<li>_Alignas, _Alignof and &lt;stdalign.h&gt;<\/li>\n<li>_Generic and &lt;tgmath.h&gt; support<\/li>\n<li>_Static_assert<\/li>\n<\/ul>\n<p>Please do note that the optional features are not supported, so we do not claim C99 compliance. Learn more in our <a href=\"https:\/\/aka.ms\/cpp\/c17\">C11\/C17 blogpost.<\/a><\/p>\n<h3>C++ Productivity<\/h3>\n<h4>Reduced Linking Time<\/h4>\n<p>In this area, we have significantly reduced the linking time when building with full debug information by multi-threading the PDB file generation. Several large applications and AAA games have two to four times faster linking. These improvements bring the <strong>\/debug:full<\/strong> mode very close to the <strong>\/debug:fastlink<\/strong> times.<\/p>\n<h4>New CMake Version<\/h4>\n<p>Next, we have upgraded the version of CMake shipping within Visual Studio to CMake 3.18. This will enable you to use their new CMake profiling feature.<\/p>\n<h4>Debug Linux Core Dumps<\/h4>\n<p>Also, you can now debug Linux core dumps on a remote Linux system or WSL directly from Visual Studio. This may be helpful if you run a \u201cWindows shop\u201d but deploy to Linux servers and want to diagnose crashes in a familiar environment.<\/p>\n<p><figure id=\"attachment_231100\" aria-labelledby=\"figcaption_attachment_231100\" class=\"wp-caption aligncenter\" ><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GALinuxDump.png\"><img decoding=\"async\" class=\"size-full wp-image-231100\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GALinuxDump.png\" alt=\"Linux Core Dumps in Visual Studio 2019 v16.8\" width=\"720\" height=\"369\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GALinuxDump.png 720w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GALinuxDump-300x154.png 300w\" sizes=\"(max-width: 720px) 100vw, 720px\" \/><\/a><figcaption id=\"figcaption_attachment_231100\" class=\"wp-caption-text\">Linux Core Dumps in Visual Studio 2019 v16.8<\/figcaption><\/figure><\/p>\n<p>Speaking of Linux, we\u2019ve improved our error reporting for missing build tools on Linux projects. Previously, you would encounter a lot of errors when compiling, debugging, or using IntelliSense. Now you get a warning in the toolbar and a clear error telling you about the missing tools in the error view.<\/p>\n<p><figure id=\"attachment_231108\" aria-labelledby=\"figcaption_attachment_231108\" class=\"wp-caption aligncenter\" ><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GAWarningMsg1.png\"><img decoding=\"async\" class=\"size-full wp-image-231108\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GAWarningMsg1.png\" alt=\"Improved Warning Messages in Visual Studio 2019 v16.8\" width=\"441\" height=\"32\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GAWarningMsg1.png 441w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GAWarningMsg1-300x22.png 300w\" sizes=\"(max-width: 441px) 100vw, 441px\" \/><\/a><figcaption id=\"figcaption_attachment_231108\" class=\"wp-caption-text\">Improved Warning Messages in Visual Studio 2019 v16.8<\/figcaption><\/figure><\/p>\n<p>&nbsp;<\/p>\n<p><figure id=\"attachment_230688\" aria-labelledby=\"figcaption_attachment_230688\" class=\"wp-caption aligncenter\" ><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31Warning3.png\"><img decoding=\"async\" class=\"wp-image-230688 size-full\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31Warning3.png\" alt=\"Another Example of Error Reporting Improvements\" width=\"264\" height=\"25\" \/><\/a><figcaption id=\"figcaption_attachment_230688\" class=\"wp-caption-text\">Another Example of Error Reporting Improvements in Visual Studio 2019 v16.8<\/figcaption><\/figure><\/p>\n<p>&nbsp;<\/p>\n<p>Also, while mentioning debugger, the Visual Studio debugger has support for char8_t.<\/p>\n<h4>IntelliSense Code Linter<\/h4>\n<p>New warnings and quick-fixes based on an IntelliSense-driven code linter are now available from the editor. Now, you can configure it in <strong>Tools-&gt;Options-&gt;Text Editor-&gt;C\/C++-&gt;CodeStyle-&gt;Linter + Fixups<\/strong>. You&#8217;ll be able to get warnings and fixes for arithmetic overflow, uninitialized local variables, converting the result of an integer division to float, and more!<\/p>\n<p><figure id=\"attachment_231091\" aria-labelledby=\"figcaption_attachment_231091\" class=\"wp-caption aligncenter\" ><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GACodeAnalysis1.png\"><img decoding=\"async\" class=\"size-full wp-image-231091\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GACodeAnalysis1.png\" alt=\"Code Analysis Tool in Visual Studio 2019 v16.8\" width=\"480\" height=\"102\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GACodeAnalysis1.png 480w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GACodeAnalysis1-300x64.png 300w\" sizes=\"(max-width: 480px) 100vw, 480px\" \/><\/a><figcaption id=\"figcaption_attachment_231091\" class=\"wp-caption-text\">Linux Core Dumps in Visual Studio 2019 v16.8<\/figcaption><\/figure><\/p>\n<p>Next to highlight is how our code analysis tools now support the SARIF 2.1 standard. This is the industry standard static analysis log format. Behind the scenes, SARIF 2.1 powers the MSVC code analysis experience in Visual Studio 2019. Included in the functionality is error list population in both regular and background code analysis runs, green squiggles and fix-its.<\/p>\n<p>In the near future, we plan to improve the IDE experience further by color coding the squiggles according to severity level (Info\/Warning\/Error) of each defect based on information in the SARIF logs. You can read more about the format SARIF format in <a href=\"https:\/\/docs.oasis-open.org\/sarif\/sarif\/v2.1.0\/sarif-v2.1.0.html\">the official specification<\/a>.<\/p>\n<p>Also, users can now build, deploy and debug ARM64 projects using the LLVM (clang-cl) toolset which includes IntelliSense support.<\/p>\n<h4>AMX Intrinsics<\/h4>\n<p>We have added support for Intel AMX intrinsics to the compiler. Find out more about these intrinsics in <a href=\"https:\/\/software.intel.com\/content\/www\/us\/en\/develop\/documentation\/cpp-compiler-developer-guide-and-reference\/top\/compiler-reference\/intrinsics\/intrinsics-for-intel-advanced-matrix-extensions-intel-amx-instructions.html\">Intel\u2019s AMX documentation<\/a>.<\/p>\n<h3>.NET Productivity<\/h3>\n<p>On the .NET compiler platform, Roslyn analyzers inspect your C# or Visual Basic code for security, performance, design, and other issues. Starting in .NET 5.0, these analyzers are included with the <a href=\"https:\/\/docs.microsoft.com\/dotnet\/fundamentals\/productivity\/code-analysis\">.NET SDK.<\/a> These are enabled by default for projects that target .NET 5.0 or later. You can enable code analysis on projects that target earlier versions by selecting <strong>Enable .NET analyzers<\/strong> in the <strong>Project Properties<\/strong> window.<\/p>\n<p><figure id=\"attachment_231093\" aria-labelledby=\"figcaption_attachment_231093\" class=\"wp-caption aligncenter\" ><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GACpp2.png\"><img decoding=\"async\" class=\"size-large wp-image-231093\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GACpp2-1024x647.png\" alt=\"Code Analysis in Visual Studio 2019 v16.8\" width=\"640\" height=\"404\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GACpp2-1024x647.png 1024w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GACpp2-300x189.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GACpp2-768x485.png 768w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GACpp2.png 1189w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/a><figcaption id=\"figcaption_attachment_231093\" class=\"wp-caption-text\">Code Analysis in Visual Studio 2019 v16.8<\/figcaption><\/figure><\/p>\n<h4>Inline Parameter Name Hints<\/h4>\n<p>In addition, C# and Visual Basic support for <a href=\"https:\/\/docs.microsoft.com\/visualstudio\/ide\/reference\/options-text-editor-csharp-advanced#editor-help\">inline parameter name hints<\/a> that insert adornments for literals, casted literals, and object instantiations prior to each argument in function calls. To utilize this feature, you will first need to turn this option on in <strong>Tools<\/strong>\u00a0&gt;\u00a0<strong>Options<\/strong>\u00a0&gt;\u00a0<strong>Text Editor<\/strong>\u00a0&gt;\u00a0<strong>C#<\/strong>\u00a0or\u00a0<strong>Basic<\/strong>\u00a0&gt;\u00a0<strong>Advanced<\/strong>\u00a0and select\u00a0<strong>Display inline parameter name hints (experimental)<\/strong>. The inline parameter name hints will then appear in C# or Visual Basic file.<\/p>\n<p><figure id=\"attachment_231094\" aria-labelledby=\"figcaption_attachment_231094\" class=\"wp-caption aligncenter\" ><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GACpp3.png\"><img decoding=\"async\" class=\"size-full wp-image-231094\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GACpp3.png\" alt=\"Inline Parameter Name Hints in Visual Studio 2019 v16.8\" width=\"624\" height=\"185\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GACpp3.png 624w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GACpp3-300x89.png 300w\" sizes=\"(max-width: 624px) 100vw, 624px\" \/><\/a><figcaption id=\"figcaption_attachment_231094\" class=\"wp-caption-text\">Inline Parameter Name Hints in Visual Studio 2019 v16.8<\/figcaption><\/figure><\/p>\n<p>&nbsp;<\/p>\n<h4>IntelliCode<\/h4>\n<p>C# developers can now automate training a model for personalized IntelliCode completions for the unique types only found in their codebase in Visual Studio or as part of their CI workflow.<\/p>\n<p><figure id=\"attachment_231190\" aria-labelledby=\"figcaption_attachment_231190\" class=\"wp-caption aligncenter\" ><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/VSICTeamCompletions.gif\"><img decoding=\"async\" class=\"wp-image-231190 size-full\" title=\"Visual Studio IntelliCode Team Completions\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/VSICTeamCompletions.gif\" alt=\"IntelliCode Team Completions\" width=\"800\" height=\"450\" \/><\/a><figcaption id=\"figcaption_attachment_231190\" class=\"wp-caption-text\">Enabling Visual Studio IntelliCode Team Completions in Visual Studio for a C# project<\/figcaption><\/figure><\/p>\n<p>&nbsp;<\/p>\n<p><strong>In Visual Studio<\/strong>: Upon a successful build of a C# project, users will be prompted to enable automatic model training for personalized completions. These completions will appear as starred completion items in the context where the IntelliSense list is triggered. Learn more <a href=\"https:\/\/aka.ms\/vsic-teamcompletions\">here<\/a>.<\/p>\n<p><strong>As part of Continuous Integration workflow<\/strong>: Now you can keep your IntelliCode completions up-to-date with your latest commit and share automatically with anyone with access to your git repository via the IntelliCode GitHub Action for Team Completions or the Azure DevOps Build Task. Learn more\u00a0<a href=\"https:\/\/aka.ms\/vsic-teamcompletions-ci\" data-linktype=\"external\">here.<\/a><\/p>\n<h4>Refactoring in .NET<\/h4>\n<p>Next, there is refactoring introducing the new <strong>C# 9\u00a0not<\/strong>\u00a0pattern matching syntax when a suppression operator is present. Place your cursor on the suppression operator. Press (<strong>Ctrl<\/strong>+<strong>.<\/strong>) to trigger the\u00a0<strong>Quick Actions and Refactorings<\/strong>\u00a0menu. Select\u00a0<strong>Use pattern matching<\/strong>.<\/p>\n<p><figure id=\"attachment_231095\" aria-labelledby=\"figcaption_attachment_231095\" class=\"wp-caption aligncenter\" ><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GACpp4.png\"><img decoding=\"async\" class=\"size-full wp-image-231095\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GACpp4.png\" alt=\"Use Pattern Matching in Visual Studio 2019 v16.8\" width=\"624\" height=\"236\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GACpp4.png 624w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GACpp4-300x113.png 300w\" sizes=\"(max-width: 624px) 100vw, 624px\" \/><\/a><figcaption id=\"figcaption_attachment_231095\" class=\"wp-caption-text\">Use Pattern Matching in Visual Studio 2019 v16.8<\/figcaption><\/figure><\/p>\n<p>In addition, you can extract members from a selected class to a new base class with the new <strong>Extract Base Class<\/strong> refactoring. To give this feature a try, place your cursor on either the class name or a highlighted member. Press (<strong>Ctrl<\/strong>+<strong>.<\/strong>) to trigger the\u00a0<strong>Quick Actions and Refactorings<\/strong>\u00a0menu. Select\u00a0<strong>Pull member(s) up to new base class<\/strong>. The new\u00a0<strong>Extract Base Class<\/strong>\u00a0dialog will open where you can specify the name for the base class and location of where it should be placed. You can select the members that you want to transfer to the new base class and choose to make the members abstract by selecting the checkbox in the Make Abstract column.<\/p>\n<p><figure id=\"attachment_231096\" aria-labelledby=\"figcaption_attachment_231096\" class=\"wp-caption aligncenter\" ><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GACpp5.png\"><img decoding=\"async\" class=\"size-full wp-image-231096\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GACpp5.png\" alt=\"Extract Base Class in Visual Studio 2019 v16.8\" width=\"624\" height=\"621\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GACpp5.png 624w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GACpp5-300x300.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GACpp5-150x150.png 150w\" sizes=\"(max-width: 624px) 100vw, 624px\" \/><\/a><figcaption id=\"figcaption_attachment_231096\" class=\"wp-caption-text\">Extract Base Class in Visual Studio 2019 v16.8<\/figcaption><\/figure><\/p>\n<p>Inline method refactoring helps you replace usages of a static, instance, and extension method within a single statement body with an option to remove the original method declaration. From the\u00a0<strong>Quick Actions and Refactorings<\/strong> menu, select from one of the following options:<\/p>\n<ul>\n<li><strong>Inline <\/strong><strong>&lt;QualifiedMethodName&gt;<\/strong> removes the inline method declaration<\/li>\n<\/ul>\n<p><figure id=\"attachment_231097\" aria-labelledby=\"figcaption_attachment_231097\" class=\"wp-caption aligncenter\" ><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GACpp6.png\"><img decoding=\"async\" class=\"size-full wp-image-231097\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GACpp6.png\" alt=\"Inline &lt;QualifiedMethodName&gt; in Visual Studio 2019 v16.8\" width=\"624\" height=\"254\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GACpp6.png 624w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GACpp6-300x122.png 300w\" sizes=\"(max-width: 624px) 100vw, 624px\" \/><\/a><figcaption id=\"figcaption_attachment_231097\" class=\"wp-caption-text\">Inline in Visual Studio 2019 v16.8<\/figcaption><\/figure><\/p>\n<ul>\n<li><strong>Inline and keep <\/strong><strong>&lt;QualifiedMethodName&gt;<\/strong> preserves the original method declaration.<\/li>\n<\/ul>\n<p><figure id=\"attachment_231098\" aria-labelledby=\"figcaption_attachment_231098\" class=\"wp-caption aligncenter\" ><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GACpp7.png\"><img decoding=\"async\" class=\"size-full wp-image-231098\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GACpp7.png\" alt=\"Inline and keep &lt;QualifiedMethodName&gt; in Visual Studio 2019 v16.8\" width=\"624\" height=\"249\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GACpp7.png 624w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GACpp7-300x120.png 300w\" sizes=\"(max-width: 624px) 100vw, 624px\" \/><\/a><figcaption id=\"figcaption_attachment_231098\" class=\"wp-caption-text\">Inline and keep in Visual Studio 2019 v16.8<\/figcaption><\/figure><\/p>\n<h4>Debugger<\/h4>\n<p>Similar to the feature added from our C++ team, we realized debugging a captured managed Linux core dump on Windows has been difficult. It would usually mean setting up another Linux environment that precisely mirrored production and then installing a set of tools for analysis. Thankfully, with Visual Studio 2019 16.8 you can simply drag and <a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/linux-managed-memory-dump-debugging\/\">drop a managed Linux core dump directly into your IDE and immediately start debugging<\/a>.<\/p>\n<p><figure id=\"attachment_231101\" aria-labelledby=\"figcaption_attachment_231101\" class=\"wp-caption aligncenter\" ><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GALinuxDump2.png\"><img decoding=\"async\" class=\"size-full wp-image-231101\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GALinuxDump2.png\" alt=\"Debugging a Managed Linux Core Dump File in Visual Studio 2019 v16.8\" width=\"436\" height=\"218\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GALinuxDump2.png 436w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GALinuxDump2-300x150.png 300w\" sizes=\"(max-width: 436px) 100vw, 436px\" \/><\/a><figcaption id=\"figcaption_attachment_231101\" class=\"wp-caption-text\">Debugging a Managed Linux Core Dump File in Visual Studio 2019 v16.8<\/figcaption><\/figure><\/p>\n<h4>.NET Auto Analysis<\/h4>\n<p>Asynchronous (async) programming has been around for several years on the .NET platform but has historically been difficult to do effectively. We have introduced managed memory dump analyzers that help identify <strong>Sync-over-Async<\/strong> and <strong>Threadpool exhaustion<\/strong>.<\/p>\n<p>Memory hot path Auto Analysis allows you to intuitively view the domination object types in their memory heap by using flame annotations in the <strong>Diagnostic Memory Tool<\/strong> window.<\/p>\n<h3>XAML<\/h3>\n<h4>XAML Data Binding Failure Detection &amp; Diagnostics<\/h4>\n<p>If you work on WPF, UWP, WinUI and Xamarin.Forms projects, you must often detect and resolve XAML data binding failures in applications. To improve the diagnostic tooling in this scenario we have added two new experiences to Visual Studio 2019:<\/p>\n<p>First we bring a<strong> XAML Binding Failure Indicator Icon.<\/strong> A new XAML Binding failure indicator icon is now present in the in-app toolbar for WPF and UWP projects, but also in the Live Visual Tree for all XAML projects. This includes Xamarin.Forms. The icon will show a red indicator if at least one binding failure is detected. Clicking the icon will also take you to the new XAML Binding Failures window.<\/p>\n<p><figure id=\"attachment_230691\" aria-labelledby=\"figcaption_attachment_230691\" class=\"wp-caption aligncenter\" ><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31XAMLToolbarNotification.png\"><img decoding=\"async\" class=\"size-full wp-image-230691\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31XAMLToolbarNotification.png\" alt=\"XAML Binding Failure Indicator Icon in Visual Studio 2019\" width=\"800\" height=\"458\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31XAMLToolbarNotification.png 800w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31XAMLToolbarNotification-300x172.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31XAMLToolbarNotification-768x440.png 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/a><figcaption id=\"figcaption_attachment_230691\" class=\"wp-caption-text\">XAML Binding Failure Indicator Icon in Visual Studio 2019 v16.8<\/figcaption><\/figure><\/p>\n<p>Next, we have added the\u00a0<strong>XAML Binding Failures Window<\/strong>. This new window is available for WPF, UWP, WinUI and Xamarin.Forms projects. This new dedicated experience provides a rich user interface over the binding failure information that was previously only available in the Output Window. Improvements include the ability to see the failures as a set of columns that can be sorted, customized and are fully searchable. We have also grouped similar errors together limiting the noise that can occur during certain combination of data binding templates failures while still making all the original raw error information available and easily copied through a right-click menu option. As a side note, this requires Xamarin version 4.5.0.266-pre3 or higher.<\/p>\n<p>Finally, you can <strong>navigate to Source for binding failures<\/strong>. In partnership with the WPF team, we have enabled the ability to navigate to source of binding failures for those customers who are targeting WPF on .NET 5 (RC2 or newer).<\/p>\n<p><figure id=\"attachment_231144\" aria-labelledby=\"figcaption_attachment_231144\" class=\"wp-caption aligncenter\" ><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/16_8_ga_xamlbindfailwindow.png\"><img decoding=\"async\" class=\"size-large wp-image-231144\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/16_8_ga_xamlbindfailwindow-1024x832.png\" alt=\"XAML Binding in Visual Studio v16.8 GA\" width=\"640\" height=\"520\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/16_8_ga_xamlbindfailwindow-1024x832.png 1024w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/16_8_ga_xamlbindfailwindow-300x244.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/16_8_ga_xamlbindfailwindow-768x624.png 768w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/16_8_ga_xamlbindfailwindow.png 1280w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/a><figcaption id=\"figcaption_attachment_231144\" class=\"wp-caption-text\">XAML Binding in Visual Studio v16.8 GA<\/figcaption><\/figure><\/p>\n<h4>Other XAML Improvements<\/h4>\n<p>We\u2019ve also made other improvements for XAML developers. We consolidated XAML Hot Reload settings for desktop and Xamarin into a single location. We have also started enabling XAML Hot Reload for Xamarin.Forms developer targeting UWP. Last, we have added IntelliSense support for d:DataContext for MVVM scenarios and more.<\/p>\n<h4>Windows Forms Designer<\/h4>\n<p>We have improved performance in .NET 5 Windows Forms designer. The new architecture of the internal components significantly reduces memory allocations, which results in faster and more reliable designer work. The team has been working closely with third-party control vendors on the SDK for .NET 5 Windows Forms designer extensibility to allow control vendors to work with the new designer. Some of them already support .NET 5, but keep in mind others are coming soon!<\/p>\n<h2>Landing in Visual Studio 2019 v16.9 Preview 1<\/h2>\n<p>&nbsp;<\/p>\n<h3>Git Productivity<\/h3>\n<p>We\u2019ve enhanced the Fetch, Pull, and Push action buttons in the Git Changes window. With the dropdowns, you can choose which remote you are targeting in the event you have multiple remotes for your repository. In the Push dropdown, you can also push all tags that you may have created locally.<\/p>\n<p><figure id=\"attachment_231099\" aria-labelledby=\"figcaption_attachment_231099\" class=\"wp-caption aligncenter\" ><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GAGitProductivity1.png\"><img decoding=\"async\" class=\"size-full wp-image-231099\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GAGitProductivity1.png\" alt=\"Git Productivity Multiple Remotes in Visual Studio 2019 v16.9 Preview 1\" width=\"724\" height=\"324\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GAGitProductivity1.png 724w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GAGitProductivity1-300x134.png 300w\" sizes=\"(max-width: 724px) 100vw, 724px\" \/><\/a><figcaption id=\"figcaption_attachment_231099\" class=\"wp-caption-text\">Git Productivity Multiple Remotes in Visual Studio 2019 v16.9 Preview 1<\/figcaption><\/figure><\/p>\n<h3>.NET Core Debugging with WSL 2<\/h3>\n<p>Are you a .NET Core developer who loves working in Windows and Visual Studio, but needs to test your app in Linux? If so, the new .NET Core debugging in WSL 2 feature is something you will want to try out! It enables you to debug your code in WSL 2 using the Linux distro of your choice.<\/p>\n<p><figure id=\"attachment_231103\" aria-labelledby=\"figcaption_attachment_231103\" class=\"wp-caption aligncenter\" ><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GANETCoreDebugging.gif\"><img decoding=\"async\" class=\"size-large wp-image-231103\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GANETCoreDebugging-1024x576.gif\" alt=\".NET Core Debugging with WSL 2 in Visual Studio 2019 v16.9 Preview 1\" width=\"640\" height=\"360\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GANETCoreDebugging-1024x576.gif 1024w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GANETCoreDebugging-300x169.gif 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GANETCoreDebugging-768x432.gif 768w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/a><figcaption id=\"figcaption_attachment_231103\" class=\"wp-caption-text\">.NET Core Debugging with WSL 2 in Visual Studio 2019 v16.9 Preview 1<\/figcaption><\/figure><\/p>\n<p>After installing <a href=\"https:\/\/aka.ms\/wsl2\">WSL 2<\/a>\u00a0and the\u00a0<a href=\"https:\/\/aka.ms\/wslstore\">distribution<\/a> of your choice and opening an ASP.NET Core web app or .NET Core console app in Visual Studio, you\u2019ll see a new Launch Profile named <strong>WSL 2<\/strong>.<\/p>\n<p><figure id=\"attachment_231110\" aria-labelledby=\"figcaption_attachment_231110\" class=\"wp-caption aligncenter\" ><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GAWSL2.png\"><img decoding=\"async\" class=\"size-full wp-image-231110\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GAWSL2.png\" alt=\"Adding Launch Profile WSL 2 in Visual Studio 2019 v16.9 Preview 1\" width=\"295\" height=\"138\" \/><\/a><figcaption id=\"figcaption_attachment_231110\" class=\"wp-caption-text\">Adding Launch Profile WSL 2 in Visual Studio 2019 v16.9 Preview 1<\/figcaption><\/figure><\/p>\n<p>Selecting this profile will add it to your launchSettings.json. Once the new profile is selected, Visual Studio checks that your WSL 2 distribution is configured to run .NET Core apps, and helps you install any missing dependencies. As soon as all the dependencies are installed, you are ready to debug WSL 2. From here, you can start Debugging as normal, and your app will now be running in your default WSL 2 distribution. Check <a href=\"https:\/\/docs.microsoft.com\/dotnet\/api\/system.environment.osversion\">Environment.OSVersion <\/a>to verify the correct distribution.<\/p>\n<p>Note: Only Ubuntu and Debian have been tested and are currently supported. Other distributions supported by .NET Core should work but require manually installing the <a href=\"https:\/\/aka.ms\/wsldotnet\">.NET Core Runtime<\/a>\u00a0and\u00a0<a href=\"https:\/\/curl.haxx.se\/\">Curl<\/a>.<\/p>\n<p>By default, the WSL 2 launch profile will use the default distribution as set in wsl.exe, but you can modify your launch profile to include specific distributions. Adding extra functionality, you can also have multiple launch profiles. For instance, if you need to test your console app on Debian, Ubuntu 18.04, and Ubuntu 20.04, you could modify these settings.<\/p>\n<h5>Toggle Between Profiles<\/h5>\n<p>With these launch profiles, you can easily switch back and forth between your target distributions, all without leaving the comfort of Visual Studio.<\/p>\n<p><figure id=\"attachment_231107\" aria-labelledby=\"figcaption_attachment_231107\" class=\"wp-caption aligncenter\" ><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GASwitchBackandForth.png\"><img decoding=\"async\" class=\"size-full wp-image-231107\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GASwitchBackandForth.png\" alt=\"Switch Target Distributions in Visual Studio 2019 v16.9 Preview 1\" width=\"266\" height=\"187\" \/><\/a><figcaption id=\"figcaption_attachment_231107\" class=\"wp-caption-text\">Switch Target Distributions in Visual Studio 2019 v16.9 Preview 1<\/figcaption><\/figure><\/p>\n<h4>.NET Productivity<\/h4>\n<h5>Refactoring<\/h5>\n<p>There is now a refactoring that suggests using <strong>\u2018new(\u2026)\u2019<\/strong> in non-contentious scenarios under the\u00a0<strong>Quick Actions and Refactorings<\/strong> menu. Select <strong>Use \u2018new(\u2026)\u2019 <\/strong>to give this a try.<\/p>\n<p><figure id=\"attachment_231104\" aria-labelledby=\"figcaption_attachment_231104\" class=\"wp-caption aligncenter\" ><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GANETProd2.png\"><img decoding=\"async\" class=\"size-large wp-image-231104\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GANETProd2-1024x397.png\" alt=\"'new(...) Refactoring in Visual Studio 2019 v16.9 Preview 1\" width=\"640\" height=\"248\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GANETProd2-1024x397.png 1024w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GANETProd2-300x116.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GANETProd2-768x298.png 768w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GANETProd2.png 1248w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/a><figcaption id=\"figcaption_attachment_231104\" class=\"wp-caption-text\">&#8216;new(&#8230;) Refactoring in Visual Studio 2019 v16.9 Preview 1<\/figcaption><\/figure><\/p>\n<p>Additionally, from the same menu, there is a code fix that removes redundant equality expressions for both C# and Visual Basic. This is found under the\u00a0<strong>Remove redundant equality\u00a0<\/strong>menu choice.<\/p>\n<p><figure id=\"attachment_231105\" aria-labelledby=\"figcaption_attachment_231105\" class=\"wp-caption aligncenter\" ><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GANETProd3.png\"><img decoding=\"async\" class=\"size-full wp-image-231105\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GANETProd3.png\" alt=\"Remove Redundant Equality in Visual Studio 2019 v16.9 Preview 1\" width=\"621\" height=\"261\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GANETProd3.png 621w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GANETProd3-300x126.png 300w\" sizes=\"(max-width: 621px) 100vw, 621px\" \/><\/a><figcaption id=\"figcaption_attachment_231105\" class=\"wp-caption-text\">Remove Redundant Equality in Visual Studio 2019 v16.9 Preview 1<\/figcaption><\/figure><\/p>\n<p>.NET Code Style (IDE) analyzers can now be enforced on build. You can either install the .NET Code Style analyzers as a NuGet package for <a href=\"https:\/\/www.nuget.org\/packages\/Microsoft.CodeAnalysis.CSharp.CodeStyle\/\">C#<\/a> and <a href=\"https:\/\/www.nuget.org\/packages\/Microsoft.CodeAnalysis.VisualBasic.CodeStyle\/\">Visual Basic,<\/a> or you can enable them in <strong>Project Properties<\/strong>. The <strong>Project Properties <\/strong>option can be found with a right-click on a project within Solution Explorer under <strong>Properties<\/strong>. From there, the <strong>Code Analysis<\/strong> tab gives you the option to select <strong>Enforce CodeStyle on build (experimental)<\/strong>.<\/p>\n<p><figure id=\"attachment_231102\" aria-labelledby=\"figcaption_attachment_231102\" class=\"wp-caption aligncenter\" ><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GANETCodeStyle.png\"><img decoding=\"async\" class=\"size-full wp-image-231102\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GANETCodeStyle.png\" alt=\".NET Code Style IDE Analyzers in Visual Studio 2019 v16.9 Preview 1\" width=\"454\" height=\"311\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GANETCodeStyle.png 454w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GANETCodeStyle-300x206.png 300w\" sizes=\"(max-width: 454px) 100vw, 454px\" \/><\/a><figcaption id=\"figcaption_attachment_231102\" class=\"wp-caption-text\">.NET Code Style IDE Analyzers in Visual Studio 2019 v16.9 Preview 1<\/figcaption><\/figure><\/p>\n<p>In 16.8 Preview 2 we added <a href=\"https:\/\/docs.microsoft.com\/visualstudio\/ide\/reference\/options-text-editor-csharp-advanced#editor-help\">inline parameter name hints<\/a> that inserts adornments for literals, cast literals, and object instantiations prior to each argument in function calls. In this release we added a couple more enhancement and customization options:<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Inline type hints for variables with inferred types and lambda parameter types.<\/li>\n<li>An option to disable inline parameter name hints when parameter names match the method\u2019s intent and when parameter names differ only by suffix.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>These options are found under <strong>Tools<\/strong> &gt; <strong>Options<\/strong> &gt; <strong>Text Editor<\/strong> &gt; <strong>C# <\/strong>or<strong> Basic<\/strong> &gt; <strong>Advanced.\u00a0<\/strong>Select <strong>Display inline parameter name hints (experimental)<\/strong> to give this a try.<\/p>\n<h4>C++<\/h4>\n<p>We have implemented the <a href=\"https:\/\/wg21.link\/p0784\">More Constexpr Containers<\/a> proposal, which allows destructors and new expressions to be <strong>constexpr<\/strong>. This paves the way for utilities like <strong>constexpr std::vector<\/strong> and <strong>std::string<\/strong>. Included in our implementation are compiler diagnostics for uses which trigger undefined behavior.<\/p>\n<p>We are continuing our progress on Address Sanitizer support for MSVC on Windows with the following improvements in Visual Studio 16.9 Preview 1:<\/p>\n<ul>\n<li>Support for global C variables is now available in the MSVC linker<\/li>\n<li><strong>__declspec(no_sanitize_address)<\/strong> support now available, making it possible to opt out of running the address sanitizer over specific variables or even entire functions.<\/li>\n<\/ul>\n<p>In our <a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/asan-for-windows-x64-and-debug-build-support\">earlier blog post<\/a> on the C++ Team Blog, we called out an upcoming improvement to automatically link ASan libraries so that developers do not need to link them manually when creating an .EXE or .DLL from the command line.<\/p>\n<p>We are also continuing to work on additional IntelliSense support for C++20 modules. There is functionality for things you would expect such as <strong>Go To Definition<\/strong>, and <strong>member completion<\/strong>. You can also use the new <strong>Go To Module<\/strong> feature to navigate from an import statement to the relevant module interface. Keep in mind that IntelliSense doesn\u2019t yet support most STL headers imported as header units.<\/p>\n<p><figure id=\"attachment_231106\" aria-labelledby=\"figcaption_attachment_231106\" class=\"wp-caption aligncenter\" ><a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GAQuickActions.png\"><img decoding=\"async\" class=\"size-full wp-image-231106\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GAQuickActions.png\" alt=\"IntelliSense Support for C++20 Modules in Visual Studio 2019 v16.9 Preview 1\" width=\"500\" height=\"253\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GAQuickActions.png 500w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/11\/168GAQuickActions-300x152.png 300w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/a><figcaption id=\"figcaption_attachment_231106\" class=\"wp-caption-text\">IntelliSense Support for C++20 Modules in Visual Studio 2019 v16.9 Preview 1<\/figcaption><\/figure><\/p>\n<h2>Version 16.9: Our Next Servicing Baseline<\/h2>\n<p>When version 16.9 moves to the release channel later this year, it will be the fourth \u201c<a href=\"https:\/\/docs.microsoft.com\/en-us\/visualstudio\/productinfo\/vs-servicing-vs\">servicing baseline<\/a>\u201d for Visual Studio 2019.\u00a0 Servicing baselines provide large organizations increased flexibility over when they can adopt the new features in minor version updates that are included in the Enterprise and Professional editions.\u00a0 Unlike standard minor version releases like 16.8 which receives servicing fixes only until the next minor update is released, we will offer fixes for servicing baselines for 12 months after the next servicing baseline is declared.<\/p>\n<p>As 16.7 is the third servicing baseline, it will continue to receive servicing fixes for one year after version 16.9 releases.\u00a0 Full details can be found at <a href=\"https:\/\/docs.microsoft.com\/en-us\/visualstudio\/productinfo\/vs-servicing-vs\">Visual Studio Product Lifecycle and Servicing<\/a>.<\/p>\n<h3>One Last Note<\/h3>\n<p>Once again, let me take a moment to express how much we appreciate your active involvement in our community. There is great energy in our team about the features coming out to offer better productivity and cloud integration.\u00a0 We hope you share our excitement and are waiting eagerly for your feedback on Developer Community.\u00a0 Until our next release, we wish you all the best.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>There are many features landing in this version of Visual Studio 2019 v16.8 and v16.9 Preview 1. Check out our new Git Integration Features, .NET productivity enhancements, C++20 Library Options, and XAML Data Binding.  Try it today!<\/p>\n","protected":false},"author":4513,"featured_media":231073,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[155],"tags":[],"class_list":["post-231049","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-visual-studio"],"acf":[],"blog_post_summary":"<p>There are many features landing in this version of Visual Studio 2019 v16.8 and v16.9 Preview 1. Check out our new Git Integration Features, .NET productivity enhancements, C++20 Library Options, and XAML Data Binding.  Try it today!<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/posts\/231049","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\/4513"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/comments?post=231049"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/posts\/231049\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/media\/231073"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/media?parent=231049"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/categories?post=231049"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/tags?post=231049"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}