{"id":230670,"date":"2020-09-22T08:14:26","date_gmt":"2020-09-22T15:14:26","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/visualstudio\/?p=230670"},"modified":"2020-09-22T08:14:26","modified_gmt":"2020-09-22T15:14:26","slug":"visual-studio-2019-v16-8-preview-3-1","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/visualstudio\/visual-studio-2019-v16-8-preview-3-1\/","title":{"rendered":"New Features in Visual Studio 2019 v16.8 Preview 3.1"},"content":{"rendered":"<p>In conjunction with <a href=\"https:\/\/www.microsoft.com\/ignite\">Ignite 2020<\/a>, we are releasing Visual Studio 2019 v16.8 Preview 3.1. Our events always bring an excitement to our team as we launch new functionality to our product. In this release, we are giving you access to improvements in Git Integration, C++20 conformance, .NET Productivity, Web Tools, and XAML .\u00a0 We can\u2019t wait to hear how these features impact your work for the better. Equally, we love to hear how we can strive for constant improvement through our <a href=\"https:\/\/developercommunity.visualstudio.com\/\">Developer Community<\/a>.<\/p>\n<p>While taking in one of our free Ignite 2020 sessions, why not download our latest Preview release and give some of these new features a try?<\/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\/preview\" target=\"_blank\">Install Visual Studio 2019 v16.8 Preview 3.1<\/a><\/div><\/p>\n<h3>GitHub Codespaces for Visual Studio<\/h3>\n<p><a href=\"https:\/\/aka.ms\/codespaces-signup\">GitHub Codespaces for Visual Studio is now available<\/a> as a limited beta in Visual Studio 2019 Preview 3.1. This gives you an instant cloud development environment that lets you code from anywhere. You can use the features you love from Visual Studio 2019 in a codespace to develop, test, and deploy modern apps including ASP.NET Core web apps, .NET Core, CMake, and C++ console \/ library apps. GitHub Codespaces for Visual Studio is available to a subset of GitHub users that sign-up while in limited beta. Over time, more users will get access based on availability and sign up date.<\/p>\n<p><div  class=\"d-flex justify-content-center\"><a class=\"cta_button_link btn-primary mb-24\" href=\"https:\/\/aka.ms\/codespaces-signup\" target=\"_blank\">Sign-up to try GitHub Codespaces for Visual Studio<\/a><\/div><\/p>\n<p><figure id=\"attachment_230678\" aria-labelledby=\"figcaption_attachment_230678\" class=\"wp-caption aligncenter\" ><img decoding=\"async\" class=\"wp-image-230678 size-full\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31CreateGitHubCodeSpaces.png\" alt=\"Create GitHub Codespaces from Visual Studio 2019\" width=\"1238\" height=\"423\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31CreateGitHubCodeSpaces.png 1238w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31CreateGitHubCodeSpaces-300x103.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31CreateGitHubCodeSpaces-1024x350.png 1024w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31CreateGitHubCodeSpaces-768x262.png 768w\" sizes=\"(max-width: 1238px) 100vw, 1238px\" \/><figcaption id=\"figcaption_attachment_230678\" class=\"wp-caption-text\">Create GitHub Codespaces from Visual Studio 2019<\/figcaption><\/figure><\/p>\n<p><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW235226251 BCX8\">On a local machine,\u00a0<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW235226251 BCX8\">Visual Studio<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW235226251 BCX8\">\u00a0compete<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW235226251 BCX8\">s<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW235226251 BCX8\">\u00a0<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW235226251 BCX8\">with\u00a0<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW235226251 BCX8\">other apps\u00a0<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW235226251 BCX8\">for\u00a0<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW235226251 BCX8\">resources with limits in<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW235226251 BCX8\">\u00a0CPU<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW235226251 BCX8\">\u00a0and\u00a0<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW235226251 BCX8\">disk<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW235226251 BCX8\">\u00a0<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW235226251 BCX8\">space<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW235226251 BCX8\">.<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW235226251 BCX8\">\u00a0With\u00a0<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SpellingErrorV2 SCXW235226251 BCX8\">C<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SpellingErrorV2 SCXW235226251 BCX8\">odespaces<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW235226251 BCX8\">,\u00a0<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW235226251 BCX8\">many of the\u00a0<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW235226251 BCX8\">CPU intensive\u00a0<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW235226251 BCX8\">operations\u00a0<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW235226251 BCX8\">like\u00a0<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW235226251 BCX8\">loading the\u00a0<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW235226251 BCX8\">solution,\u00a0<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW235226251 BCX8\">building,<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW235226251 BCX8\">\u00a0and debugging\u00a0<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW235226251 BCX8\">are offloaded\u00a0<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW235226251 BCX8\">to\u00a0<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW235226251 BCX8\">the cloud. This <\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW235226251 BCX8\">allows you to <\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW235226251 BCX8\">work on enterprise scale application without\u00a0<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW235226251 BCX8\">impacting\u00a0<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW235226251 BCX8\">y<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW235226251 BCX8\">our<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW235226251 BCX8\">\u00a0local\u00a0<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW235226251 BCX8\">machine\u2019s resources.\u00a0<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW235226251 BCX8\">This <\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW235226251 BCX8\">also<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW235226251 BCX8\">\u00a0allowed us to dramatically reduce what we install locally when you\u2019re building apps in a\u00a0<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SpellingErrorV2 SCXW235226251 BCX8\">C<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SpellingErrorV2 SCXW235226251 BCX8\">odespace<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW235226251 BCX8\">.\u00a0<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW235226251 BCX8\">Installing Visual Studio to connect to GitHub\u00a0<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SpellingErrorV2 SCXW235226251 BCX8\">Codespaces<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW235226251 BCX8\">\u00a0takes minutes<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun CommentStart SCXW235226251 BCX8\">.<\/span><\/span><span class=\"TextRun SCXW235226251 BCX8\" lang=\"EN-US\" xml:lang=\"EN-US\" data-contrast=\"auto\"><span class=\"NormalTextRun SCXW235226251 BCX8\">\u00a0<\/span><\/span><span class=\"EOP SCXW235226251 BCX8\" data-ccp-props=\"{&quot;201341983&quot;:0,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<h4>Quick Set-up<\/h4>\n<p><iframe title=\"Visual Studio 2019 - Codespace Install\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/1-J-oZA4RJM?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<p>Whether you are new to the team or on a new machine, getting a full development environment setup from scratch for a project can be challenging. Getting the configuration for a repository correct takes time. Worse, if something doesn\u2019t work, you\u2019re left wondering if you made a mistake or if the setup steps are out-of-date. Now, you can setup a development environment with a new command line tool called <strong>devinit<\/strong>. This allows you to define dependencies in code through a declarative format that versions with your source so it is always up-to-date in any branch of the code. Devinit supports a range of existing package managers to automatically and repeatably configure dependencies in a codespace. We&#8217;ve put together some resources so you can <a href=\"https:\/\/aka.ms\/devinit\/docs\">learn more about how to use devinit<\/a>.<\/p>\n<p><iframe title=\"devinit - Ignite Demo\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/oEsLZZaNZXA?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<h3>Git Integration<\/h3>\n<p>We have been expanding and improving the support for Git source control workflows, with the new Git tools. In this latest preview, you can create new branches from Azure DevOps Work Items using the new \u2018create branch\u2019 dialog. Just go to the Work Items panel from Team Explorer and right click a work item to create a new branch from it.<\/p>\n<p><figure id=\"attachment_230693\" aria-labelledby=\"figcaption_attachment_230693\" class=\"wp-caption aligncenter\" ><img decoding=\"async\" class=\"wp-image-230693 size-full\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/16831CreateNewBranchFromWI.png\" alt=\"Create a New Branch from a Work Item\" width=\"696\" height=\"730\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/16831CreateNewBranchFromWI.png 696w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/16831CreateNewBranchFromWI-286x300.png 286w\" sizes=\"(max-width: 696px) 100vw, 696px\" \/><figcaption id=\"figcaption_attachment_230693\" class=\"wp-caption-text\">Create a New Branch from a Work Item<\/figcaption><\/figure><\/p>\n<p>You also now have available a list of local Git repositories that Visual Studio detects and adds to the Git menu when you open a project, solution, or just a folder. You can also directly clone a repository and it gets added to this list. Selecting a repository from this menu opens the Git context in Visual Studio. You can then go to Solution Explorer to load the solution or folder you want.<\/p>\n<p><figure id=\"attachment_230681\" aria-labelledby=\"figcaption_attachment_230681\" class=\"wp-caption aligncenter\" ><img decoding=\"async\" class=\"size-large wp-image-230681\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31ListofRepos-1024x544.png\" alt=\"List of Local Repositories in Git Menu\" width=\"640\" height=\"340\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31ListofRepos-1024x544.png 1024w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31ListofRepos-300x159.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31ListofRepos-768x408.png 768w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31ListofRepos.png 1430w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><figcaption id=\"figcaption_attachment_230681\" class=\"wp-caption-text\">List of Local Repositories in Git Menu in Visual Studio 2019<\/figcaption><\/figure><\/p>\n<p>In addition, we\u2019ve changed the default source control provider to Git, which is active when you install Visual Studio for the first time. It was previously TFVC. So now you will get the Git menu and tool windows available in your first launch without having to go to <em>Tools \u2013 Options \u2013 Source control<\/em> to change the setting.<\/p>\n<h3>C++<\/h3>\n<p>The C++ team is excited to announce that they&#8217;ve improved support for major C++20 features across the compiler, standard library, and IDE. You can now use Modules, Concepts, Coroutines, and (some of) Ranges all in the same project!<\/p>\n<p>The work we&#8217;ve been doing around <strong>C++20 Coroutines<\/strong> is now complete and available under <strong>\/std:c++latest<\/strong>. When using C++20 Coroutines you should include the &lt;coroutine&gt; header. Support for our legacy behavior is available under &lt;experimental\/coroutine&gt; and the \/await switch. Read more details in our <a href=\"https:\/\/aka.ms\/cpp\/20coro\">C++20 Coroutines blogpost<\/a>.\u00a0 Also available under the <strong>\/std:c++latest<\/strong> are feature-complete<strong> C++20 Modules<\/strong>. This includes header units and experimental MSBuild support. What makes this exciting is that this will work out your module dependencies automatically and ensure they are built in the right order. Far more details are available in the team&#8217;s\u00a0 <a href=\"https:\/\/aka.ms\/cpp\/20modules\">C++20 Modules blog post<\/a>.<\/p>\n<p>Also landing in this release is support for the majority of <strong>C++20 Ranges<\/strong>. The big highlights are support for most of the range-based algorithms. Though, rest assured, we are still working tirelessly to complete the remaining. Feel free to track our progress on <a href=\"https:\/\/github.com\/microsoft\/STL\/issues\/39\">this GitHub issue<\/a>.<\/p>\n<h4>STL Features and Optimizations<\/h4>\n<p>Outside of Ranges, this release brings several new STL features and optimizations. Some 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> 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>As always, we document all of the STL updates in our <a href=\"https:\/\/github.com\/microsoft\/STL\/wiki\/Changelog#expected-in-vs-2019-168-preview-3\">Changelog<\/a>.<\/p>\n<p>IntelliSense now 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_230687\" aria-labelledby=\"figcaption_attachment_230687\" class=\"wp-caption aligncenter\" ><img decoding=\"async\" class=\"size-full wp-image-230687\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31TrivialSpecialMember.png\" alt=\"Intellisense Support for C++20&lt;concepts&gt; and &lt;ranges&gt;\" width=\"338\" height=\"241\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31TrivialSpecialMember.png 338w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31TrivialSpecialMember-300x214.png 300w\" sizes=\"(max-width: 338px) 100vw, 338px\" \/><figcaption id=\"figcaption_attachment_230687\" class=\"wp-caption-text\">Intellisense Support for C++20 in Visual Studio 2019<\/figcaption><\/figure><\/p>\n<p>We do have a <a href=\"https:\/\/developercommunity.visualstudio.com\/content\/problem\/1175212\/intellisense-crashes-while-processing-some-constra.html\">known issue<\/a> that we expect to address in Visual Studio 2019 v16.8 Preview 4.<\/p>\n<p>While we are on IntelliSense, we&#8217;ve added new warnings and quick-fixes based on an IntelliSense-driven code linter. Use <strong>Tools&gt;Options&gt;Text Editor&gt;C\/C++-&gt;CodeStyle-&gt;Linter + Fixups <\/strong>to configure this to your liking. 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_230690\" aria-labelledby=\"figcaption_attachment_230690\" class=\"wp-caption aligncenter\" ><img decoding=\"async\" class=\"size-full wp-image-230690\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31Warnings2.png\" alt=\"IntelliSense-Driven Code Linter in the Editor of Visual Studio 2019\" width=\"602\" height=\"128\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31Warnings2.png 602w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31Warnings2-300x64.png 300w\" sizes=\"(max-width: 602px) 100vw, 602px\" \/><figcaption id=\"figcaption_attachment_230690\" class=\"wp-caption-text\">IntelliSense-Driven Code Linter in the Editor of Visual Studio 2019<\/figcaption><\/figure><\/p>\n<p>Our code analysis tools now support the SARIF 2.1 standard: the industry standard static analysis log format. Behind the scenes, SARIF 2.1 powers the MSVC code analysis experience in Visual Studio, including error list population in both regular and background code analysis runs, green squiggles and fix-its. 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<h4>C11 and C17 Support<\/h4>\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>It is important to mention 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<h4>Debug Linux Core Dumps<\/h4>\n<p>If you run a &#8220;Windows shop&#8221;, but deploy to Linux servers, you may find this next feature quite exciting.\u00a0 You can now debug Linux core dumps on a remote Linux system or WSL directly from Visual Studio. This will help you diagnose crashes in a familiar environment.<\/p>\n<p><figure id=\"attachment_230677\" aria-labelledby=\"figcaption_attachment_230677\" class=\"wp-caption aligncenter\" ><img decoding=\"async\" class=\"size-full wp-image-230677\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P3DebugLinuxCPP.png\" alt=\"Debug Linux Core Dump on a Remote Linux System from Visual Studio 2019\" width=\"548\" height=\"282\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P3DebugLinuxCPP.png 548w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P3DebugLinuxCPP-300x154.png 300w\" sizes=\"(max-width: 548px) 100vw, 548px\" \/><figcaption id=\"figcaption_attachment_230677\" class=\"wp-caption-text\">Debug Linux Core Dump on a Remote Linux System from Visual Studio 2019<\/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. The warning in the toolbar will now give a clear error telling you about the missing tools in the error view.<\/p>\n<p>Here are a couple of examples of what you&#8217;ll see in Visual Studio 2019 v16.8 Preview 3.1:<\/p>\n<p><figure id=\"attachment_230689\" aria-labelledby=\"figcaption_attachment_230689\" class=\"wp-caption aligncenter\" ><img decoding=\"async\" class=\"size-full wp-image-230689\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31Warnings.png\" alt=\"Example of Improved Error Reporting \" width=\"442\" height=\"32\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31Warnings.png 442w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31Warnings-300x22.png 300w\" sizes=\"(max-width: 442px) 100vw, 442px\" \/><figcaption id=\"figcaption_attachment_230689\" class=\"wp-caption-text\">Example of Improved Error Reporting in Visual Studio 2019<\/figcaption><\/figure><\/p>\n<p>Or<\/p>\n<p><figure id=\"attachment_230688\" aria-labelledby=\"figcaption_attachment_230688\" class=\"wp-caption aligncenter\" ><img decoding=\"async\" class=\"size-full wp-image-230688\" 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\" \/><figcaption id=\"figcaption_attachment_230688\" class=\"wp-caption-text\">Another Example of Error Reporting Improvements in Visual Studio 2019<\/figcaption><\/figure><\/p>\n<p>Wrapping up our features from the C++ team, the addition of <a href=\"http:\/\/wg21.link\/P0848R3\">Conditionally trivial special member functions<\/a> are now supported in MSVC. And finally, we have upgraded the version of CMake shipped with Visual Studio to CMake 3.18. This will enable you to use their new CMake profiling feature, and more. Read more in <a href=\"https:\/\/cmake.org\/cmake\/help\/latest\/release\/3.18.html\">the team release notes<\/a>.<\/p>\n<h3>.NET Productivity<\/h3>\n<p>.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>. Code analysis is enabled, by default, for projects that target .NET 5.0 or later.\u00a0 We have added the ability to enable code analysis on projects that target earlier .NET versions by setting the <a href=\"https:\/\/docs.microsoft.com\/dotnet\/core\/project-sdk\/msbuild-props#enablenetanalyzers\">EnableNETAnalyzers<\/a> property to <em>true<\/em>. On the flip side, you can disable code analysis for your project by setting <em>EnableNETAnalyzers<\/em> to <em>false<\/em>. Another means of accomplishing the same is to use the <strong>Project Properties <\/strong>toggle. To access the <strong>Project Properties <\/strong>right-click on a project within Solution Explorer and select <strong>Properties<\/strong>. Next, select the <strong>Code Analysis<\/strong> tab where you can either select or clear the checkbox to <strong>Enable .NET analyzers<\/strong>.<\/p>\n<p><figure id=\"attachment_230683\" aria-labelledby=\"figcaption_attachment_230683\" class=\"wp-caption aligncenter\" ><img decoding=\"async\" class=\"size-large wp-image-230683\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168p31NETEnableAnalyzers-1024x572.png\" alt=\"Enabling .NET Analyzers in Visual Studio 2019\" width=\"640\" height=\"358\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168p31NETEnableAnalyzers-1024x572.png 1024w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168p31NETEnableAnalyzers-300x167.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168p31NETEnableAnalyzers-768x429.png 768w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168p31NETEnableAnalyzers.png 1100w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><figcaption id=\"figcaption_attachment_230683\" class=\"wp-caption-text\">Enabling .NET Analyzers in Visual Studio 2019<\/figcaption><\/figure><\/p>\n<h4>Inline Method Refactoring<\/h4>\n<p>There is now an inline method refactoring that 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. Place your cursor on the usage of the method. Press (<strong>Ctrl<\/strong>+<strong>.<\/strong>) to trigger the <strong>Quick Actions and Refactorings<\/strong> menu. Next select from one of the following options:<\/p>\n<p>Select <strong>Inline &lt;QualifiedMethodName&gt;<\/strong> to remove the inline method declaration:<\/p>\n<p><figure id=\"attachment_230686\" aria-labelledby=\"figcaption_attachment_230686\" class=\"wp-caption aligncenter\" ><img decoding=\"async\" class=\"size-large wp-image-230686\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31NETSelectInline-1024x418.png\" alt=\"Inline Qualified Method Refactoring in Visual Studio 2019\" width=\"640\" height=\"261\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31NETSelectInline-1024x418.png 1024w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31NETSelectInline-300x122.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31NETSelectInline-768x313.png 768w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31NETSelectInline.png 1358w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><figcaption id=\"figcaption_attachment_230686\" class=\"wp-caption-text\">Inline Qualified Method Refactoring in Visual Studio 2019<\/figcaption><\/figure><\/p>\n<p>Select <strong>Inline and keep<\/strong> <strong>&lt;QualifiedMethodName&gt; <\/strong>to preserve the original method declaration:<\/p>\n<p><figure id=\"attachment_230684\" aria-labelledby=\"figcaption_attachment_230684\" class=\"wp-caption aligncenter\" ><img decoding=\"async\" class=\"wp-image-230684 size-large\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31NETInlineandKeep-1024x409.png\" alt=\"Inline and Keep Method Refactoring in Visual Studio 2019\" width=\"640\" height=\"256\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31NETInlineandKeep-1024x409.png 1024w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31NETInlineandKeep-300x120.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31NETInlineandKeep-768x307.png 768w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31NETInlineandKeep.png 1321w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><figcaption id=\"figcaption_attachment_230684\" class=\"wp-caption-text\">Inline and Keep Method Refactoring in Visual Studio 2019<\/figcaption><\/figure><\/p>\n<p>The same <strong>Quick Actions and Refactorings <\/strong>menu has the option for the new C# 9 `not` pattern matching syntax when a suppression operator is present. Again, use (<strong>Ctrl<\/strong>+<strong>.<\/strong>) to trigger the menu and select <strong>Use pattern matching<\/strong>.<\/p>\n<p><figure id=\"attachment_230685\" aria-labelledby=\"figcaption_attachment_230685\" class=\"wp-caption aligncenter\" ><img decoding=\"async\" class=\"size-large wp-image-230685\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31NETPatternMatching-1024x387.png\" alt=\"Using Pattern Matching in Visual Studio 2019\" width=\"640\" height=\"242\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31NETPatternMatching-1024x387.png 1024w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31NETPatternMatching-300x113.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31NETPatternMatching-768x290.png 768w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31NETPatternMatching.png 1266w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><figcaption id=\"figcaption_attachment_230685\" class=\"wp-caption-text\">Using Pattern Matching in Visual Studio 2019<\/figcaption><\/figure><\/p>\n<p>Finally from this team, creating a new C# or Visual Basic files from a template respects <a href=\"https:\/\/docs.microsoft.com\/visualstudio\/ide\/editorconfig-code-style-settings-reference?#example-editorconfig-file\">EditorConfig<\/a> code style settings. The following code styles will automatically get applied when creating new files: file headers, sort using directives, and place using directives inside\/outside namespaces.<\/p>\n<h3>Debugger<\/h3>\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 exactly mirrored production and then installing a set of tools for the analysis. Thankfully with Visual Studio 2019 16.8 preview 3.1 you can simply drag and drop a managed Linux core dump directly into your IDE and immediately start debugging.<\/p>\n<p><figure id=\"attachment_230682\" aria-labelledby=\"figcaption_attachment_230682\" class=\"wp-caption aligncenter\" ><img decoding=\"async\" class=\"size-full wp-image-230682\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31ManagedLinuxCoreDump.png\" alt=\"Debugging a Managed Linux Core Dump File\" width=\"624\" height=\"312\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31ManagedLinuxCoreDump.png 624w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31ManagedLinuxCoreDump-300x150.png 300w\" sizes=\"(max-width: 624px) 100vw, 624px\" \/><figcaption id=\"figcaption_attachment_230682\" class=\"wp-caption-text\">Debugging a Managed Linux Core Dump File in Visual Studio 2019<\/figcaption><\/figure><\/p>\n<h3>XAML Experiences<\/h3>\n<p><strong>XAML Binding Failures diagnostic improvements<\/strong><\/p>\n<p>Developers working on WPF, UWP, WinUI and Xamarin.Forms projects must often detect and resolve XAML data binding failures in their applications. To improve the diagnostic tooling in this scenario we\u2019ve added two new experiences to Visual Studio 2019 (16.8 Preview 3.1+) and both are now on by default for our Preview customers.<\/p>\n<p>Details:<\/p>\n<ul>\n<li><strong>XAML Binding Failure Indicator Icon<\/strong> is now present in the in-app toolbar for WPF and UWP projects. This 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.\n<p><figure id=\"attachment_230691\" aria-labelledby=\"figcaption_attachment_230691\" class=\"wp-caption aligncenter\" ><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\" \/><figcaption id=\"figcaption_attachment_230691\" class=\"wp-caption-text\">XAML Binding Failure Indicator Icon in Visual Studio 2019<\/figcaption><\/figure><\/li>\n<li><strong>New<\/strong><strong> XAML Binding Failures window<\/strong> is now 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\u2019ve 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 copyable through a right-click menu option. (note: requires Xamarin version 5.0.266-pre3 or higher)\n<p><figure id=\"attachment_230692\" aria-labelledby=\"figcaption_attachment_230692\" class=\"wp-caption aligncenter\" ><img decoding=\"async\" class=\"size-large wp-image-230692\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31XAMLToolingImprovements-1024x832.png\" alt=\"New XAML Binding Failures Window in Visual Studio 2019\" width=\"640\" height=\"520\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31XAMLToolingImprovements-1024x832.png 1024w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31XAMLToolingImprovements-300x244.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31XAMLToolingImprovements-768x624.png 768w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/09\/168P31XAMLToolingImprovements.png 1280w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><figcaption id=\"figcaption_attachment_230692\" class=\"wp-caption-text\">New XAML Binding Failures Window in Visual Studio 2019<\/figcaption><\/figure><\/li>\n<\/ul>\n<p><strong>Other XAML Tooling Improvements<\/strong><\/p>\n<p>We\u2019ve also released many other new XAML features in previous 16.8 preview releases including updating XAML Hot Reload settings UI, XAML Hot Reload support Xamarin.Forms projects targeting UWP and improved MVVM tooling to help you set a XAML documents d:DataContext through IntelliSense. For details on these additional features see the full <a href=\"https:\/\/docs.microsoft.com\/en-us\/visualstudio\/releases\/2019\/release-notes-preview\">release notes<\/a>.<\/p>\n<h4>A sneak peek of what\u2019s coming next: Fakes code coverage support in .NET Core<\/h4>\n<p>With the release of .NET Core support for Fakes in Visual Studio 16.6 many users are eagerly awaiting code coverage support for Fakes in .NET Core as well. We are hoping to land this support in the 16.9 update on windows only, here is the sneak peek.<\/p>\n<p>This required enabling the Visual Studio built-in dynamic code coverage to use the open source CLR instrumentation engine. This is also an exciting first step to providing a cross platform solution for dynamic code coverage eventually.<\/p>\n<p><iframe title=\"Fakes Code Coverage support in .NET Core\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/Zdp4EvwXuDw?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe><\/p>\n<h3>Enjoy Ignite 2020 and Visual Studio 2019 v16.8 Preview 3.1<\/h3>\n<p>Once again, we are constantly moving forward with greater functionality with our features. While enjoying Ignite, please Download Visual Studio 2019 v16.8 Preview 3.1 to give them a try. Let us know how we are doing as your input is of the greatest value to our teams.<\/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\/preview\" target=\"_blank\">Install Visual Studio 2019 v16.8 Preview 3.1<\/a><\/div><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Visual Studio 2019 v16.8 Preview 3.1 gives you improvements in Git Integration, C++20 conformance, .NET Productivity, Web Tools, and XAML .\u00a0Plus, you can sign-up for our new Visual Studio Codespaces.<\/p>\n","protected":false},"author":4513,"featured_media":230679,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[155],"tags":[237,354,9,526,12,475,353,133],"class_list":["post-230670","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-visual-studio","tag-net","tag-announcement","tag-debug","tag-productivity","tag-visual-studio","tag-visual-studio-2019","tag-xamarin","tag-xaml"],"acf":[],"blog_post_summary":"<p>Visual Studio 2019 v16.8 Preview 3.1 gives you improvements in Git Integration, C++20 conformance, .NET Productivity, Web Tools, and XAML .\u00a0Plus, you can sign-up for our new Visual Studio Codespaces.<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/posts\/230670","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=230670"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/posts\/230670\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/media\/230679"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/media?parent=230670"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/categories?post=230670"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/tags?post=230670"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}