Review: Visual Studio 2015 breaks new ground
Sweeping upgrade improves everything from language support to lifecycle management, and it opens the door to cross-platform development
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 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.
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.
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.
Copyright © 2015 IDG Communications, Inc.