After 20 years of Visual Studio, Microsoft unfurls its 2017 edition
New cross-platform tools and streamlined setup options
First Look Microsoft has released Visual Studio 2017, marking 20 years of the software development tool's, er, development.
Visual Studio 97 was released on March 19, 1997. It came in two editions, Professional and Enterprise, and included Visual Basic 5.0, Visual C++ 5.0, Visual J++ 1.1, Visual InterDev and Visual FoxPro.
Microsoft has released Visual Studio 2017
All these products had different IDEs so at the time the term “Visual Studio” was misleading; “Visual Bundle” would have been more appropriate. It should perhaps have been taken as a statement of intent, since integration did happen eventually (though Visual J++, Visual InterDev and Visual FoxPro dropped by the wayside).
It is also worth noting that Microsoft has never released a mainstream visual programming tool, as in a tool that lets you code visually. Rather, these are GUI-driven development tools. It is probably just as well, since visual programming never caught on despite brave efforts from the likes of IBM, with VisualAge SmallTalk.
Visual Studio, overall, was an immediate success. It meant that most Microsoft-platform developers had access to all the tools they needed, and it has proved effective despite persistent issues with performance and stability.
That said, there have been many changes of direction over the years. Tools have come and gone, a recent example being Visual Studio LightSwitch, a rapid development tool for database applications that deserved better, and suffered from ineffective marketing and documentation, as well as a dependency on Silverlight, Microsoft’s now-abandoned browser plugin.
What's new in Visual Studio 2017?
A highlight of this version is a brand new setup which is more modular than previous efforts. What this means is that the initial install is quick and lightweight, and you then add features as required. Experience with the pre-release versions confirms that this approach is quicker than the old monolithic setup.
Next, Microsoft is now keen on cross-platform development, and this shows throughout the new Visual Studio. Visual C++ can now target Linux as well as Android. The cross-platform version of .NET, called .NET Core, is integrated, and by checking a couple of boxes you can build web applications for Linux and debug them in Docker containers, from within Visual Studio.
Another aspect of .NET Core that will interest Visual Studio developers is performance, since it is faster than the full .NET Framework. However, porting an existing ASP.NET application is non-trivial, especially if you are using the old ASP.NET Web Forms rather than ASP.NET MVC.
The Xamarin tools for cross-platform mobile development with .NET are integrated, including a previewer for Xamarin Forms, which lets you define a user interface using XAML, Microsoft’s XML-based language. Xamarin Forms use controls native to each platform at runtime. You can now also target the Universal Windows Platform with Xamarin Forms, and Microsoft has promised Mac desktop support later this year, so this is a strategic technology. This editor is improving, but it's still a long way behind other varieties of form builder in Visual Studio.
The XAML used in Xamarin Forms is incompatible with the XAML used for UWP, and with the XAML for Windows Presentation Foundation, raising the question of which is intended to be the way forward. Xamarin Forms is attractive because it supports apps that are truly universal, rather than merely running on different varieties of Windows 10. On the other hand, it is less capable and developers have found it somewhat buggy (at the Ignite event in Australia recently, Microsoft said it had fixed 1,800 bugs in Xamarin Forms). Still, with desktop Mac support on the way, this is a compelling choice for C# developers.
The Visual Studio editor is enhanced in this release. New features include:
Structure visualizer: hover the mouse on a closing brace and a tooltip shows the line of code above the opening brace (a neat feature).
Go to All: search for any file, type, member or symbol in a solution. A pop-up results window lets you filter by the type of reference. The old Find all References still exists, and has new filtering and sorting options.
The new Go to All results window
Run to click: hover the mouse over a line of code in break mode and click the “Run to click” button which appears to run to that line.
Exception helper: a new non-modal Exception window which pops up when you hit an exception in debug mode.
Live unit testing: in the Enterprise edition, see test and code coverage results while you code.
Lightweight solution load: an optional feature that loads projects in a solution on demand, improving performance if you only need to work on one of them.
Git support has been improved, with support for push force, viewing commit differences, unset (aka stop tracking) an upstream branch, and SSH support.
Roaming Extensions is a new feature which enables you to store your preferred Visual Studio extensions in the cloud and install them quickly on a new installation, using the Roaming Extension manager.
Here comes C# 7.0
The various programming languages Visual Studio supports are updated in this edition. C++ has new support for various C++11 and C++14 features, and preliminary support for some C++17 features, though it is still not quite complete for C++11 and C++98. There is also builtin support for CMake, a widely used open-source build tool.
In the .NET world, Visual Studio 2017 supports C# 7.0 and Visual Basic 15. C# 7.0 includes nested local functions, pattern matching extensions, and the ability for functions to return values by reference.
F# is now at version 4.1 with new language features, and has a new Roslyn-based editor (Roslyn being the .NET Compiler platform which exposes APIs useful to rich editors).
Tools for Apache Cordova now features Cordova Simulate, a browser-based simulator that lets you exercise your app quickly on different device types and screen sizes.
SQL Server developers will find Redgate Developer Tools Core Edition bundled into Visual Studio 2017. This includes ReadyRoll for managing database changes and migrations, SQL Prompt for SQL coding assistance, and SQL Search for finding SQL code across multiple databases (such as in stored procedures or functions).
Half the point of Visual Studio, from Microsoft’s perspective, is to attract developers to its cloud services. The new Add Connected Service dialog, which replaces the old Service Capabilities, lets you add to your project HockeyApp crash reporting, an Azure App Service mobile backend, Azure Cloud Storage, or Office 365 APIs. You can also add Microsoft or third-party services from the online Visual Studio marketplace.
Adding cloud services to a Visual Studio project
There is also a Cloud section in the Visual Studio New Project dialog, offering various Azure-hosted application types.
Visual Studio 2017 is available in three main editions. The free version, Visual Studio Community, designated as for “students, open source and individual developers”, is surprisingly capable. You can target all the platforms Visual Studio supports, including Xamarin cross-platform mobile.
Microsoft’s main differentiation in the paid-for Professional Edition, for “small teams”, is collaboration support through Team Foundation Server, including version control using Git-based or Team Foundation Server repositories. Of course there is nothing to stop you using the Community Edition with another source management system.
The Enterprise Edition adds testing features – coded UI, Code Coverage, Web Load and Performance testing, Test case management and so on – Redgate data tools, Xamarin Profiler and Test Recorder, Architecture Layer Diagrams, and Lab Management, which lets you deploy and test to multiple virtual servers with automatic setup and teardown.
You can compare the features of the various editions here.
The energy behind Visual Studio is impressive, and this release, which packs in plenty of new features, comes less than two years after Visual Studio 2015, released in July of that year.
There are some disappointments. I had expected that Microsoft’s Desktop App Converter, which lets you simplify the installation of any Windows application by wrapping it as a Store app, would be fully integrated in this release, but it turns out to be a convoluted process.
The IDE remains capable of unexpected or unhelpful behaviour, which is not surprising considering its scope. Trying to add a project reference in a new solution, for example, I got a dialog that stated “unable to add a reference” with no reason given. Another puzzle is the new Xamarin Forms visual previewer, which does not work yet for me and gives unhelpful error messages.
Microsoft platform developers will be happy with this update. The wider question is how effective Visual Studio is as a means of attracting new developers to the platform or to Azure. The well-featured Community Edition along with developer-friendly features like the Windows Subsystem for Linux, which you can use to develop Linux applications entirely on Windows, are positive steps in this regard. According to Microsoft, active Visual Studio users have grown by about 25 per cent in the last year.
Still, it takes a lot to wrest developers away from the Macs favoured in the developer community, or from leaner coding tools, not least Microsoft's cross-platform Visual Studio Code, which now has 1.3 million active users.
None of this diminishes the strength of the tool overall, which despite some frustrations is a key strategic asset for Microsoft's platform. ®