Visual Studio 2019 v16.7 and v16.8 Preview 1 Release Today!
Today we are excited to announce the release of Visual Studio 2019 version 16.7 and Visual Studio 2019 version 16.8 Preview 1. Each of these releases have features we have been working hard to deliver. Install version 16.7 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 servicing release. In conjunction, we are releasing Visual Studio 2019 v16.8 Preview 1 which you can install from our download site. 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’ve provided additional highlights of what’s new below, yet additional information can be found in our release notes.
As always, we love to hear your feedback. Developer Community 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.
New in Visual Studio 2019 v16.7
We’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.
Git Conflict Resolution
We have also added a checkbox to resolve all conflicts on one side or the other with a single click.
Git Repository Window
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.
If you would like to learn more about these improvements, check out the detailed Git blog post.
XAML Tools WPF/UWP
Coming from our WPF and UWP tooling team are a few important improvements.
First of all, comes design-time data. 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’t yet exist. We wanted to give you a way to see your controls filled with data during the design-time development. That’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 d: in front of the property you want to mock, and the designer will do the rest.
This will allow you to see the values from the properties with d: in the designer. When your application is running, it will have values specified in the same properties without d:. 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.
XAML Designer Refresh Button
Next, we introduce the XAML Designer Refresh Button. 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.
XAML Code Editor
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.
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 initial announcement post to learn how to enable it for your code.
For those doing remote development on Linux targets, we’ve made a host of improvements.
Edit and Set Default Remote SSH Connections
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.
Extended Support for Debugging CMake Projects and Linux Distributions and Shells
We’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.
We’ve also extended our support for different Linux distributions and shells. For example, you can now set the default shell to zsh using ConnectionManager.exe by setting the new “shell” property.
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 to With Ninja in the General Property Page.
We’ve implemented a wide range of C++20 features in our STL implementation. Some examples are std::bit_cast, constexpr std::array comparisons, and partial support for Ranges. You can find the full list on our STL Changelog.
C++ IntelliSense has been expanded with initial support for some C++20 features like Concepts and designated initializers.
If you’re 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.
There is now IntelliSense completion in DateTime and TimeSpan string literals. Place your caret inside the DateTime or TimeSpan string literal and press (Ctrl + Space). 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.
AI-assisted argument completions
For C# developers, in addition to providing member suggestions, IntelliCode also provides AI-assisted IntelliSense argument completion. This capability stars the most likely argument names that you’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 Ctrl+Space, Space, or Ctrl + J).
IntelliCode suggestions 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.
Suggestions appear as Quick Actions in Visual Studio editor. IntelliCode suggestions have the Quick Action menu options Apply suggestion and Ignore suggestions like this. If you want to use the suggested change, select Apply suggestion.
IntelliCode inferred EditorConfig
EditorConfig files 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 IntelliCode to infer your code style and formatting conventions to dynamically create an EditorConfig file.
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 Solution Explorer and choose Add > New EditorConfig (IntelliCode)
Quick Actions and Refactorings Menu Update
You can now add a parameter within the Change Signature dialog. Place your caret at the declaration or usage of a method. Press (Ctrl+.) to trigger the Quick Actions and Refactorings menu. Select Change signature. Within the Change Signature dialog select Add to add a parameter.
Once you select Add, the new Add Parameter dialog will open. The Add Parameter 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.
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 (Ctrl+.) to trigger the Quick Actions and Refactorings menu. Next, select from one of the following:
To remove the operator completely, select Remove operator (preserves semantics).
To negate the expression, select Negate expression (change semantics).
You can also negate the expression with the new C# 9 not pattern if it is available in your project.
Add a Debugger Display Attribute
There is now a quick action to add a debugger display attribute to a class. This allows you to pin properties within the debugger programmatically in your code. Place your caret on the class name. Press (Ctrl+.) to trigger the Quick Actions and Refactorings menu. Select Add ‘DebuggerDisplay` attribute. 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.
In Visual Studio 2019 version 16.7, we have added a new .NET Performance Counters tool the profiler to help you visualize and analyze dotnet counters. 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 Debug -> Performance Profiler -> Checkmark .NET Performance Counters within Visual Studio.
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’s value changes over time which were difficult to visualize before.
Extended support for Visual Studio 2019 version 16.7
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. As explained in more detail in our lifecycle and support policy, version 16.7 will be supported with fixes and security updates for one year after the release of the next servicing baseline.
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. Prior minor versions 16.0, 16.1, 16.2, 16.5 and 16.6 are no longer under support. These intermediary releases received servicing fixes only until the next minor update was released.
You can acquire the latest most secure version of Visual Studio 2019 version 16.7 in the downloads tab of the Subscriptions portal. For more information about Visual Studio supported baselines, please review the support policy for Visual Studio 2019.
New in Visual Studio 2019 v16.8 Preview 1
Easier Navigation Through the Git Repository Window
Since we’ve first released it, we’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 Fetch, Pull, and Push commands in the incoming and outgoing commits
If you right click on a branch in the list to merge or rebase, you’ll see branch names clearly indicated to help you determine which direction you are merging or rebasing.
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.
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.
New Progress Dialog
When you clone a repository through Visual Studio, you’ll 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.
We have added compiler support for lambdas in unevaluated contexts which allows you to use lambdas in decltype specifiers
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 (Ctrl+.) to trigger the Quick Actions and Refactorings menu. Select Remove ‘in’ keyword.
New Pattern Matching
There is now a refactoring that introduces the new C#9 pattern combinators. Along with the pattern matching suggestions such as converting ‘==’ to use ‘is’ 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 (Ctrl+.) to trigger the Quick Actions and Refactorings menu. Select Use pattern matching.
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 (Ctrl+.) to trigger the Quick Actions and Refactorings menu. Select Make class ‘abstract’.
Remove Unnecessary Pragma Suppressions
There is now a code fix to remove unnecessary pragma suppressions and SuppressMessageAttributes. Place your cursor on the pragma warning or the SuppressMessageAttribute. Press (Ctrl+.) to trigger the Quick Actions and Refactorings menu. Select Remove unnecessary suppression.
Let us know what you think!
Thank you for the constant vibrancy you bring to the world’s community of software development. Once again, as you try out our newest features, we would love to hear your feedback on Developer Community.
When will history window support full repository histroy?
I have to use GitExtensions app just to see a full history with all branches.
Why can’t I open a history window on whole repository?
We’ve not started development on that feature yet. There’s a suggestion ticket tracking it – https://developercommunity.visualstudio.com/content/idea/934801/how-do-i-view-the-history-of-all-branches-in-git.html If you could vote and comment there on why a full repo history is important to you, we can accordingly prioritize. Thanks!
GitExtensions is great. Personally, I think all these IDE integrations of Git functionality are a total waste of development resources. They’ll never be as rich as a dedicated Git UI tool.
I don’t know why would I need to see a modal window with recository clonning progress (New Progress Dialog).
The way it worked in Team Explorer was pretty fine.
You can choose to ‘Continue in background’ anytime if the dialog is getting in your way. This new progress mechanism is the start of an IDE-wide effort to provide more clear and concise status information while you wait during potentially long running tasks.
Did y’all really not fix CMake support for ASAN x64 in the final release? The bug looks to have been filed mere hours after 16.7 preview 1 shipped back in May and yet here we are again, still broken in 16.8 preview 1…
Additionally, configs still have error squiggles in CMakeSettings.json when using “addressSanitizerEnabled” even though you promised a fix for that back late last year.
Are c# 9.0 records available in the 16.7 or 16.8 Preview 1?
At a glance it works in 16.7, but you’ll need to install the .NET 5 preview SDK and enable preview SDKs in Tools > Options > Preview Features.
C#9 won’t officially launch until November at .NET Conf.
They’re supposed to be in 16.7 in preview form.
Thank you for XAML Designer improvements. They are awesome.
Just updated my Visual Studio to 16.7.0 and was expecting to get the new Git Repository window when clicking the branch button in the status bar but it stil opens the Team Explorer window as it did in version 16.6.5.
Do I need to enable the new git features somehow?
Yes in 16.7, you would still need to go to Tools – Options – Environment – Preview Features and turn on the New Git user experience.
This update, breaks Xamarin IOS Building from Windows to a Mac Build Host.
Before, the IPA of a Release Archive version would show up in the Bin/iPhone/Release directory, not it does not.
Reverting back to previous version to continue getting IPA’s to be built and so i can submit to the Apple Store
Previous Version Used: 16.5
Nice improvements for Git integration, it was time to do something about it ! However there are still things missings like support for submodules (vs code natively supports it), interactive rebase, staging only selected ranges of lines (when you only want to commit a few lines in a file but keep the other changes in local) … So keep improving Git integration in next sprints, you are going the good direction ! 🙂
Thank you! The team has been hard at work, so appreciate your words 🙂 We’ve been focusing on reaching parity with the Team Explorer experience first, and so haven’t started designing the functionality you mention yet. But we’re tracking the features on our backlog. Here are the relevant suggestion tickets. We’ll post updates with design proposals when they’re ready –
I believe the Pattern Matching example is pretty confusing, (if variable == 0 and variable ==1) is always false.
But ok, the example shows what the new refactoring does.
Yes, pretty terrible example. 🙂
The new Github integration is noticeably better and the reason why I’ve been using the Preview for production environment the last few weeks ❤. And the XAML changes are long waited improvements that makes coding so much easier even if its just a small detail.
What a wonderful update, thanks to anyone who was working on it, you did a very good job!
That’s great to hear! Happy coding 🙂
Glad to see that .NET Core Counters are evolving. Is it possible to visualize the JSON/CSV data exported from dotnet-counters? It would help to analyze production environments, where we can’t install Visual Studio.
When will computer restarts stop being required after installation? That’s so annoying.
Would you mind sharing your setup log with us? You can collect the log using the tool at http://aka.ms/vscollect. The log should help us to understand what triggered the reboot during your installation.
This install effectively destroyed my Android debugging capabilities, so if you are a Xamarin developer, steer clear of this version…
Thanks for the update and we completely got used to not seeing any news on VB and we have moved on (of course more inclined to other platforms).
I want to still come here to see when you will ditch C# in favor of likens like Python or something which I expect to happen by around C# version 12+ or in another about 5 years from now. Perhaps for long I had good career growth provided by VB (about 20+ years) and so I’m not ditching it (VB) and so are many others but in other platforms. Thanks for that.
I appreciate your efforts in bringing new features to C# on regular basis and consolidating everything into single language called C#. Hope Microsoft doesnt go in the way of Sun Microsystems done with Java.
Glad to see analyzers for cleaning up unnecessary operators/pragmas. Looks like the “suppression operator” is the null-forgiving operator.
just updated to VS2019 16.7 but 64-bit ASAN seems to crash at CRT startup (initterm)… 32-bit works though.
(happens even with simple Hello, world C++ console app).
I am surprised that in Preview 1 the Form Designer for Core is still so broken, it seems it has not been updated in 3 or 4 Preview updates. It is still corrupting .Designer files by deleting UserControls, adding Namespaces where they are not allowed and editing of MenuStrip and other standard controls is still not working.
Blazor preview targetting net5.0 no longer compiles. (previously worked with 16.7 preview)
Severity Code Description Project File Line Suppression State
Error NU1202 Package Microsoft.AspNetCore.Components.WebAssembly 5.0.0-preview.7.20365.19 is not compatible with net50 (.NETFramework,Version=v5.0). Package Microsoft.AspNetCore.Components.WebAssembly 5.0.0-preview.7.20365.19 supports: net5.0 (.NETCoreApp,Version=v5.0)
BIG WARNING – i would not update to 16.7.0 until they work out some bugs. Have run into three so far and the last one is causing me to roll back to 16.5.2.
The first: it failed to update saying that it couldn’t install Microsoft.Build. After a couple reboots and 3 reinstalls, it finally worked. But it left my solution in a state where it said all the projects were incompatible. Fortunately reloading them fixed that issue.
Then I found that Task Runner Explorer wasn’t populating. Even though I had the latest NPM Task Runner extension installed, I had to uninstall it and reinstall it to get it working.
I thought all was good, but now my project is completely messed up. It builds fine, but when I open files there are red squigglies all over the place saying that namespaces can’t be found, even though the project builds. I can’t navigate to symbols with “Go to Definition”. I can’t do Ctrl-r/Ctrl-t to run a unit test, it comes back saying that zero unit tests were run. So something with symbols is completely messed up.
I have done a couple rebuild alls and a couple clean projects followed by builds. No luck.
So upgrade at your own peril. This is the first time I have had a problem upgrading VS in a very long time so I thought nothing of upgrading, besides they had finally fixed a very long standing bug I was tracking (multiple years) so I was happy to upgrade.
Both the release notes and this blog post make no mention of C# 9.0 whatsoever. Most of the features of C# 9.0 are in 16.7 and usable if you install the .NET 5.0 SDK. You should really call this out so people try out the preview version and provide feedback while it’s still in development.
“Finally, the XAML code editor shows color icons next to the color code for WPF. NET”
I do not want theses colors in editor. How to disable it ?
Still slow like dead snail 🙁
If you are improving git integration then it would be great if Visual Studio “blame” (or “annotate”) was using standard “git blame” command behind.
Now it looks it’s some custom Visual Studio code and most of the time it’s equivalent to “git blame -w”. But I cannot use such useful feature like “–ignore-rev” to ignore some automatic “clean up” commits (more info in this blog post https://www.moxio.com/blog/43/ignoring-bulk-change-commits-with-git-blame).
Just use “git blame” behind the scenes and have option available like “ignore whitespace” that would be turned on by default. For example this is how “blame” works in GitExtensions.
Thanks for the feedback! I created a suggestion to track your request here – https://developercommunity.visualstudio.com/idea/1145726/use-standard-git-blame-in-visual-studio.html
My panel of Git Changes is completly BLANK!? How can you guys upload something so buggy. I have to rollback -_-
That doesn’t sound good. Can you report the issue here – https://developercommunity.visualstudio.com/content/problem/post.html?space=8 so our team can investigate please?
Thank you for the latest release, I have installed ASan. However, it is not showing up under C++ general. the project has only one config x64 debug \ RelWithDebInfo. what is the option name and where to add directly in the project file?
I believe the option is EnableASAN in VS
You can add it in the PropertyGroup for your project configuration. If the option is not appearing the the GUI I suspect that option may not work for you. Can you double check which version of VS you are using?
Hi. I love the fact that you keep releasing with new features, but you definitely should look better on critical bugs, that are reported in the preview versions before releasing them as stable ones. This was a report that I encountered too and upvoted about a ICE regression in the compiler in the preview version:
It is a good report with a small clean reproduction example. It was reported a month before this release and I consider compiler crashes as critical bugs. Still without it being fixed this compiler version was released to the public. And this compiler crash is still happening in the 16.8.0 Preview 1 as well.
I hope to hear (and see a fix) from you soon.
Nothing about the most voted issues to restore the old new project dialog and the old start page in order to make Visual Studio 2019 useable.
There is a good start point to open a solution from “Solutions” section in “Team Explorer – Home” view currently. As far as I see there is no such functionality in the new Git experience. Will it be available in the release version of the new UI?
We’re working on that experience now and plan to have the Solution list in the Solution Explorer when the new UI is released. You can track it here – https://developercommunity.visualstudio.com/idea/991502/team-explorer-or-new-git-panel-is-not-showing-the-3.html
I have two remote repositories for a project and I can’t seem to find how to choose which one to push to. What am I missing?
Don’t worry it’s not you, the experience itself is still missing that capability. We’re designing it now. You can upvote and follow for updates here – https://developercommunity.visualstudio.com/idea/1052042/new-git-experience-select-remote-to-push-to-when-h.html
The design time data feature is awesome! Unfortunately, we have many custom controls in our project and it doesn’t work for properties on those controls. Is there any way to make this feature work for dependency properties on custom controls?
Try publishing a website from 16.8 P1 it’s very hard when the publish button doesn’t exist.
Has stopped me rolling out a major update. I understand it is a preview version but this is a basic error and should not have been released.
Are you referring to pushing a new repo to Azure DevOps or something else?
While I understand the need for change I accept that but what I dont accept is the fact that you have taken away the commit option from the solution explorer But I here enough of us have complained and that it will be coming back in a next release it interrupts my work flow having to go to yet another window !!! just to commit my changes.
Where can we report C++ compiler and MSBuild related issues with this particular release? (16.7)
There is code that was working prior to 16.7 has now stopped compiling (refer: https://github.com/ThePhD/sol2/issues/1008) and for some reason, MSBuild is not invoking fxc.exe (DirectX shader compiler) in 16.7. (refer: https://github.com/sdslabs/Rootex/pull/236/checks?check_run_id=1042684225#step:4:2622)
Yeah, IntelliSense is as broken as it gets, has been this way for several VS2019 updates. Rather than auto-complete obvious identifiers when you Ctrl+Space, it now litigates with every possible combination of letters even if you already typed the first several characters of the exact identifier you want. It paralyzes you with choice, seemingly on purpose.
Rather than fix it, they add more Big Brother nonsense that nobody asked for and nobody wants. Fake customer consensus. I’m not fooled.
NEGATIVE on AI-assisted IntelliSense. Turn it off, turn it off. I don’t need your machines spying on my work to see if I’m a “competitive threat” under the guise that I’m too stupid to understand my own domain.
The current version of Git is 2.28. Which version of Git is VS2019 16.7.2 using? Does Visual Studio use the locally installed version of Git??
Hey James – In 16.7 we’re using MinGit 2.25. And we’ve moved to MinGit 2.28 for 16.8. We don’t use the locally installed version, just to ensure nothing in VS breaks if you update or remove your local installation of Git.
I update my visual studio 2019 version 16.7.2 To 16.7.3 today.
when debugging Blazor Client assembly Windows blue Screen appears. (DPC_WATCHDOG_Violation)
I debug the same project yesterday for hundreds of times with no problem.
The DPC watchdog detected a prolonged run time at an IRQL of DISPATCH_LEVEL
Arg1: 0000000000000000, A single DPC or ISR exceeded its time allotment. The offending
component can usually be identified with a stack trace.
Arg2: 0000000000000501, The DPC time count (in ticks).
Arg3: 0000000000000500, The DPC time allotment (in ticks).
Arg4: fffff80461171358, cast to nt!DPC_WATCHDOG_GLOBAL_TRIAGE_BLOCK, which contains
additional information regarding this single DPC timeout
so be carefull
os :Windows 10 Enterprise.
inel core i7 6700k