{"id":230136,"date":"2020-08-05T11:27:50","date_gmt":"2020-08-05T18:27:50","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/visualstudio\/?p=230136"},"modified":"2020-08-06T10:08:36","modified_gmt":"2020-08-06T17:08:36","slug":"visual-studio-2019-v16-7-releases","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/visualstudio\/visual-studio-2019-v16-7-releases\/","title":{"rendered":"Visual Studio 2019 v16.7 and v16.8 Preview 1 Release Today!"},"content":{"rendered":"<p>Today we are excited to announce the release of Visual Studio 2019 version 16.7 and Visual Studio 2019 version 16.8 Preview 1.\u00a0 Each of these releases have features we have been working hard to deliver.\u00a0 <a href=\"https:\/\/visualstudio.microsoft.com\/vs\/\">Install version 16.7<\/a> to start using our highlight improvements. Included in this list are Git integration including a new merge editor and easy conflict resolution, WPF design-time data, C++ support for 64-bit projects and debug builds, and additional IntelliSense functionality. In addition, Visual Studio 2019 v16.7 is our next long-term<a href=\"https:\/\/docs.microsoft.com\/en-us\/visualstudio\/releases\/2019\/servicing\"> servicing release<\/a>.\u00a0 In conjunction, we are releasing Visual Studio 2019 v16.8 Preview 1 which you can <a href=\"https:\/\/visualstudio.microsoft.com\/vs\/preview\">install from our download site<\/a>.\u00a0 Our Preview version brings you pre-release functionality of the Git Repository window for easier navigation and more uses for the Quick Actions and Refactoring menu. We&#8217;ve provided additional highlights of what&#8217;s new below, yet additional information can be found in our <a href=\"https:\/\/docs.microsoft.com\/en-us\/visualstudio\/releases\/2019\/release-notes\">release notes<\/a>.<\/p>\n<p><span style=\"font-size: 1rem;\">As always, we love to hear your feedback. <\/span><a style=\"background-color: #f7f7f9; font-size: 1rem;\" href=\"https:\/\/developercommunity.visualstudio.com\/\">Developer Community<\/a><span style=\"font-size: 1rem;\"> is the best venue to share your experiences so we can continue to learn how these features impact your work, both positively and negatively. Through this portal, we can have more in-depth conversation around future features.<\/span><\/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<\/a><\/div><\/p>\n<h3>New in Visual Studio 2019 v16.7<\/h3>\n<h5>Git Integration<\/h5>\n<div>For this release, if you haven&#8217;t tried the new Git user experience yet, you can turn it on from the <strong>Preview Features pane of Tools &gt; Options<\/strong>.<\/div>\n<div><\/div>\n<p>We&#8217;ve revamped the Visual Studio merge editor by decoupling it from Team Foundation Version Control and focusing it on Git. A new gold info bar at the top of a file will tell you when there are merge conflicts needing manual resolution.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-229808\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/image-of-merge-editor-gold-info-bar.png\" alt=\"Image image of merge editor gold info bar\" width=\"2454\" height=\"558\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/image-of-merge-editor-gold-info-bar.png 2454w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/image-of-merge-editor-gold-info-bar-300x68.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/image-of-merge-editor-gold-info-bar-1024x233.png 1024w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/image-of-merge-editor-gold-info-bar-768x175.png 768w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/image-of-merge-editor-gold-info-bar-1536x349.png 1536w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/image-of-merge-editor-gold-info-bar-2048x466.png 2048w\" sizes=\"(max-width: 2454px) 100vw, 2454px\" \/><\/p>\n<div>Clicking will take you to the merge editor. Based on your feedback, we&#8217;ve modified the titles and captions, clearly indicating incoming and current branch names. This helps distinguish between conflicting branches. In addition, we&#8217;ve reduced the clutter around the zoom margin, health margin, and the toolbar. Now, it is easier to parse conflicts with aligned matching lines, word level differences, and visible whitespace when that is the only difference. You can turn off non-conflicting differences to just focus on the conflicts. You can also resolve add\/add conflicts at the file level now with a two-way merge.<\/div>\n<h5>Git Conflict Resolution<\/h5>\n<p>We have also added a checkbox to resolve all conflicts on one side or the other with a single click.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-229809\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/Image-of-merge-editor.png\" alt=\"Image Image of merge editor\" width=\"3240\" height=\"2100\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/Image-of-merge-editor.png 3240w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/Image-of-merge-editor-300x194.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/Image-of-merge-editor-1024x664.png 1024w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/Image-of-merge-editor-768x498.png 768w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/Image-of-merge-editor-1536x996.png 1536w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/Image-of-merge-editor-2048x1327.png 2048w\" sizes=\"(max-width: 3240px) 100vw, 3240px\" \/><\/p>\n<p>&nbsp;<\/p>\n<h5>Git Repository Window<\/h5>\n<p>To give you a complete full-screen experience to focus on dedicated Git activities, we built the new Git Repository window. From here you can view and manage all the local, remote, and upstream branches in your repository. You can also switch between branches and view the history graph of each branch. Double clicking on a commit will give you more details about it.<\/p>\n<p><figure id=\"attachment_229974\" aria-labelledby=\"figcaption_attachment_229974\" class=\"wp-caption aligncenter\" ><img decoding=\"async\" class=\"wp-image-229974 size-full\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/Git-Repo-window.gif\" alt=\"Image Git Repo window\" width=\"2048\" height=\"1327\" \/><figcaption id=\"figcaption_attachment_229974\" class=\"wp-caption-text\">Git Repo Window in Visual Studio 2019 v16.7<\/figcaption><\/figure><\/p>\n<p>&nbsp;<\/p>\n<p>If you would like to learn more about these improvements, check out the detailed <a href=\"https:\/\/devblogs.microsoft.com\/visualstudio\/exciting-new-updates-to-the-git-experience-in-visual-studio\">Git blog post<\/a>.<\/p>\n<h4>XAML Tools WPF\/UWP<\/h4>\n<p>Coming from our WPF and UWP tooling team are a few important improvements.<\/p>\n<h5>Design-time Data<\/h5>\n<p>First of all, comes design-time data.\u00a0 Before this feature improvement, when adding new controls that are empty or working with controls that get populated with data via data binding at run time, it was hard to see how the end result would look during the design-time experience. That would get especially inconvenient if data binding or the data source didn&#8217;t yet exist. We wanted to give you a way to see your controls filled with data during the design-time development. That&#8217;s why we are introducing a new feature called design-time data. Now, for each XAML property for built-in controls, you can easily set a value visible only in the designer and not compiled into your binaries. To use this functionality, simply put a <strong>d:<\/strong> in front of the property you want to mock, and the designer will do the rest.<\/p>\n<p><figure id=\"attachment_230166\" aria-labelledby=\"figcaption_attachment_230166\" class=\"wp-caption aligncenter\" ><img decoding=\"async\" class=\"size-full wp-image-230166\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GADesignTime.png\" alt=\"Image 167GADesignTime\" width=\"1276\" height=\"54\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GADesignTime.png 1276w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GADesignTime-300x13.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GADesignTime-1024x43.png 1024w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GADesignTime-768x33.png 768w\" sizes=\"(max-width: 1276px) 100vw, 1276px\" \/><figcaption id=\"figcaption_attachment_230166\" class=\"wp-caption-text\">Design-time Data in Visual Studio 2019 v16.7<\/figcaption><\/figure><\/p>\n<p>&nbsp;<\/p>\n<p>This will allow you to see the values from the properties with <strong>d:<\/strong> in the designer. When your application is running, it will have values specified in the same properties without <strong>d:<\/strong>. This technique works for WPF .NET Core and UWP projects for all built-in controls that come with the frameworks. In the future, we are look to add support for third-party and improved custom control improvements.<\/p>\n<h5>XAML Designer Refresh Button<\/h5>\n<p>Next, we introduce the XAML Designer Refresh Button.\u00a0 You no longer need to close and re-open the designer view to resolve rendering issues. You can simply press the refresh button located in the bottom-left icon near the zoom level indicator.<\/p>\n<p><figure id=\"attachment_230165\" aria-labelledby=\"figcaption_attachment_230165\" class=\"wp-caption aligncenter\" ><img decoding=\"async\" class=\"wp-image-230165 size-full\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GADesignerRefreshButton.png\" alt=\"Image 167GADesignerRefreshButton\" width=\"349\" height=\"83\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GADesignerRefreshButton.png 349w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GADesignerRefreshButton-300x71.png 300w\" sizes=\"(max-width: 349px) 100vw, 349px\" \/><figcaption id=\"figcaption_attachment_230165\" class=\"wp-caption-text\">Designer Refresh Button in Visual Studio 2019 v16.7<\/figcaption><\/figure><\/p>\n<p>&nbsp;<\/p>\n<h5>XAML Code Editor<\/h5>\n<p>Finally, the XAML code editor shows color icons next to the color code for WPF. NET Core, WPF .NET Frame work and Xamarin.Forms projects.<\/p>\n<p><figure id=\"attachment_230175\" aria-labelledby=\"figcaption_attachment_230175\" class=\"wp-caption aligncenter\" ><img decoding=\"async\" class=\"wp-image-230175 size-large\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GAXAMLColorIcons-1024x162.png\" alt=\"Image 167GAXAMLColorIcons\" width=\"640\" height=\"101\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GAXAMLColorIcons-1024x162.png 1024w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GAXAMLColorIcons-300x48.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GAXAMLColorIcons-768x122.png 768w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GAXAMLColorIcons-1536x243.png 1536w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GAXAMLColorIcons.png 1743w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><figcaption id=\"figcaption_attachment_230175\" class=\"wp-caption-text\">Color Visualizer in Visual Studio 2019 v16.7<\/figcaption><\/figure><\/p>\n<h4><\/h4>\n<h4>C++<\/h4>\n<h6>Address Sanitizer<\/h6>\n<p>AddressSanitizer is an invaluable tool for finding memory corruption bugs. It has been available for 32-bit x86 projects on Windows since Visual Studio 2019 version 16.4. We have now added support for both 64-bit projects and debug builds! Read our <a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/addresssanitizer-asan-for-windows-with-msvc\/\">initial announcement post to learn how to enable it for your code.<\/a><\/p>\n<p><figure id=\"attachment_230164\" aria-labelledby=\"figcaption_attachment_230164\" class=\"wp-caption aligncenter\" ><img decoding=\"async\" class=\"wp-image-230164 size-full\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GAAddressSanitizerCpp.png\" alt=\"Image 167GAAddressSanitizerCpp\" width=\"904\" height=\"236\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GAAddressSanitizerCpp.png 904w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GAAddressSanitizerCpp-300x78.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GAAddressSanitizerCpp-768x200.png 768w\" sizes=\"(max-width: 904px) 100vw, 904px\" \/><figcaption id=\"figcaption_attachment_230164\" class=\"wp-caption-text\">Address Sanitizer in Visual Studio 2019 v16.7<\/figcaption><\/figure><\/p>\n<p>For those doing remote development on Linux targets, we\u2019ve made a host of improvements.<\/p>\n<h6>Edit and Set Default Remote SSH Connections<\/h6>\n<p>You can now edit and set default remote SSH connections in the Connection Manager. This means you can edit an existing remote connection (e.g. if its IP address changed) and set default connections to be consumed in CMakeSettings.json and launch.vs.json.<\/p>\n<p><figure id=\"attachment_230174\" aria-labelledby=\"figcaption_attachment_230174\" class=\"wp-caption aligncenter\" ><img decoding=\"async\" class=\"wp-image-230174 size-large\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GASSHConnectionManger-1024x646.png\" alt=\"Image 167GASSHConnectionManger\" width=\"640\" height=\"404\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GASSHConnectionManger-1024x646.png 1024w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GASSHConnectionManger-300x189.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GASSHConnectionManger-768x484.png 768w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GASSHConnectionManger.png 1349w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><figcaption id=\"figcaption_attachment_230174\" class=\"wp-caption-text\">SSH Connection Manager in Visual Studio 2019 v16.7<\/figcaption><\/figure><\/p>\n<p>&nbsp;<\/p>\n<h6>Extended Support for Debugging CMake Projects and Linux Distributions and Shells<\/h6>\n<p>We&#8217;ve added first-class support for debugging CMake projects on remote systems with gdbserver. It is especially useful in embedded scenarios where your target system may not have the resources to run gdb.<\/p>\n<p>We\u2019ve also extended our support for different Linux distributions and shells. For example, you can now set the default shell to zsh using <a href=\"https:\/\/docs.microsoft.com\/en-us\/cpp\/linux\/connectionmanager-reference?view=vs-2019\">ConnectionManager.exe<\/a> by setting the new \u201cshell\u201d property.<\/p>\n<p>If you are using MSBuild to build your Linux applications, you can now use Ninja to speed up your incremental builds. You can opt into this feature by setting Enable Incremental Build\u00a0to With Ninja\u00a0in the General Property Page.<\/p>\n<p><figure id=\"attachment_230167\" aria-labelledby=\"figcaption_attachment_230167\" class=\"wp-caption aligncenter\" ><img decoding=\"async\" class=\"size-large wp-image-230167\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GAGeneralProperty-1024x667.png\" alt=\"Image 167GAGeneralProperty\" width=\"640\" height=\"417\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GAGeneralProperty-1024x667.png 1024w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GAGeneralProperty-300x195.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GAGeneralProperty-768x500.png 768w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GAGeneralProperty.png 1242w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><figcaption id=\"figcaption_attachment_230167\" class=\"wp-caption-text\">Enable Incremental Build with Ninja in Visual Studio 2019 v16.7<\/figcaption><\/figure><\/p>\n<p>We\u2019ve implemented a wide range of C++20 features in our STL implementation. Some examples are <a href=\"https:\/\/wg21.link\/P0415R1\">std::bit_cast<\/a>, <a href=\"http:\/\/www.open-std.org\/jtc1\/sc22\/wg21\/docs\/papers\/2018\/p1023r0.pdf\">constexpr std::array comparisons<\/a>, and <a href=\"https:\/\/devblogs.microsoft.com\/cppblog\/initial-support-for-c20-ranges\/\">partial support for Ranges<\/a>. You can find the full list on our <a href=\"https:\/\/github.com\/microsoft\/STL\/wiki\/Changelog\">STL Changelog<\/a>.<\/p>\n<p>C++ IntelliSense has been expanded with initial support for some C++20 features like Concepts and designated initializers.<\/p>\n<p>If you\u2019re using our experimental C++20 modules support, .cppm and .ixx files will be recognized as C++ and treated as such by the colorizer and IntelliSense.<\/p>\n<h4>.NET Productivity<\/h4>\n<h5>IntelliSense Update<\/h5>\n<p>There is now <a href=\"https:\/\/docs.microsoft.com\/visualstudio\/ide\/reference\/datetime-timespan-completion\">IntelliSense completion in DateTime and TimeSpan string literals<\/a>. Place your caret inside the DateTime or TimeSpan string literal and press (<strong>Ctrl<\/strong> + <strong>Space<\/strong>). You will then see completion options and an explanation as to what each character means. Both the date time format and an example will be provided.<\/p>\n<p><figure id=\"attachment_230171\" aria-labelledby=\"figcaption_attachment_230171\" class=\"wp-caption aligncenter\" ><img decoding=\"async\" class=\"wp-image-230171 size-full\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GANETProdIntelliSense.png\" alt=\"Image 167GANETProdIntelliSense\" width=\"1379\" height=\"257\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GANETProdIntelliSense.png 1379w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GANETProdIntelliSense-300x56.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GANETProdIntelliSense-1024x191.png 1024w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GANETProdIntelliSense-768x143.png 768w\" sizes=\"(max-width: 1379px) 100vw, 1379px\" \/><figcaption id=\"figcaption_attachment_230171\" class=\"wp-caption-text\">IntelliSense Completion in DateTime and TimeSpan String Literals in Visual Studio 2019 v16.7<\/figcaption><\/figure><\/p>\n<p>&nbsp;<\/p>\n<h5>IntelliCode Update<\/h5>\n<h5><\/h5>\n<h5><strong>AI-assisted argument completions<\/strong><\/h5>\n<p>For C# developers, in addition to providing member suggestions, IntelliCode also provides <a href=\"https:\/\/docs.microsoft.com\/visualstudio\/intellicode\/intellicode-visual-studio\">AI-assisted IntelliSense <em>argument completion<\/em>.<\/a> This capability stars the most likely argument names that you&#8217;ll use when you call a method and places those suggestions at the top of the completion list. The completion list appears when you start typing inside the parentheses or press <strong>Ctrl<\/strong>+<strong>Space, Space, <\/strong>or <strong>Ctrl + J).<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p><figure id=\"attachment_230273\" aria-labelledby=\"figcaption_attachment_230273\" class=\"wp-caption aligncenter\" ><img decoding=\"async\" class=\"wp-image-230273 size-full\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/08\/argument-completion.png\" alt=\"Intellicode argument completion\" width=\"652\" height=\"311\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/08\/argument-completion.png 652w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/08\/argument-completion-300x143.png 300w\" sizes=\"(max-width: 652px) 100vw, 652px\" \/><figcaption id=\"figcaption_attachment_230273\" class=\"wp-caption-text\">IntelliCode Argument Completion showing starred output as IntelliSense first completion item in Console.WriteLine() in Visual Studio 2019 v16.7<\/figcaption><\/figure><\/p>\n<p>&nbsp;<\/p>\n<h5><strong>IntelliCode suggestions<\/strong><\/h5>\n<p><a href=\"https:\/\/docs.microsoft.com\/visualstudio\/intellicode\/intellicode-suggestions\">IntelliCode suggestions<\/a> assists you when making similar edits in multiple places in your code. For C# developers, it tracks your edits locally, and detects repetition. It then offers to apply those same edits in other places where they might apply. For example, if you have missed locations where a refactoring could be applied, IntelliCode suggestions helps you find those locations and fix them.<\/p>\n<p><figure id=\"attachment_230272\" aria-labelledby=\"figcaption_attachment_230272\" class=\"wp-caption aligncenter\" ><img decoding=\"async\" class=\"wp-image-230272\" style=\"font-size: 1rem;\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/08\/intellicode-suggestions-illustrated.png\" alt=\"Image intellicode suggestions illustrated\" width=\"668\" height=\"247\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/08\/intellicode-suggestions-illustrated.png 1034w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/08\/intellicode-suggestions-illustrated-300x111.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/08\/intellicode-suggestions-illustrated-1024x378.png 1024w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/08\/intellicode-suggestions-illustrated-768x284.png 768w\" sizes=\"(max-width: 668px) 100vw, 668px\" \/><figcaption id=\"figcaption_attachment_230272\" class=\"wp-caption-text\">IntelliCode suggestions example of multiple edit detection when refactoring code in Visual Studio 2019 v16.7<\/figcaption><\/figure><\/p>\n<p>&nbsp;<\/p>\n<p>Suggestions appear as\u00a0<a href=\"https:\/\/docs.microsoft.com\/en-us\/visualstudio\/ide\/quick-actions\" data-linktype=\"absolute-path\">Quick Actions<\/a>\u00a0in Visual Studio editor. IntelliCode suggestions have the Quick Action menu options\u00a0<strong>Apply suggestion<\/strong>\u00a0and\u00a0<strong>Ignore suggestions like this<\/strong>. If you want to use the suggested change, select\u00a0<strong>Apply suggestion<\/strong>.<\/p>\n<h6><\/h6>\n<div class=\"mceTemp\"><\/div>\n<p><figure id=\"attachment_230271\" aria-labelledby=\"figcaption_attachment_230271\" class=\"wp-caption aligncenter\" ><img decoding=\"async\" class=\"wp-image-230271 size-full\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/08\/intellicode-suggestions-apply.png\" alt=\"Image intellicode suggestions apply\" width=\"1462\" height=\"288\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/08\/intellicode-suggestions-apply.png 1462w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/08\/intellicode-suggestions-apply-300x59.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/08\/intellicode-suggestions-apply-1024x202.png 1024w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/08\/intellicode-suggestions-apply-768x151.png 768w\" sizes=\"(max-width: 1462px) 100vw, 1462px\" \/><figcaption id=\"figcaption_attachment_230271\" class=\"wp-caption-text\">IntelliCode suggests replacing code to use the helper function FtoC() based on recent similar edits in Visual Studio 2019 v16.7<\/figcaption><\/figure><\/p>\n<p>&nbsp;<\/p>\n<h5><strong>IntelliCode inferred EditorConfig<\/strong><\/h5>\n<p><a href=\"https:\/\/docs.microsoft.com\/en-us\/visualstudio\/ide\/create-portable-custom-editor-options\" data-linktype=\"absolute-path\">EditorConfig files<\/a> help to keep your code consistent by defining code styles and formats. These conventions allow Visual Studio to offer automatic style and format fixes to clean up your document. For C# developers, you can now use <a href=\"https:\/\/docs.microsoft.com\/visualstudio\/intellicode\/code-style-inference\">IntelliCode<\/a> to infer your code style and formatting conventions to dynamically create an EditorConfig file.<\/p>\n<p>You can add an IntelliCode-generated EditorConfig file at the project or solution level in Visual Studio (or to a solution folder). To add a prepopulated EditorConfig file, right-click on the desired location in <strong>Solution Explorer<\/strong>\u00a0and choose\u00a0<strong>Add<\/strong>\u00a0&gt;\u00a0<strong>New EditorConfig (IntelliCode)<\/strong><\/p>\n<p>&nbsp;<\/p>\n<h5>Quick Actions and Refactorings Menu Update<\/h5>\n<p>You can now add a parameter within the <a href=\"https:\/\/docs.microsoft.com\/visualstudio\/ide\/reference\/change-method-signature\">Change Signature<\/a> dialog. Place your caret at the declaration or usage of a method. Press (<strong>Ctrl<\/strong>+<strong>.<\/strong>) to trigger the <strong>Quick Actions and Refactorings<\/strong> menu. Select <strong>Change signature<\/strong>. Within the <strong>Change Signature<\/strong> dialog select <strong>Add<\/strong> to add a parameter.<\/p>\n<p><figure id=\"attachment_230170\" aria-labelledby=\"figcaption_attachment_230170\" class=\"wp-caption aligncenter\" ><img decoding=\"async\" class=\"size-full wp-image-230170\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GANETProdChangeSignature.png\" alt=\"Image 167GANETProdChangeSignature\" width=\"681\" height=\"493\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GANETProdChangeSignature.png 681w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GANETProdChangeSignature-300x217.png 300w\" sizes=\"(max-width: 681px) 100vw, 681px\" \/><figcaption id=\"figcaption_attachment_230170\" class=\"wp-caption-text\">Add Parameter with Change Signature Dialog in Visual Studio 2019 v16.7<\/figcaption><\/figure><\/p>\n<p>&nbsp;<\/p>\n<h5>Add Parameter<\/h5>\n<p>Once you select <strong>Add,<\/strong> the new <strong>Add Parameter <\/strong>dialog will open. The <strong>Add Parameter<\/strong> dialog allows you to add a type name and a parameter name. You can choose to make the parameter required or optional with a default value. You can then add a value at the call site and choose a named argument for that value or you can introduce a TODO variable. The TODO variable puts a TODO in your code so you can visit each error and go through each call site independently and decide what to pass. For optional parameters you have the option to omit the call site completely.<\/p>\n<p><figure id=\"attachment_230190\" aria-labelledby=\"figcaption_attachment_230190\" class=\"wp-caption aligncenter\" ><img decoding=\"async\" class=\"size-full wp-image-230190\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GAAddParameter.png\" alt=\"Image 167GAAddParameter\" width=\"582\" height=\"466\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GAAddParameter.png 582w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GAAddParameter-300x240.png 300w\" sizes=\"(max-width: 582px) 100vw, 582px\" \/><figcaption id=\"figcaption_attachment_230190\" class=\"wp-caption-text\">Add Parameter Dialog in Visual Studio 2019 v16.7<\/figcaption><\/figure><\/p>\n<p>There is now a warning and code fix when a suppression operator is present but has no effect. A second code fix suggesting the correct negating expression is also available. Place your caret on the suppression operator. Press (<strong>Ctrl<\/strong>+<strong>.<\/strong>) to trigger the <strong>Quick Actions and Refactorings<\/strong> menu. Next, select from one of the following:<\/p>\n<p>To remove the operator completely, select <strong>Remove operator (preserves semantics).<\/strong><\/p>\n<p><figure id=\"attachment_230173\" aria-labelledby=\"figcaption_attachment_230173\" class=\"wp-caption aligncenter\" ><img decoding=\"async\" class=\"size-full wp-image-230173\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GARemoveOperator.png\" alt=\"Image 167GARemoveOperator\" width=\"825\" height=\"276\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GARemoveOperator.png 825w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GARemoveOperator-300x100.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GARemoveOperator-768x257.png 768w\" sizes=\"(max-width: 825px) 100vw, 825px\" \/><figcaption id=\"figcaption_attachment_230173\" class=\"wp-caption-text\">Remove Operator in the Quick Actions and Refactoring Menu in Visual Studio 2019 v16.7<\/figcaption><\/figure><\/p>\n<p>&nbsp;<\/p>\n<p>To negate the expression, select <strong>Negate expression<\/strong> <strong>(change <\/strong><strong>semantics).<\/strong><\/p>\n<p><figure id=\"attachment_230168\" aria-labelledby=\"figcaption_attachment_230168\" class=\"wp-caption aligncenter\" ><img decoding=\"async\" class=\"size-full wp-image-230168\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GANegateExpression.png\" alt=\"Image 167GANegateExpression\" width=\"821\" height=\"271\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GANegateExpression.png 821w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GANegateExpression-300x99.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GANegateExpression-768x254.png 768w\" sizes=\"(max-width: 821px) 100vw, 821px\" \/><figcaption id=\"figcaption_attachment_230168\" class=\"wp-caption-text\">Negate Expression in Visual Studio 2019 v16.7<\/figcaption><\/figure><\/p>\n<p>&nbsp;<\/p>\n<p>You can also negate the expression with the new C# 9 <strong>not<\/strong> pattern if it is available in your project.<\/p>\n<p><figure id=\"attachment_230169\" aria-labelledby=\"figcaption_attachment_230169\" class=\"wp-caption aligncenter\" ><img decoding=\"async\" class=\"size-full wp-image-230169\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GANegateExpression2.png\" alt=\"Image 167GANegateExpression2\" width=\"820\" height=\"272\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GANegateExpression2.png 820w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GANegateExpression2-300x100.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GANegateExpression2-768x255.png 768w\" sizes=\"(max-width: 820px) 100vw, 820px\" \/><figcaption id=\"figcaption_attachment_230169\" class=\"wp-caption-text\">New &#8220;Not&#8221; Pattern Negation in Visual Studio 2019 v16.7<\/figcaption><\/figure><\/p>\n<p>&nbsp;<\/p>\n<h5>Add a Debugger Display Attribute<\/h5>\n<p>There is now a quick action to <a href=\"https:\/\/docs.microsoft.com\/visualstudio\/ide\/reference\/add-debugger-display-attribute\">add a debugger display attribute<\/a> to a class. This allows you to pin properties within the debugger programmatically in your code. Place your caret on the class name. Press (<strong>Ctrl<\/strong>+<strong>.<\/strong>) to trigger the <strong>Quick Actions and Refactorings<\/strong> menu. Select <strong>Add \u2018DebuggerDisplay` attribute. <\/strong>This will add the debugger display attribute to the top of your class and generate an auto method that returns ToString() which you can edit to return the property value you want pinned in the debugger.<\/p>\n<p><figure id=\"attachment_230163\" aria-labelledby=\"figcaption_attachment_230163\" class=\"wp-caption aligncenter\" ><img decoding=\"async\" class=\"size-full wp-image-230163\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GAAddDebuggerDisplay.png\" alt=\"Image 167GAAddDebuggerDisplay\" width=\"761\" height=\"401\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GAAddDebuggerDisplay.png 761w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GAAddDebuggerDisplay-300x158.png 300w\" sizes=\"(max-width: 761px) 100vw, 761px\" \/><figcaption id=\"figcaption_attachment_230163\" class=\"wp-caption-text\">Add a Debugger Display Attribute to a Class in Visual Studio 2019 v16.7<\/figcaption><\/figure><\/p>\n<h5>Profiler<\/h5>\n<p>In Visual Studio 2019 version 16.7, we have added a new .NET <strong>Performance Counters tool<\/strong> the profiler to help you \u00a0visualize and analyze <a href=\"https:\/\/docs.microsoft.com\/en-us\/dotnet\/core\/diagnostics\/dotnet-counters\">dotnet counters<\/a>. Dotnet counters are high level performance metrics such as cpu usage or exception count, that give you insights into how your application is performing. By looking at these metrics, you will be able to more quickly diagnose the type of performance bottleneck your application is facing. To run this tool, select <strong>Debug -&gt; Performance Profiler -&gt; Checkmark .NET Performance Counters <\/strong>within Visual Studio.<\/p>\n<p><figure id=\"attachment_230172\" aria-labelledby=\"figcaption_attachment_230172\" class=\"wp-caption aligncenter\" ><img decoding=\"async\" class=\"size-large wp-image-230172\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GAProfiler-1024x716.png\" alt=\"Image 167GAProfiler\" width=\"640\" height=\"448\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GAProfiler-1024x716.png 1024w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GAProfiler-300x210.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GAProfiler-768x537.png 768w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/167GAProfiler.png 1429w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><figcaption id=\"figcaption_attachment_230172\" class=\"wp-caption-text\">.NET Performance Counters Tool in Visual Studio 2019 v16.7<\/figcaption><\/figure><\/p>\n<p>We heard feedback from you that getting and studying the performance counters was cumbersome using the command line so now you will be able to see the counters right from within Visual Studio. Furthermore, in addition to seeing the value of the counters in a table like you were previously you can see the values of counters in graphs. This should highlight trends in how a particular counter\u2019s value changes over time which were difficult to visualize before.<\/p>\n<h4>Extended support for Visual Studio 2019 version 16.7<\/h4>\n<p>Visual Studio 2019 version 16.7 is the third supported servicing baseline for Visual Studio 2019. Consequently, Enterprise and Professional customers needing to adopt a long term stable and secure development environment are encouraged to standardize on this version.\u00a0 As explained in more detail in our\u00a0<a href=\"https:\/\/docs.microsoft.com\/visualstudio\/productinfo\/vs-servicing-vs\">lifecycle and support policy<\/a>, version 16.7 will be supported with fixes and security updates for one year after the release of the next servicing baseline.<\/p>\n<p>Now that version 16.7 is available, version 16.4, our last released servicing baseline, will be supported for an additional year and will go out of support in October 2021.\u00a0Prior minor versions 16.0, 16.1, 16.2, 16.5 and 16.6 are no longer under support.\u00a0 These intermediary releases received servicing fixes only until the next minor update was released.<\/p>\n<p>You can acquire the latest most secure version of Visual Studio 2019 version 16.7 in the downloads tab of the <a href=\"https:\/\/my.visualstudio.com\/downloads?q=Visual%20Studio%202019\">Subscriptions portal<\/a>.\u00a0 For more information about Visual Studio supported baselines, please review the\u00a0<a href=\"https:\/\/docs.microsoft.com\/visualstudio\/productinfo\/vs-servicing-vs\">support policy for Visual Studio 2019<\/a>.<\/p>\n<h3>New in Visual Studio 2019 v16.8 Preview 1<\/h3>\n<h4>Git Integration<\/h4>\n<h5>Easier Navigation Through the Git Repository Window<\/h5>\n<p>Since we&#8217;ve first released it, we&#8217;ve made several modifications to the Git Repository window to more easily navigate through it. Use the View menu or the keyboard chord Ctrl+0, Ctrl+S to quickly open the window. And customize the history view through a new tool bar with filters. You can also search for commits in the branch history using the search box. If you want to update the branch with the latest commits, you can use the new <em>Fetch<\/em>, <em>Pull<\/em>, and <em>Push <\/em>commands in the incoming and outgoing commits<\/p>\n<p><figure id=\"attachment_230181\" aria-labelledby=\"figcaption_attachment_230181\" class=\"wp-caption aligncenter\" ><img decoding=\"async\" class=\"size-full wp-image-230181\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/168P1GitInt1.png\" alt=\"Image 168P1GitInt1\" width=\"536\" height=\"214\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/168P1GitInt1.png 536w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/168P1GitInt1-300x120.png 300w\" sizes=\"(max-width: 536px) 100vw, 536px\" \/><figcaption id=\"figcaption_attachment_230181\" class=\"wp-caption-text\">Git Repository Window Navigation in Visual Studio 2019 v16.8 Preview 1<\/figcaption><\/figure><\/p>\n<p>If you right click on a branch in the list to merge or rebase, you\u2019ll see branch names clearly indicated to help you determine which direction you are merging or rebasing.<\/p>\n<p><figure id=\"attachment_230184\" aria-labelledby=\"figcaption_attachment_230184\" class=\"wp-caption aligncenter\" ><img decoding=\"async\" class=\"size-full wp-image-230184\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/168P1MergeMaster.png\" alt=\"Image 168P1MergeMaster\" width=\"370\" height=\"148\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/168P1MergeMaster.png 370w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/168P1MergeMaster-300x120.png 300w\" sizes=\"(max-width: 370px) 100vw, 370px\" \/><figcaption id=\"figcaption_attachment_230184\" class=\"wp-caption-text\">Clear Branch Naming in Visual Studio 2019 v16.8 Preview 1<\/figcaption><\/figure><\/p>\n<p>If you want to access Git commands without leaving your code, you can now do that straight through the right-click context menu in Solution Explorer as well as in a file in the Editor.<\/p>\n<p><figure id=\"attachment_230182\" aria-labelledby=\"figcaption_attachment_230182\" class=\"wp-caption aligncenter\" ><img decoding=\"async\" class=\"size-full wp-image-230182\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/168P1GitIntInSolExplorer.png\" alt=\"Image 168P1GitIntInSolExplorer\" width=\"495\" height=\"343\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/168P1GitIntInSolExplorer.png 495w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/168P1GitIntInSolExplorer-300x208.png 300w\" sizes=\"(max-width: 495px) 100vw, 495px\" \/><figcaption id=\"figcaption_attachment_230182\" class=\"wp-caption-text\">Access Git Commands Without Leaving Code in Visual Studio 2019 v16.8 Preview 1<\/figcaption><\/figure><\/p>\n<p>&nbsp;<\/p>\n<p>And after pushing a commit to your remote origin, the Git Changes window prompts you with a link to create a Pull Request to merge your changes.<\/p>\n<p><figure id=\"attachment_230180\" aria-labelledby=\"figcaption_attachment_230180\" class=\"wp-caption aligncenter\" ><img decoding=\"async\" class=\"size-full wp-image-230180\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/168P1CreatePRWizard.png\" alt=\"Image 168P1CreatePRWizard\" width=\"384\" height=\"108\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/168P1CreatePRWizard.png 384w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/168P1CreatePRWizard-300x84.png 300w\" sizes=\"(max-width: 384px) 100vw, 384px\" \/><figcaption id=\"figcaption_attachment_230180\" class=\"wp-caption-text\">Create a Pull Request in Visual Studio 2019 v16.8 Preview 1<\/figcaption><\/figure><\/p>\n<p>&nbsp;<\/p>\n<h5>New Progress Dialog<\/h5>\n<p>When you clone a repository through Visual Studio, you\u2019ll see progress clearly indicated through the new progress dialog. You have the option to move the process to the background in case you want to do something else in the IDE while you wait for the clone to complete. In that case, you will continue to see progress in the Task Status Center. The repository will automatically open in Visual Studio after clone has completed.<\/p>\n<p><figure id=\"attachment_230178\" aria-labelledby=\"figcaption_attachment_230178\" class=\"wp-caption aligncenter\" ><img decoding=\"async\" class=\"size-full wp-image-230178\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/168P1CloneRepo.png\" alt=\"Image 168P1CloneRepo\" width=\"452\" height=\"203\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/168P1CloneRepo.png 452w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/168P1CloneRepo-300x135.png 300w\" sizes=\"(max-width: 452px) 100vw, 452px\" \/><figcaption id=\"figcaption_attachment_230178\" class=\"wp-caption-text\">Clone Repository in Visual Studio v16.8 Preview 1<\/figcaption><\/figure><\/p>\n<h4>C++<\/h4>\n<p>We have added compiler support for <a href=\"http:\/\/www.open-std.org\/jtc1\/sc22\/wg21\/docs\/papers\/2017\/p0315r4.pdf\">lambdas in unevaluated contexts<\/a> which allows you to use lambdas in decltype specifiers<\/p>\n<p><figure id=\"attachment_230179\" aria-labelledby=\"figcaption_attachment_230179\" class=\"wp-caption aligncenter\" ><img decoding=\"async\" class=\"size-full wp-image-230179\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/168P1CompilerSupportCpp.png\" alt=\"Image 168P1CompilerSupportCpp\" width=\"750\" height=\"259\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/168P1CompilerSupportCpp.png 750w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/168P1CompilerSupportCpp-300x104.png 300w\" sizes=\"(max-width: 750px) 100vw, 750px\" \/><figcaption id=\"figcaption_attachment_230179\" class=\"wp-caption-text\">Compiler Support for lambdas in Visual Studio 2019 v16.8 Preview 1<\/figcaption><\/figure><\/p>\n<h4>.NET Productivity<\/h4>\n<p>There is now a code fix to remove the `in` keyword where the argument should not be passed by reference. Place your cursor on the error. Press (<strong>Ctrl<\/strong>+<strong>.<\/strong>) to trigger the <strong>Quick Actions and Refactorings<\/strong> menu. Select <strong>Remove \u2018in\u2019 keyword<\/strong>.<\/p>\n<p><figure id=\"attachment_230186\" aria-labelledby=\"figcaption_attachment_230186\" class=\"wp-caption aligncenter\" ><img decoding=\"async\" class=\"size-full wp-image-230186\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/168P1RemoveIn.png\" alt=\"Image 168P1RemoveIn\" width=\"480\" height=\"240\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/168P1RemoveIn.png 480w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/168P1RemoveIn-300x150.png 300w\" sizes=\"(max-width: 480px) 100vw, 480px\" \/><figcaption id=\"figcaption_attachment_230186\" class=\"wp-caption-text\">Remove &#8216;in&#8217; Keyword in Quick Actions and Refactoring in Visual Studio 2019 v16.8 Preview 1<\/figcaption><\/figure><\/p>\n<p>&nbsp;<\/p>\n<h5>New Pattern Matching<\/h5>\n<p>There is now a refactoring that introduces the new C#9 pattern combinators. Along with the pattern matching suggestions such as converting \u2018==\u2019 to use \u2018is\u2019 where applicable, this code fix also suggests the pattern combinators `and`, `or` and `not` when matching multiple different patterns and negating. Place your cursor inside the statement. Press (<strong>Ctrl<\/strong>+<strong>.<\/strong>) to trigger the <strong>Quick Actions and Refactorings<\/strong> menu. Select <strong>Use pattern matching<\/strong>.<\/p>\n<p><figure id=\"attachment_230185\" aria-labelledby=\"figcaption_attachment_230185\" class=\"wp-caption aligncenter\" ><img decoding=\"async\" class=\"size-large wp-image-230185\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/168P1NETProd1-1024x522.png\" alt=\"Image 168P1NETProd1\" width=\"640\" height=\"326\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/168P1NETProd1-1024x522.png 1024w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/168P1NETProd1-300x153.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/168P1NETProd1-768x392.png 768w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/168P1NETProd1.png 1335w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><figcaption id=\"figcaption_attachment_230185\" class=\"wp-caption-text\">Pattern Matching in Quick Actions and Refactoring in Visual Studio 2019 v16.8 Preview 1<\/figcaption><\/figure><\/p>\n<p>There is now a code fix to make a class abstract when you are trying to write an abstract method in a class that is not abstract. Place your cursor on the error. Press (<strong>Ctrl<\/strong>+<strong>.<\/strong>) to trigger the <strong>Quick Actions and Refactorings<\/strong> menu. Select <strong>Make class \u2018abstract\u2019<\/strong>.<\/p>\n<p><figure id=\"attachment_230183\" aria-labelledby=\"figcaption_attachment_230183\" class=\"wp-caption aligncenter\" ><img decoding=\"async\" class=\"size-large wp-image-230183\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/168P1MakeClass-1024x492.png\" alt=\"Image 168P1MakeClass\" width=\"640\" height=\"308\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/168P1MakeClass-1024x492.png 1024w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/168P1MakeClass-300x144.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/168P1MakeClass-768x369.png 768w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/168P1MakeClass.png 1181w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><figcaption id=\"figcaption_attachment_230183\" class=\"wp-caption-text\">Make Class Abstract in Visual Studio 2019 v16.8 Preview 1<\/figcaption><\/figure><\/p>\n<p>&nbsp;<\/p>\n<h5>Remove Unnecessary Pragma Suppressions<\/h5>\n<p>There is now a code fix to remove unnecessary pragma suppressions and <em>SuppressMessageAttributes<\/em>. Place your cursor on the pragma warning or the <em>SuppressMessageAttribute<\/em>. Press (<strong>Ctrl<\/strong>+<strong>.<\/strong>) to trigger the <strong>Quick Actions and Refactorings<\/strong> menu. Select <strong>Remove unnecessary suppression<\/strong>.<\/p>\n<p><figure id=\"attachment_230187\" aria-labelledby=\"figcaption_attachment_230187\" class=\"wp-caption aligncenter\" ><img decoding=\"async\" class=\"size-large wp-image-230187\" src=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/168P1RemoveUnnecessary-1024x457.png\" alt=\"Image 168P1RemoveUnnecessary\" width=\"640\" height=\"286\" srcset=\"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/168P1RemoveUnnecessary-1024x457.png 1024w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/168P1RemoveUnnecessary-300x134.png 300w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/168P1RemoveUnnecessary-768x343.png 768w, https:\/\/devblogs.microsoft.com\/visualstudio\/wp-content\/uploads\/sites\/4\/2020\/07\/168P1RemoveUnnecessary.png 1388w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><figcaption id=\"figcaption_attachment_230187\" class=\"wp-caption-text\">Remove Unnecessary Suppression in Visual Studio 2019 v16.8 Preview 1<\/figcaption><\/figure><\/p>\n<p>&nbsp;<\/p>\n<h3>Let us know what you think!<\/h3>\n<p>Thank you for the constant vibrancy you bring to the world\u2019s community of software development. Once again, as you try out our newest features, we would love to hear your feedback on <a href=\"https:\/\/developercommunity.visualstudio.com\/\">Developer Community<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Announcing the release of Visual Studio 2019 version 16.7 and Visual Studio 2019 version 16.8 Preview 1.\u00a0Both versions include additional Git integration, .NET Productivity improvements, WPF additions, and C++ improvements.<\/p>\n","protected":false},"author":4513,"featured_media":230184,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[155],"tags":[237,354,6758,526,475,133],"class_list":["post-230136","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-visual-studio","tag-net","tag-announcement","tag-git-integration","tag-productivity","tag-visual-studio-2019","tag-xaml"],"acf":[],"blog_post_summary":"<p>Announcing the release of Visual Studio 2019 version 16.7 and Visual Studio 2019 version 16.8 Preview 1.\u00a0Both versions include additional Git integration, .NET Productivity improvements, WPF additions, and C++ improvements.<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/posts\/230136","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=230136"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/posts\/230136\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/media\/230184"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/media?parent=230136"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/categories?post=230136"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/visualstudio\/wp-json\/wp\/v2\/tags?post=230136"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}