Martin Heller
Contributor

Review: Visual Studio 2015 breaks new ground

reviews
Aug 05, 201524 mins
Development ToolsMobile DevelopmentSmall and Medium Business

Sweeping upgrade improves everything from language support to lifecycle management, and it opens the door to cross-platform development

shovel and axe
Credit: Thinkstock

Visual Studio has always been a big product with a raft of features that grew with each release. Visual Studio 2015 extends that trend in ways I never expected to see from Microsoft.

Cross-platform mobile app development? Check that box at least twice, once for Xamarin and once for Cordova, with extra credit for portable C++ and integration with Unity.

Cross-platform servers? Check that box at least thrice, for .Net Core, ASP.Net and Entity Framework, and Python and Node.js.

Cross-platform editing and debugging? Yes. Visual Studio Code runs on Mac OS X, Linux, and Windows.

Cross-platform application lifecycle management? Git and GitHub are supported, and Microsoft has extended the Git support in Team Foundation Server to allow for continuous integration with the same kinds of smart check-in rules that Team Foundation Server has for its version control system.

Cross-platform builds? You got it. In addition to working with Visual Studio Build and MSBuild, Team Foundation Build can use Ant, Gradle, Maven, Android Build, Gulp, Xcode, and others.

Of course, Visual Studio still supports development for, you know, Windows, and still includes all the old technologies for Windows desktop apps, from console apps built in C++ with Windows API calls to Windows Presentation Foundation apps in C# and XAML designed in Blend for Visual Studio 2015. But the definition of Windows has expanded for Windows 10, with universal Windows Platform apps. These applications are intended to work unchanged on hardware ranging from phones to tablets to laptops to desktops to Xbox game consoles to augmented reality headsets to Surface Hubs to servers to cloud. How well that particular vision will pan out still remains to be seen.

New in Visual Studio 2015

As I mentioned at the outset, Visual Studio 2015 includes extensive support for cross-platform mobile development: Apache Cordova installation and integration, Xamarin installation and integration, portable C++, an enhanced Android Emulator, and Unity integration.

You can build cross-platform server applications and deploy them to Windows and Linux servers, as well as run them on Mac OS X desktops and laptops. Server support includes ASP.Net 5, Python, Node.js, and the new open source .Net Core 5 for Windows, Linux, and Mac OS X.

In Windows development, there’s the new generation of universal apps, new diagnostic tools, and new design features. In the area of productivity, there is better debugging, including debugging lambdas and doing performance monitoring and historical debugging simultaneously. In the editor, the Roslyn language processors power a lightbulb that pops up when and where there’s a common issue in the code, and offer automatic code fixes and improved refactoring. Meanwhile, Visual Studio 2015 has many programming language updates, including C#, Visual Basic, C++, and TypeScript, along with extensions for Python and Node.js.

Visual Studio 2015 commits

You can commit and push your code changes to Team Foundation Server, Visual Studio Online, and Git directly from the Visual Studio IDE.

Visual Studio Online and Team Foundation Server 2015 now sport extensibility hooks and integration with Trello, Campfire, and the like. The agile planning function includes Kanban boards and swim lanes. You can now do quick code edits and commits right in Visual Studio Online and Team Foundation Server. You used to have to go back to Visual Studio or another code editing tool.

Speaking of other code editing tools, Visual Studio Code is a free cross-platform (Windows, Linux, and Mac OS X) code editor built on the open source Atom Electron shell, with deep language support from Roslyn and the TypeScript compiler, covering more than 30 programming languages at the syntax highlighting and bracket matching level in addition to a few at the IntelliSense level.

.Net Core 5 is a cloud-optimized, cross-platform, open source implementation of the .Net Platform that currently supports Linux, Windows, and Mac OS X. It also runs inside Docker containers on Linux. .Net Core is a refactored subset of the .Net Framework, has both native and CLR (application VM) runtimes, and supports both Windows Store and ASP.Net apps.

Universal Windows Platform apps not only run on a wide range of hardware, they use the fast .Net Native runtime. You can choose from the C#, Visual Basic, C++, and JavaScript languages (including Cordova) and construct your UI in XAML, DirectX, or HTML. You can preview XAML designs in Visual Studio on a range of device dimensions, from a 5-inch phone to an 84-inch Surface Hub. You can use device-specific extensions in Universal apps, as long as you wrap these extensions in code that checks for the presence of the appropriate APIs at runtime. While you can design XAML in Visual Studio, the preferred tool for XAML design is the revamped Blend for Visual Studio 2015.

Updated programming languages

C# 6 and Visual Basic 14 offer a few welcome language updates, including nameof expressions, null-conditional operators, await in catch and finally blocks, and expression-bodied function members.

Standards and portable code mark the C++ language improvements, such as conformance to the C++ 11 and C++ 14 standards and the inclusion of some C++ 17 features. The C++ compiler now has faster builds and enhancements to code generation and security. I don’t know if the builds are now fast enough to eliminate the extended “compiling” sessions that C++ coders often use for brewing coffee, visiting the facilities, and playing table tennis. It can take a long time to port a large code base to a new C++ compiler version and perform all the necessary regression testing.

Visual Studio Online Kanban

Visual Studio Online now has a Kanban board with swim lanes, in addition to other agile management tools.

F# 4.0 was built in the open by the F# community developers, about a quarter of whom are affiliated with Microsoft. There are many improvements to the language and tools, but the most obvious ones for me are the improved IntelliSense and debugging.

TypeScript 1.4 and TypeScript 1.5 (Beta) continue to build new features to work with more JavaScript patterns, create richer typings, and use new ECMAScript 6 features.

The Python Tools in Visual Studio 2015 support CPython, IronPython, PyPy, Anaconda, and other Python compilers, and they give you IntelliSense in the editor and interactive debugging, including mixed mode (Python/C++) and cross-OS debugging.

Since my review of 7 JavaScript IDEs, the Node.js Tools for Visual Studio, now at version 1.1 RC, have added support for Visual Studio 2015 (natch) and a new Linux-based Dockerfile template to make it easier to get your app up and running in a Docker container. To add the Dockerfile template to a Node.js project, right-click your project, select Add New Item, and select the Dockerfile template.

This version of NTVS also improves Node.js IntelliSense, formatting, debugging, TypeScript, unit test running, and Npm integration. With an additional download, NTVS 1.1 RC supports a new IoT extension that can deploy Node.js-based universal Windows apps to Windows IoT Core devices such as Raspberry Pi 2.

Code editing in Visual Studio 2015

Some years ago, I had a private briefing from the then-GM of the Visual Studio team about the plans for the next version of Visual Studio. After running through the slides, she asked me what else I’d suggest, and I pointed out that the squiggly-underline convention for real-time spell checking in Word could be applied to real-time syntax checking in Visual Studio. Much scribbling ensued; the feature duly appeared in the next beta.

Then she asked me, with a glint in her eye, if I wanted Clippy in Visual Studio. Laughing, I said, “Not yet. Maybe not ever, unless the suggestions it made were really good.” (Clippy had a terrible reputation among Word users for making stupid suggestions in an annoying way.)

The equivalent of Clippy in Visual Studio 2015 is a Light Bulb, which appears whenever the Visual Studio editor thinks it sees a code problem and has a suggestion, and whenever you type “^.”. The Light Bulb not only suggests fixes to common code issues, but also possible code refactoring. The refactoring menu has disappeared and all refactoring operations have been moved to the Light Bulb. On balance, I’d say the Light Bulb is a good thing.

Visual Studio 2015 Light Bulb

The Light Bulb interface offers possible corrections to and refactoring of your code. Here it is offering to remove unnecessary using statements.

Variable renaming is greatly improved in Visual Studio 2015; you can actually see what it’s going to do before it happens. Live code analysis and automatic correction is also greatly improved. Part of the magic is that the analysis is informed by specific code-aware guidance for the Microsoft platforms and NuGet packages you’re targeting.

It seems like a small change, but you can now customize, save, and restore window layouts for Visual Studio. Why does this matter? If you periodically switch among computers with different screen sizes, you’ll save yourself tons of time by simply pulling up your optimized layout for the screen you’re currently using.

Visual Studio now has touch support: scrolling (tapping-and-dragging on the editor surface on the regular and enhanced scrollbars), pinch-to-zoom, selecting a whole line by tapping in the editor margin, selecting words by double-tapping them, and pressing and holding to invoke the editor context menu. If you have a development machine with a touchscreen — you should if you’re developing for Windows 10 or mobile devices — you’ll find this handy.

And my personal favorite UI improvement: No more ALL CAPS menus. Good riddance.

Testing, debugging, diagnostics, and performance monitoring

Those of you who always write perfect code on the first try can move along, there’s nothing to see here. The rest of us are in for a treat: Visual Studio debugging, which was already pretty good, has gotten even better.

Conditional breakpoints have been around for a long time. Now we can also specify actions to take when a breakpoint is hit. That includes breakpoints on autoimplemented properties, and the use of lambda expressions in breakpoint actions, watch expressions, and the Immediate window.

Two new tools — the Live Visual Tree and the Live Property Explorer — let you examine the visual tree of your running Windows Presentation Foundation or Windows Store app. New diagnostics available during debugging are the Events list, the Memory Usage tool, and the CPU Usage graph. Meanwhile, as you run code in the debugger, Visual Studio automatically times it, and tells you the (estimated) elapsed and CPU time for the code. You used to have to work on performance after you had debugged.

When you’re not debugging, you can use a new Application Timeline tool to track system resource consumption over time for Windows Presentation Foundation, Windows Store 8.1, and universal Windows Platform XAML apps. Similarly, the Network Diagnostic tool lets you track HTTP network operations for Windows Store apps and Windows universal apps. And if you’re developing DirectX apps (often, but not always, games), you can now watch Frame Time, Frame Rate, and GPU Utilization graphs while the applications are running live. These indicators will give you a handle on whether the GPU or CPU might be your app’s performance bottleneck.

The lore of agile test-driven development (TDD) says you should always write the unit tests your code needs to satisfy, then write and modify the code until it passes all the tests.

In the real world, I have seen few shops that really stick to TDD. Instead, I tend to see developers who write the code first, then write whatever tests they need to make their code coverage high enough that their integration rules allow them to check their code into the master branch.

In aid of that scenario, IntelliTest generates test data and a suite of unit tests from your .Net code that cover all code branches and all statements. The generated unit tests are parameterized so that you can easily write additional test code to cover a range of input values based on your knowledge of the domain.

Application lifecycle management

Microsoft has gotten serious about making application lifecycle management tools available to every developer, not only to large enterprises with Microsoft-centric data centers run by dedicated operations teams. Visual Studio Online, the Azure-hosted version of Team Foundation Server, now includes Kanban boards with swim lanes and all sorts of agile planning tools, and even a small team with little funding can use it.

In addition, Team Foundation Build can build apps with pretty much any technology from any vendor or open source software foundation, not only Microsoft .Net. You can trigger build, test, and deploy actions from check-ins, as well as require code reviews and a desired level of code coverage before check-ins are added to the master branch.

Changes, timelines, and authors from the version control system display right in the code when you are editing in Visual Studio. I find this tremendously valuable, even though it may seem like a small thing. Without this sort of facility, if you are developing code in a team, and multiple people work on the same files, it’s very easy to inadvertently generate conflicts and the necessity to resolve them at merge time.

I’m happy that Git and GitHub have been elevated to first-class status for version control in this release. Team Foundation Server repository support is still there, of course, but you can decide about the type of repo, if any, for any new project you create.

Visual Studio documentation

Microsoft’s developer documentation has always been voluminous, but rarely really good. Given the expansion of capabilities in Visual Studio 2015, you’d expect the documentation to expand as well, and it has. It’s mostly pretty good, but the problem, as has often been the case, is finding what you need. While Microsoft offers a Bing add-in to Visual Studio to help you find the samples, snippets, and documents you need, it’s still a crapshoot. You might need to go read a blog post, watch a video, or even view the source code for a component to understand what it does.

The help that pops up inside the code editor — IntelliSense — is often the most useful documentation for me. But I wish there were a better way to get the big picture without an accompanying sales pitch, and I wish there were easier ways to find the right documentation for a given area without discovering that you’re reading something outdated.

Building cross-platform mobile apps

You can build cross-platform mobile apps in Visual Studio 2015 for Android, iOS, and Windows with Xamarin and with Apache Cordova. You can also build them in cross-platform C++.

Cordova, as you probably know, is a native wrapper for hybrid mobile applications that gives you access to the hardware capabilities of supported devices though a JavaScript API. Inside the wrapper the app displays HTML5 using the native Web view of the device. That means you can use pretty much any JavaScript framework you like. AngularJS, React, and Ionic are pretty common these days. A year or so ago, I saw a lot of jQuery Mobile used in Cordova apps.

I’ve been keeping a close eye on JavaScript editors and IDEs, and Visual Studio 2015 is climbing toward the top of that list, at least on Windows. Among other improvements, the Code Peek feature, which used to be reserved for .Net languages, is now available for JavaScript, and the JavaScript code completion now takes into account the frameworks you are using. Visual Studio also knows about JavaScript tool chains. Visual Studio can do even more to help you if you use TypeScript rather than JavaScript and declare the types of your variables.

visual studio 2015 xamarin

Visual Studio 2015 can create cross-platform mobile apps with Xamarin, such as the Xamarin.Forms app shown, as well as with Apache Cordova wrappers for HTML5 apps.

Cross-platform mobile C++ is an old idea that seems new again. You don’t have to be a purist about it. You can write C++ libraries to be called from Xamarin or from Java through the Java Native Interface. Visual Studio has tooling that lets you compile for x86 or ARM native platforms, build with Clang or GCC, build on a remote Mac, and emulate Android, iOS, and Windows mobile devices on your desktop.

I didn’t mention Unity above because it’s primarily a game and graphics platform, but it’s also useful for mobile apps. Visual Studio can install and integrate with Unity. Visual Studio will display your entire Unity project using the same hierarchy displayed in the Unity editor, and it will deploy and debug your Unity projects using remote machines on your network.

As an aside, the tooling for the Microsoft HoloLens Augmented Reality headset leverages Unity to create the 3D worlds and Visual Studio to edit the C# scripts and build the executables to download to the headset. The combination worked pretty well at Build in May, and it should work even better now that the Visual Studio 2015 bits have been polished.

Building cross-platform server apps

I mentioned that you can build cross-platform server applications with Visual Studio 2015 and deploy them to Windows and Linux servers, as well as run them on Mac OS X desktops and laptops. Server support includes ASP.Net 5, Python, Node.js, and the new open source .Net Core 5 for Windows, Linux, and Mac OS X.

Python and Node.js are inherently cross-platform, and it’s nice but not surprising to see Microsoft supporting them in Visual Studio (and in Azure, where Microsoft can charge money for operations). I discussed both of these in the section on languages above. That the .Net server stuff is now cross-platform is almost shocking. This really isn’t your father’s Microsoft.

visual studio 2015 asp net

ASP.NET 5 Web apps are cross-platform. Visual Studio 2015 can also create Node.js and Python Web apps.

.Net Core is basically .Net, only refactored, cloud-optimized, cross-platform, and open source. In addition, .Net Core is application-local, not system-global, and you can update individual .Net Core modules and libraries with NuGet if and when you want.

DNX, the .Net Execution Environment, is an SDK and runtime environment that has everything you need to build and run .Net applications for Windows, Linux, and Mac. I had no trouble at all installing DNX on Mac OS X and using it to run an ASP.Net website.

Building Windows Universal apps

The grand vision of Windows 10 Universal, as described at Build and elsewhere, is that a single app will run on an incredible range of hardware, from Windows 10 phones (which I still haven’t seen) to Surface Hubs and HoloLens headsets (which I have played with and programmed in beta form), adapting to the different form factors so that it always works well. Not only that, but Microsoft promises a billion Windows 10 devices of all stripes, giving developers an incredibly lucrative market.

Is that really going to happen? I have no idea, although I can tell you that when I heard the pitch at Build I felt like I was being sold a bridge between Manhattan and Brooklyn.

visual studio 2015 windows universal

You can build Universal Windows Platform apps in C#, as shown here, and also in C++ and JavaScript. The screen shows a Microsoft sample demonstrating the use of the accelerometer in a device, along with a pop-up list of references to the current method. Viewing the XAML file when you’re developing on Windows 10 brings up a split screen with the designer and the XAML code.

The best place to start, however, if you want to participate in the potentially huge market, is to build universal Windows Platform apps with Visual Studio 2015 (the free Community edition will suffice) and the free Windows 10 SDK. For guidance, you can refer to the samples on GitHub, which were only recently updated to the correct format for the RTM version of the Windows 10 SDK, and the Windows Dev Center documentation. If you start now, you could well have a first-mover advantage because good universal apps are currently few and far between, unless you consider Windows 10 Solitaire good.

I hope you have better luck installing the Windows 10 SDK than I did. I’m currently batting .500. On my HP Spectre x360, the XAML Designer throws a NullReferenceException, though Windows Universal projects build correctly. The Microsoft team responsible for the Designer has extracted a ton of diagnostics from that laptop and hopes to have a fix for the problem. They assure me it isn’t a common issue, and in fact the Designer works fine on my Windows 10 VM on Parallels. (Update: I now have a workaround, which is to remove the “Platform=MCD” setting from the system environment. This is apparently set by default on HP systems.)

If you already have apps for other platforms, and by “other” Microsoft actually means anything at all, you will eventually have a bridge (there’s that word again) to get it to Windows 10. While the demos of this were impressive, my feeling is that most of the bridges aren’t really in forms that can be used by mere mortals — yet. Again, I have no idea what will happen, but I do know some of the people involved, and they’re smart and imaginative. Despite my skepticism, I have hope that they’ll be able to pull this off.

Making the upgrade

Visual Studio 2015 is a huge product with hundreds of new features and capabilities, many of which are very, very good. A few items don’t seem to be quite cooked, but in the brave new world of rolling updates, we won’t be stuck with them until the next product release in two years.

Visual Studio is quite demanding of hardware resources. Running on an Intel Core i5 processor with 8GB of RAM and a solid-state disk, the performance is good. Running on a VM with two cores, 4GB of RAM, and a hard disk, it clanks along, although it works.

Software development with Visual Studio is not for beginners — there’s too much there. Simply learning where things live and how to get to them in the UI takes time. Ease of use is OK for experienced developers, especially once your fingers know the keyboard shortcuts, which are mostly unchanged from previous versions. You can still apply your preferred keyboard mappings if you wish.

As I discussed in the documentation section, the docs are good but not great, and they are spread all over Microsoft’s part of the Internet. If you are in the habit of going to Stack Overflow to ask questions about Visual Studio, good luck. The really knowledgeable people on the Visual Studio team read them to find out where people are having trouble, but aren’t allowed to answer, so many of the answers I see there are speculative suggestions by people who happen to have good reputations on the forum but don’t really know much.

If you don’t need the capabilities of the Enterprise version of Visual Studio and can live with the Community or Profession edition, Visual Studio is an excellent value. The Enterprise edition contains an incredible variety of stuff, and it would be an excellent value if any single person could use it all, but in reality nobody can. At $6,119 for the first year and less for subsequent years, I consider it a good but not excellent value.

Should you upgrade from your old version of Visual Studio? In most cases, I’d say yes. But be very cautious about upgrading production projects; in my experience, there are always backward-compatibility issues that can bite you — always.

Martin Heller
Contributor

Martin Heller is a contributing editor and reviewer for InfoWorld. Formerly a web and Windows programming consultant, he developed databases, software, and websites from his office in Andover, Massachusetts, from 1986 to 2010. More recently, he has served as VP of technology and education at Alpha Software and chairman and CEO at Tubifi.

More from this author