Martin Heller
Contributing Writer

Review: Visual Studio 2017 is the best ever

reviews
Mar 1, 201719 mins

Visual Studio 2017 is not only smaller and faster, but armed for many more use cases than previous versions

winner medal contest victory
Credit: AxxLC
ed choice plum InfoWorld

Two years ago, when I reviewed Visual Studio 2015, I came away thinking that Microsoft’s IDE had become the most complicated product ever, and Microsoft would have to simplify it in the future. I was wrong in one respect: Although Microsoft threw out a few features for Visual Studio 2017, it added a great deal more. But sure enough, Microsoft managed to deliver a simpler—and nimbler—IDE in Visual Studio 2017, despite increasing its capabilities.

Unlike some past versions of Visual Studio that focused on introducing complicated new Microsoft-specific technologies such as Windows Communication Foundation and Windows Workflow Foundation, Visual Studio 2017 installs and works better and faster, supports more programming languages and platforms, improves developer productivity, and applies to cross-platform workloads in natural ways.

For most users of Visual Studio 2015, upgrading to Visual Studio 2017 will be a no-brainer. Let’s explore why.

Bigger and smaller

In some respects, Visual Studio 2017 looks even more like a big grab bag of tenuously related products than previous versions of Visual Studio. Its expanding collection of development targets now includes Windows, Android, iOS, Linux, MacOS, .Net Core, Anaconda, Azure web apps and connected services, Docker, Office, and web development with ASP.Net, HTML5/CSS3, JavaScript, Node.js, Python, or (big breath) TypeScript. What a list—and it’s not even complete, as there are additional supported technologies, such as SQL Server, Visual Studio Extensions, and R.

How does one even begin to tie web development with ASP.Net to Android and iOS development? Well, there’s a way to do all of the above in C#, with Xamarin and Mono as the technologies for the mobile side. That isn’t the only option for mobile in Visual Studio 2017, however.

Perhaps you don’t like C# but still want to develop for Android and iOS. Then how about using C++ or JavaScript? Both languages have supported workloads for mobile development. As you dig deeper, the Visual Studio strategy of having something for everybody all tied together with common interfaces (both UI and API) starts to make sense. After all, most software developers are of necessity multilingual when it comes to programming languages and related technologies. The days of being able to write everything in Fortran are long gone. And most companies have strong opinions about their “standard” development languages and environments.

But what about installation? The enormous size of the Visual Studio installation has been a problem since the first Visual Studio product 20 years ago. Visual Studio 2017 features a much more modular installer than previous versions (see the figure below), a welcome improvement. The minimum install is, surprisingly, a relatively svelte few hundred megabytes. However, a full install of the Enterprise Edition takes 30GB to 40GB depending on the prerequisites already on the system. Microsoft tells me the average installation is about half that.

The size of the full install is not all Microsoft’s fault. For example, the Google Android Emulator alone uses more than 17GB. That implies Visual Studio itself is much smaller than it used to be, though it covers all of the additional target systems.

visual studio 2017 targets InfoWorld

Visual Studio 2017 covers a wide spectrum of development targets. While that’s good, it makes a complete install quite large. Fortunately, Visual Studio 2017 features a much more modular installer than previous versions of the IDE.

What’s new?

What’s new and exciting in Visual Studio 2017 that might tempt you to upgrade from Visual Studio 2015 with the current service pack? Microsoft claims the IDE is faster “from startup to shutdown” and now provides a way to view, edit, and debug code without projects and solutions. Microsoft also claims that enhancements to code navigation, IntelliSense, refactoring, code fixes, and debugging save you time and effort on everyday tasks regardless of language or platform. Certainly all of those are nice to have, but is the improved productivity enough to make you upgrade? I’ll try to describe how they feel in practice when I discuss the IDE.

If you don’t want to do a full install, either because you lack disk space or aren’t interested in every aspect of the product, the modular installer is much more convenient than the Visual Studio 2015 installer. On the other hand, how often do you install Visual Studio? A couple times a year, with updates every few weeks? I appreciate the improvement, but it shouldn’t have much of an impact unless you’re constrained for disk space—for example, if you develop on a laptop that came with a 128GB solid-state disk.

A faster IDE, on the other hand, has a huge impact. Visual Studio startup and solution load have become noticeably faster in the last few iterations, going from “I’d better go boil water and brew tea while my project opens” in Visual Studio 2008 to the current “Let me just get up and stretch for a few seconds while my project opens.” As for working with code minus projects and solutions, well, I’ve only wanted that for 20 years, since Visual Studio 97.

Microsoft touts a built-in suite of Azure tools that let you configure, build, debug, package, and deploy applications and services on Microsoft Azure directly from the IDE. If you use Azure, that’s a win: Jumping between the Azure console, the Azure command line, and Visual Studio can be distracting and interrupt your flow. If AWS is your primary cloud, however, you may not care about this at all.

Finally, Microsoft promises that with Visual Studio 2017 and Xamarin, it’s faster and easier than ever to build, test, and debug mobile apps for Android, iOS, and Windows. If Xamarin has finally been shaken down to work on Android and iOS without bugs (which I have not tested extensively), and if the XAML designer has become fast enough to use without making me want to throw the computer out onto the street, that will be a big plus.

On the latter issue, Microsoft claims that about 90 percent of the overhead of opening the XAML designer is gone. Consistent with that claim, I now observe a five-second pause with a “loading the designer …” message, which is certainly better than the minute or so the designer used to take to load. I’m also seeing a faster response to both dragging widgets to the design surface and typing into the XAML code window. The delay while synchronizing the two windows is still noticeable, but no longer makes me think that Visual Studio might have crashed.

You can also develop cross-platform mobile apps in Visual Studio 2017 with Apache Cordova or Visual C++. The use case for mobile development with JavaScript and Cordova is clear, and many people already rely on it for cross-platform mobile apps. But why do we need Visual C++ cross-platform library development between iOS and Android? It turns out there are many mobile C++ developers who will appreciate it. For mobile games and consumer apps, the common code, usually in C or C++, turns out to be a significant percentage of the project, with a UI written in Objective C++ or Java on top.

Although Visual Studio 2017 does support some iOS and MacOS development from Windows, you still need a Mac. Why? To debug console applications and ASP.Net for MacOS, to build GUIs for MacOS, and to build and debug apps for iOS.

C++ is the very model of a modern portable language, and it’s often used for developing applications that run on multiple operating systems. That’s in part why Microsoft also added C++ support for Linux development in this release and improved its C++ standard compliance.

What’s gone?

Visual Studio 2017 has dispensed with several rarely used features. You may, however, currently rely on some of the features that were pining for the fjords; they are still available, but only if you run an old version side by side with the new one. That may still hinder your adoption, because installing multiple instances of Visual Studio (especially the older versions) on a single disk is practically begging for a disk space problem.

Silverlight, an improper subset of Windows Presentation Foundation for delivering media and rich interactive applications from a browser add-in, was all the rage in the early 2010s and is now deprecated. I’ll skip over the internal Microsoft power struggle between the Silverlight camp and the HTML5 camp; suffice to say that Silverlight lost. It’s therefore no surprise that Visual Studio 2017 omits Silverlight development support. If you need to maintain old Silverlight applications, you’ll have to keep using Visual Studio 2015.

Similarly, Microsoft no longer makes Windows Phone smartphones and is deprecating older Windows Phone and Windows Store versions in favor of Windows 10. Depending on the version of Windows Phone you need to maintain, stick with either Visual Studio 2015 or Visual Studio 2012.

Microsoft has dropped UML modeling from Visual Studio 2017 and has no plans to invest further in UML. Instead, it has layer modeling, dependency diagrams, and architecture layer checks for code. You can also create and deploy layer modeling extensions.

If you really need UML in Visual Studio 2017, you can use one of the hundreds of UML tools available today, many of which are free and open source, and some of which currently include Visual Studio extensions.

Installing Visual Studio 2017

I installed Visual Studio 2017 on two Windows 10 machines: a laptop with a very small SSD and a tower with a decent-sized hard disk. Note that I was using a release candidate from February, not the final release version due the second week of March. The laptop already had Visual Studio 2015 installed; the tower had the Visual Studio 15 preview installed, which was the predecessor to Visual Studio 2017. I used the web installer from MSDN. In fact, I never saw an ISO installation image on offer, although that doesn’t mean one doesn’t exist.

I hoped that the Visual Studio 2017 installer would be smart enough to offer to remove Visual Studio 2015 when it saw there wasn’t enough space on the laptop’s SSD for both versions. No such luck. Because there are use cases for having both Visual Studio 2017 and Visual Studio 2015 on the same machine, the Visual Studio 2017 installation basically bailed out on me. I had to resort to manually uninstalling anything resembling Visual Studio 2015 and older versions of related technologies such as SQL Server, a job that took me about an hour and required constant interventions. I was then able to install a usefully large chunk of Visual Studio 2017. The installer kept a running tab of the disk space requirements of the workloads and modules I had chosen, and it would not proceed until it was sure everything selected would fit.

I honestly thought that having to do the manual uninstall was an unnecessary hardship. On the other hand, the only thing I could think of that would have made my job easier would have been an uninstall wizard for old Visual Studio versions.

On the tower, I was able to select all of the workloads of Visual Studio 2017 and press Install. The process may have taken an hour. I don’t know for sure because I was able to walk away and come back to find it completed. I think that’s the first time I’ve ever been able to say that about a Visual Studio installation.

The new modular install seems like a big win. The choices it offers are divided logically into “workloads,” and within any workload you can easily include or exclude specific components, such as the Google Android Emulator that I initially had to exclude on the laptop to install the rest of the Xamarin Mobile workload. You can supposedly install as little as a few hundred megabytes and still have a working environment, which is nice for team members with focused responsibilities and small disks.

visual studio 2017 install InfoWorld

The Visual Studio 2017 modular installer organizes installation items by workloads, individual components, and language packs. This screen shows workloads, with a pending modification to add the Google Android Emulator to the Mobile Development with .Net workload at a cost of 17.58GB of disk space.

Faster, smarter, better

For as long as I’ve used (and developed) IDEs, which is more than 25 years, the name of the game has been programmer productivity. Even in the bad old days of minicomputers and workstations, the biggest cost of creating software was developer salaries. Now that hardware and software costs are measured in the thousands of dollars instead of tens of thousands, and annual programmer salaries run over $100,000 instead of under $50,000, programmer productivity is even more important to the bottom line. Let’s look at features of Visual Studio 2017 that are aimed at improving productivity—and “delighting” the developer, to quote Microsoft.

InfoWorld Scorecard
Capability (30%)
Performance (30%)
Ease of Use (20%)
Documentation (10%)
Value (10%)
Overall Score (100%)
Visual Studio 2017 10 10 9 8 9 9.5

I mentioned earlier that Visual Studio startup time has improved over the years. For large solutions with many projects, such as a 2-million-line-of-code C++/C# project with a dozen DLLs and other separate modules on which I used to work, the new lightweight solution load mechanism can help a lot, because the individual projects are loaded on demand instead of all at once. That can make the difference between an annoying five-minute wait at startup time and a barely noticeable five-second pause as you open a different project within the solution. Individual file loads have sped up as well and now usually open in less than a second—almost at Sublime Text speeds.

In support of the goal of improving its own performance, Visual Studio 2017 monitors itself and warns you about slowdowns, as shown in the figure below.

visual studio 2017 slowdown notice InfoWorld

Visual Studio 2017 monitors its own performance and warns you about extensions that are slowing it down. You can click the Manage Visual Studio Performance link to manage the IDE’s performance by disabling extensions.

If you follow the link presented in the warning notice, you’ll open the performance management dialog, where you can see the impact of each extension and tool window, and disable the ones that are taking too much time for their value to your workflow. I didn’t disable ReadyRoll, despite the warning—it sounds useful.

visual studio 2017 perf management InfoWorld

The Manage Visual Studio Performance dialog allows you to disable extensions and tool windows that are slowing down the IDE based on their measured impact. For this warning, the detailed message said Redgate ReadyRoll was adding seven seconds to startup.

Navigation has improved in the Visual Studio 2017 editor. In a big project, simply finding the code you need to fix can be a major time sink, often taking much more time and effort than actually fixing the code. As shown in the screenshot below, you can now filter your “Go to all” results by type of object so that your search screen doesn’t become cluttered with uninteresting results and possible rabbit holes. “Find all references” and “Go to line” have also been overhauled for increased utility and productivity.

visual studio 2017 gotofile lg InfoWorld

The revised Go To popup (Ctrl-T) lets you navigate directly to any file/type/member/symbol from a single location. You can use a query syntax to filter by any category. For example, “f Cache” will filter by file, as shown above. CamelHump search is available here if you capitalize the humps.

I sometimes tell people that one of the most obvious differences between an editor and an IDE is that the latter can help you automate code refactoring. To that end, Visual Studio 2017 features more refactorings. Previous versions automated quite a few refactoring operations, from “rename with conflict resolution” to “add Using support,” but the list now adds commonly useful aids such as “move type to matching file” and “add braces (to an if statement).”

Testing support in Visual Studio has historically been a bit behind the state of the art, so developers often wound up using third-party testing frameworks such as NUnit, then scrambled to modify all their unit tests when a slightly incompatible equivalent was added to Visual Studio. The new live unit testing runs only the impacted tests after an edit and provides immediate feedback on the status of the tests in the editor. Yes, I know there are Ruby on Rails environments that have done this for a decade, but it’s new to Visual Studio, and it’s an improvement that saves you time.

I can’t tell you how many knockdown, drag-out fights have erupted among programmers over code usage style. For heaven’s sake, tabs versus spaces alone can lead to drawn daggers during a code review, never mind where to place the curly brackets in an if statement or even the important matters such as how to handle exceptions.

Visual Studio incorporated a rule-based static code-checker for .Net, FXCop, about 15 years ago, calling it Code Analysis. For a different set of concerns, you could draw on StyleCop (and the recently updated StyleCopAnalyzers project), a third-party open source tool that enforces a set of style and consistency rules and has been around almost as long, complete with a Visual Studio extension. That’s old stuff. Visual Studio 2017 introduces integrated code style enforcement via an EditorConfig file. The advantages of the EditorConfig file are that rules can apply to customized scopes, and Visual Studio will enforce your conventions live in the editor.

Debugging .Net exceptions has historically been a pain in the neck because it’s hard to dig down the stack to the inner exception that caused the exception chain to fire. A new Exception Helper makes that easier by displaying the most important information at the top of the dialog.

IntelliSense is one of the Visual Studio editor features that I both love and hate. I love it when it predicts what I’m planning to type correctly after a couple of keystrokes; I hate it when it slows down my typing, fails to complete my code, or generates a bunch of irrelevant suggestions. For the last problem, in C# and Visual Basic .Net, you can now filter the IntelliSense member list predictions by type (methods, properties, classes, and so on). Also, predictive IntelliSense now works in C++ even when you don’t use precompiled headers and MSBuild projects.

Building beyond Windows

That’s right, you can finally work on cross-platform C++ projects from Visual Studio simply by opening the folder and running CMake. CMake support, Open Folder support, and improved C++ standards compliance are all new.

You can also do cross-platform C++ development for Linux as well as Android and iOS, including remote debugging. Since most IoT platforms use Linux subset operating systems (for example, Raspbian and Linino) and standard Linux development tools, this means you can use Visual Studio 2017 for serious IoT development in C++.

One of the most interesting new cross-platform technologies to come out of Microsoft is .Net Core. It’s free and open source, and it installs on Windows, Linux, MacOS, and Docker. Visual Studio 2017 includes full .Net Core tooling support for both ASP.Net web development and .Net desktop development. That tooling allows migration of .Net Core standalone projects to MSBuild and a new simplified .csproj project format that can be edited by mere mortals. You can debug .Net Core projects running on Linux over SSH.

First-class Docker support in Visual Studio 2017 completes the story. With Visual Studio 2017 and Docker, you can build and run .Net applications using Windows containers (on Windows 10 and Windows Server 2016 only), and build and run .Net Core applications on Linux containers, including the ability to publish and run Linux containers on Microsoft’s Azure App Service.

As icing on the cake, there’s an extension for continuous delivery (currently experimental) that implements both continuous integration and continuous delivery (CI/CD) as a right-click gesture in the IDE, which then takes full advantage of Visual Studio Team Services under the covers. This tooling gives you a notification in your Visual Studio IDE whenever your integration fails in the cloud.

Up from Visual Studio 2015

As we’ve seen, Visual Studio 2017 adds a ton of new features while also becoming smaller and faster. Of course it’s still a complicated product, but not one that taxes users for the complication in the usual ways: installation time, installation space, learning time, and time spent fumbling while trying to be productive. Visual Studio 2017 may be heavier than Visual Studio 2015, but it feels much lighter.

When I scored Visual Studio 2015, I gave it a 10 for Capability because it did so much. Visual Studio 2017 does even more, but I can’t turn my amp up to 11. I gave Visual Studio 2015 a 9 for Performance; Visual Studio 2017 deserves a 10, although I may regret that in two years.

Visual Studio 2015 earned an 8 for Ease of Use because of some areas where the user interface slowed down (for example, the XAML designer) and areas where IntelliSense got in the way instead of helping. Visual Studio 2017 fixes most of these problems most of the way, and it gets a 9. The other two criteria we use, Documentation (8) and Value (9), are unchanged. Like its predecessor, Visual Studio 2017 has copious documentation, so copious that it’s sometimes hard to find what you need when you need it.

Professional developers who spend more than 20 hours a week working in Visual Studio should almost certainly upgrade to Visual Studio 2017, and not for the lulz—for the productivity. Yes, there are a few technologies that have been dropped in this version, but if you need them you can, at the worst, run Visual Studio 2017 side by side with an older version of Visual Studio that has what you need.

—-

Cost: Visual Studio 2017 Professional (perpetual license) costs $499. Visual Studio Professional Subscription (MSDN with perpetual software license) costs $1,199. Cloud subscriptions available for $539 per year or $45 per month. Visual Studio Enterprise Subscription (MSDN with perpetual software license) costs $5,999 ($2,569 renewal). Cloud subscriptions available for $2,999 per year or $250 per month. See Visual Studio Purchasing Options for details.

Platform: Runs on Windows 10 version 1507 or higher: Home, Professional, Education, and Enterprise (LTSB is not supported); Windows Server 2016: Standard and Datacenter; Windows 8.1 (with Update 2919355): Basic, Professional, and Enterprise; Windows Server 2012 R2 (with Update 2919355): Essentials, Standard, Datacenter; Windows 7 SP1 (with latest Windows Updates): Home Premium, Professional, Enterprise, Ultimate.  

Development targets: Windows, Android, iOS, Linux, MacOS, .Net Core, Anaconda, Azure web apps and connected services, Docker, Office, and web development with ASP.Net, HTML5/CSS3, JavaScript, Node.js, Python, or TypeScript. 

Martin Heller

Martin Heller is a contributing writer at InfoWorld. Formerly a web and Windows programming consultant, he developed databases, software, and websites from his office in Andover, Massachusetts, from 1986 to 2010. From 2010 to August of 2012, Martin was vice president of technology and education at Alpha Software. From March 2013 to January 2014, he was chairman of Tubifi, maker of a cloud-based video editor, having previously served as CEO.

Martin is the author or co-author of nearly a dozen PC software packages and half a dozen Web applications. He is also the author of several books on Windows programming. As a consultant, Martin has worked with companies of all sizes to design, develop, improve, and/or debug Windows, web, and database applications, and has performed strategic business consulting for high-tech corporations ranging from tiny to Fortune 100 and from local to multinational.

Martin’s specialties include programming languages C++, Python, C#, JavaScript, and SQL, and databases PostgreSQL, MySQL, Microsoft SQL Server, Oracle Database, Google Cloud Spanner, CockroachDB, MongoDB, Cassandra, and Couchbase. He writes about software development, data management, analytics, AI, and machine learning, contributing technology analyses, explainers, how-to articles, and hands-on reviews of software development tools, data platforms, AI models, machine learning libraries, and much more.

More from this author