Visual Studio has long been the gold standard in terms of IDEs for its editing and tooling capabilities. Visual Studio 2017 continues this tradition by bringing many improvements to the developer experience. And while it doesn’t revolutionize how you use an IDE, it does improve productivity by a significant margin with its small but significant improvements. The following is a list of my favorite improvements.
Edit .csproj Files
I’m surprised it’s taken so long for this feature to get built. Visual Studio does a great job of exposing a project’s properties via the UI but there are often times when you need to crack open the project file to make a change.
Previously, you had to unload the project before being able to open the .csproj file in an editor window. This has changed in VS2017. Right-click a project file and choose “Edit .csproj” from the context menu. The XML representation of the project file is opened in the editor and any saved changes will prompt you to reload the solution to capture those changes.
Tests Load and Run Much Faster
There’s no bigger time waster than waiting for unit tests to run. The execution time for projects with thousands of tests can easily run in the five minute range with Visual Studio 2015. Those same tests, with no code changes whatsoever, now run on the order of 1.5 times quicker in VS2017. It’s a huge boon to productivity for projects with lots of tests, and may even cut down on the number of coffee breaks taken while waiting on a test run.
Another related improvement is the speed at which thoses tests are initially discovered when opening a solution. You can see the impact this has here.
Tests Explorer Is Updated In Real Time
This is another feature that doesn’t seem like a big deal until you see it in action. I tend to run tests on a test class as a whole when refactoring and often end up with a mix of passing and failing tests. But refactorings typically involve changing the names of some tests, adding new tests, and deleting others. Keeping track of which test is which in these cases is quite the change.
That’s now a thing of the past because as soon as you delete a test, it no longer appears in Test Explorer. A name change is also immediately reflected in Test Explorer, as is adding a new test. That’s pretty sweet.
There’s another feature called Live Unit Testing which I haven’t tried yet since it’s only available in Ultimate Edition. It keeps your tests running continuously in the background as your code changes, giving you an up-to-date view of the state of your code at all times.
Git Integration Is Finally Stable
The 15.6 update to Visual Studio fixed a ton of lingering Git issues since Git was integrated to Team Explorer. The biggest offender has long been trying to revert a modified file in Team Explorer, which would appear to do nothing since the file remained in the list of pending changes. These types of bugs could often only be resolved by dropping to a command prompt to clean it up with the Git CLI.
Starting with the 15.6 update Visual Studio is now using the native git.exe client and it’s made a world of difference in eliminating many of these bugs. There’s also a bunch of other Git features that have been integrated to the UI, like pruning remotes, managing tags and working with submodules. These improvements have greatly reduced the number of times that the Git CLI is needed.
Now, if only we could get the Git CR/LF issues settled once and for all…
Renaming Projects Also Renames Related Properties
This may have been part of a previous release but I’ve only noticed it in the last few weeks. When you rename a project within Visual Studio, it will also rename the Assembly Name and Default Namespace of the project. Unfortunately, what it doesn’t do is rename the underlying folder, or the namespaces of existing classes. It’s still an improvement and and it’s one less thing to remember when doing a major refactoring.
Updates Are Happening Frequently
The VS Code team have taken to a monthly schedule of updating their software and it seems that the Visual Studio team is following in their footsteps. The frequent updates mean that we’re getting bug fixes much faster than ever before, with the downside being that we need to update more frequently. Luckily the updates are fairly lightweight so far, which keeps it from becoming cumbersome.