Microsoft Connect has finally arrived and it comes bearing gifts. Visual Studio 2019 Preview 1 has been released with a lot of great features. Let’s dive in and see what’s new.
New Look & Feel
The first thing I noticed is that VS2019 is really snappy. The startup time feels much faster and everything in the IDE just feels really responsive.
VS2019 looks great. It really got that shiny new product glow. As far as looks, there are several changes from the old Visual studio:
Let’s break down the changes:
- The Menu is more condensed and you have a bit more space for the code editor. In particular, the window title row is completely gone, making the menu the first row. For comparison, here’s VS2017:
- The Ctrl + Q search field moved to the right of the menu and changed a bit in functionality. The new features include fuzzy search, faster results and “search online” feature:
- A Live Share button has been added. We’ll talk about this later.
- A Document Health / Code Cleanup light bulb has been added to the bottom-right corner. This is one of the main new features in VS 2019 – more on that coming right up:
Document Health and Code Cleanup
The little light bulb at the bottom right corner collects all your issues in one place.
An issue can be an Error, a Warning or a Suggestion. Errors and Warnings you already know, but the Suggestions are a new feature in VS2019. The idea is to find and fix style and formatting issues in your code. For example, you can automatically apply the var keyword when possible. Or automatically sort and remove unnecessary using statements. This is configurable:
This looks like something that could have been replaced with a bunch of Roslyn Analyzers. However, the lightbulb button integrated seamlessly into the Visual Studio interface is a nice touch.
A lot of these features have already been available with ReSharper, but that’s nothing new. Each new Visual Studio version implements a bunch of features that ReSharper has had for a while. Unlike JetBrains though, the Microsoft team’s challenge is much bigger since they need to support a vast array of programming languages and configurations.
Here’s Allison presenting some of those new features:
New Debugging Features
Debugging has some interesting new additions in VS 2019.
- Step actions (F10, F11, …) are much faster now (up to 50% faster). Big kudos to the debugger team!
- The Locals window added Search capabilities:
You can search through everything or just the currently-expanded-items. You can also define how many levels deep the search should go.
This is a very welcome addition, but it has some limitations and caveats in its current form:
- The search is pretty slow since it individually evaluates every expression in the tree.
- The search stops on each item found and continues only when clicking Find Next(F3). Since the search is slow and it stops on each find, you can’t really go over all the items and let it run while you take a lunch break.
- For the same reasons as mentioned, you can’t get the count of all the search matches.
- The search is limited to the Locals, Autos, and Watch windows, so you can’t use it in the debugger’s DataTip or QuickWatch.
ReSharper added its Search into the debugger DataTip. The big caveat here is that it only works on already expanded items, so it doesn’t really help when you’re trying to find a needle in a haystack.
OzCode has much more advanced Search capabilities in comparison, which provides a google-like instant search experience. It is several orders of magnitude faster the Visual Studio search. Here’s a small comparison:
Visual Studio’s search took 17 seconds for 100 Customer objects, where the last one was Bill Gates. The OzCode search took less than 1 second on 5000 customers. It also has a bunch of additional capabilities like Conditional Search and auto-complete. You can try OzCode 4.0 EAP (which already supports VS2019) and see for yourself.
Unlike the OzCode Search feature, which currently only supports C#, Visual Studio’s search supports Visual Basic, C++ and any other programming language that’s supported in VS. Overall, it’s a good start to a much-needed feature.
New Project Dialog
One of the major UI changes in VS2019 is the File | New Project dialog. Here’s the new look:
That’s a pretty big leap in the right direction in my opinion.
As you can see, you can filter templates according to Language, Platform and Project Type. That’s a much better user experience than the previous tree view.
IntelliCode is not exactly part of Visual Studio 2019. Rather, it’s currently a Visual Studio extension which you can install.
This extension will add suggested auto-completion options to your Intellisense. The technology behind it is a machine learning AI that scans open-source projects on GitHub and learns the most common actions a programmer will do. So in the above case, the AI learned that after Replace the most common usage is of Length, Contains, StartsWith, Replace or EndsWith.
ReSharper also has extremely intelligent auto-completion suggestions, except theirs are based on heuristics and not on AI. Whose is better? IntelliCode is still in preview, so only time will tell.
IntelliCode will also:
- Suggest the best method overload for you to use
- Help with code reviews by pointing out possible problematic areas
- Learn the code style of your project and will suggest changes to keep with the style.
Live Share was already available as an extension for VS2017, but it’s available out of the box in VS2019. The Live Share also includes several improvements that were added in the recent months, like audio, which is awesome because you no longer have to separately set up a Skype call just to be able to hear the person[s] you’re collaborating with.
Changes for VS extensions
To improve overall performance, Visual Studio SDK is now forcing extensions to initialize asynchronously. This involves a lot of work for extension authors, but is pretty good step forward for VS startup time!
The Visual Studio team has been working hard and listening intently to feedback, and it shows! The new version delivers a lot of great stuff. I am personally most excited about the Live Share and IntelliCode. We’ll see who wins the fight for auto-completion: Microsoft’s AI based IntelliCode, or ReSharper’s heuristics, which have been iteratively improved upon and perfected over many years. As far as debugger Search functionality, Visual Studio still has some progress to make.
The download is available here.