Microsoft has made many moves in 2015, with each step proving it is not the Microsoft of old. The company is embracing change, from open-sourcing parts of the .NET framework, to building applications for competing platforms—sometimes before their own platforms. This year we are getting a new version of Windows, both desktop and mobile, and a new version of Office. Azure has been rapidly advancing, continually adding features each quarter. Visual Studio has advanced as well, giving developers tools to keep up with the rapidly changing environment.
A couple years ago, Microsoft boosted the cadence of delivery. Recently, Kevin Turner, Microsoft’s COO, told partners that Windows 10 will be that last major release of Windows. From now on, new functionality will be delivered via updates.
(Related: Microsoft releases Visual Studio 2015)
The Visual Studio Team started working with this new cadence with Visual Studio 2013. Each quarter they add more and more functionality. One of the side benefits of this new delivery cadence is the openness of what they are developing and the willingness to accept feedback from users. This feedback, and Microsoft’s mobile-first, cloud-first strategy, is a major departure from the Microsoft of old.
In order to gather user feedback, Microsoft has had to change how often it gets working software into the hands of the users. It created the Windows Insider program to allow users to evaluate the changes that Microsoft is making and provide valuable feedback. And alongside the frequent builds of Windows, Microsoft has been releasing builds of the next version of Visual Studio.
Visual Studio has been around for years, and with each release, Microsoft makes major improvements, keying in on improving developer productivity, enhancing team productivity, and allowing for the rapid development of applications. Some think that Visual Studio has gotten so big and bloated that it can’t handle some of the simpler development tasks. (I tend to agree, but more on that later.) Some think that Visual Studio can’t handle working in the open-source arena. This may have been true in the past, but along comes Visual Studio 2015 to change reality.
Is the 2015 release perfect? No, but it is a long way from where it started. Besides, if it were perfect there would be no need for third-party add-ons like ReSharper from JetBrains. But with each version of Visual Studio, you can see features from the various add-ons get added in the development environment. Microsoft understands that developers use these add-ons for a reason. Once again, feedback is being factored in the decisions Microsoft’s engineers make about the platform.
I was eager to see what the Visual Studio team had in store for the next version. I am currently running the Enterprise (formerly known as Ultimate) RC version, and this is the version that I will be making my observations about. I mainly do mobile and desktop development in addition to some Web development. I focus mainly on the Microsoft platform, but recently I got my Xamarin certification. So I am starting to branch out into cross-platform as well.
Not afraid to go cross-platform
Microsoft has recently shown what it means by mobile first. It has acknowledged its lack of leadership in the mobile device space and started to build great user experiences on iOS and Android. It encourages its developers to do so as well.
The first cross-platform surprise I got was during the installation. I was asked if I wanted to install Xamarin tools. Of course you still need the appropriate Xamarin license to use the tools, but that was one less thing I had to install after Visual Studio. Microsoft is really embracing its partnership with Xamarin. If you have an MSDN subscription, take a look at the benefits it provides to subscribers.
If you don’t have a Xamarin license, don’t worry: Visual Studio 2015 can still help. In the past there was something called Multi-Device Hybrid Apps for Visual Studio (Microsoft naming at its best). This has been renamed to Visual Studio Tools for Apache Cordova. Apache Cordova makes it easy to build, debug and test cross-platform apps that target Android, iOS, Windows and Windows Phone. I have not used Apache Cordova, and in the past it has gotten a bad reputation for producing applications with poor user experience. I still say that for rich user interaction, you need to go native. But over time Apache Cordova has improved, and Microsoft has continually improved the tooling for developers. Here are some of the highlights:
- Debugging an iOS version of your app from Visual Studio when it is deployed to the iOS Simulator or a connected device on a Mac
- Improved security and simplified configuration for the included remote iOS build agent
- An improved plug-in-management experience that includes support for adding custom plug-ins to your project from Git or the filesystem
- Select platform-specific configuration options from an improved config.xml designer
- Support for Apache Cordova 4.0.0.
One of the biggest pain points with cross-platform development is testing. You either have to use emulators or buy devices to test your apps. Microsoft provides excellent support for Windows Phone emulators, with a wide variety of configurations to choose from. They have even committed to providing images of Insider builds as each is released, along with SDK updates.
When it comes to iOS, you are out of luck. You have to use a Mac to run the emulator or deploy to a device.
For Android, there are a plethora of emulators to choose from. Most of them clash with Hyper-V, which is required for Windows Phone emulation. Plus most of them are extremely slow. Microsoft now provides an Android emulator in Visual Studio 2015.
The Microsoft Android emulator resolves the Hyper-V conflict, provides a wide variety of sensor simulations, and supports Android versions 4.4 (KitKat) and 5.0 (Lollipop). Using this emulator has been night and day from the other emulators out there. I also like the fact that I no longer have to turn Hyper-V on and off depending upon the platform for which I was testing. This has definitely sped up my development of cross-platform applications.
There is another cross-platform ecosystem for which Microsoft would love for you to develop apps with, and that is the breadth of Microsoft Windows 10 platforms, which include the following:
- Phones
- Tablets
- PCs
- Xbox
- HoloLens
- IoT devices
One of the biggest additions to Visual Studio is the Universal Windows Platform. The Universal Windows Platform is used to create one project and have it run on all the devices listed above. For the last couple of years Microsoft has been converging their APIs into a unified set of interfaces. With Windows 8/8.1, they were close. Windows 10 is the culmination of this effort.
It starts with a common kernel across all these devices, and it moves it up the stack. Sure, there are still differences and unique features for each platform, and Microsoft handles that by ensuring that those features are defined in extensions. Each extension has a metadata file that contains the API definitions for those extensions. Those metadata files exist on all the platforms. This is what allows Visual Studio to compile an application even if the actual APIs aren’t available, and this is what allows applications to run on the devices without those APIs. This also allows Microsoft to add platforms easily without having to change Visual Studio.
Universal Windows applications use XAML as the main language for developing user interfaces. I have been using XAML since it was introduced and have seen it evolve over time. I was interested in seeing what they have been doing to make developing XAML applications better.
Back in the day, you had to have two tools when developing XAML: Visual Studio for coding, and Expression Blend for designing. The idea was that developers would use Visual Studio and designers would use Blend. They would work in the same solution, alleviating the need for developers to have to try to implement the designer’s vision. Most organizations never got this workflow to pan out, and developers found themselves switching between environments.
In Visual Studio 2013, Microsoft started shifting some of the functionality into Visual Studio. It dropped Expression from the name and included Blend in the installation. This continued in Visual Studio 2015. Microsoft hasn’t completely migrated all the functionality over to Visual Studio, though. Blend is still the best tool to build animations and handle state management, and Microsoft has continued to advance it. Some of the highlights are:
- A sleek new look resembling Visual Studio that improves the workflow between the two products
- XAML IntelliSense
- Basic debugging capabilities
- A peek in XAML, which allows you to view and edit XAML controls and resources within the context in which they are used
- An improved file reload experience to minimize workflow interruptions as you work on your projects in both Blend and Visual Studio
- Custom window layouts that can be synchronized across machines that have Blend installed
- Better Solution Explorer and source-control support
- Support for NuGet
Microsoft still comes up a little short when it comes to XAML development. It stems from having a few different XAML platforms in varying states of maturity. It all started with WPF, and then Silverlight came along, and then Windows 8 and now Windows 10.
Features from each incarnation have made their way into the XAML framework. Originally Microsoft had plans to converge its different XAML platforms, but it never quite got there. One of the features that is sorely lacking is XAML debugging. Silverlight XAML allowed you to debug data bindings, a feature that hasn’t made it to other XAML frameworks. As Windows 10 is Microsoft’s future, we can only hope that XAML will improve. The changes that Windows 10 has brought about are too numerous to list. In fact there are more than 20 hours of content on Microsoft Virtual Academy if you are interested in learning more.
ASP.NET’s turn
XAML is not the only UI technology to see vast improvements in Visual Studio 2015. ASP.NET has improved as well. First and foremost, ASP.NET is one of the frameworks that Microsoft has seen fit to open-source. The ASP.NET team has been extremely transparent about its development process, to the point that the team has been holding weekly standups that anyone can attend (virtually). A lot of the changes that they have implemented center on embracing the open-source developer. They realize that not everyone wants to use the ASP.NET stack to develop.
In ASP.NET 5, they have completely restructured the project template. When doing Web development, you tend to have a variety of files that don’t belong on your Web server. Another developer task is to minimize file size in order to optimize page load times.
One of the tricks for accomplishing this is to use Content Delivery Networks (CDNs). These servers cache resources around the world, allowing users to access resources closer to them. Developers still need local copies to develop against, but they won’t want to deploy these copies with the rest of the site.
Another trick to improve performance is to minify (remove whitespace and shorten names) CSS files and JavaScript files to reduce file sizes. Outside Visual Studio, developers use tools like Grunt and Gulp to automate the task of minifying files and moving relevant files to a directory that will get published. In prior versions of Visual Studio, you had to jump through some hoops to set up the automation of Grunt or Gulp. You had to install an extension and configure it to run during compilation. Now these tools and others like NPM and Bower package management are supported right in Visual Studio.
Inclusion of tools that other developers use makes Visual Studio a great tool even if you are doing Web development that doesn’t include any ASP.NET components. I hinted earlier that I had trouble working within a team where I was the only one using Visual Studio. The others were using other tools. I did the hoop-jumping in order to be productive, but it would have been a better experience if I had been able to use the new tools provided by Visual Studio 2015.
Those developers who routinely contribute to open-source projects, especially those hosted on GitHub, will be happy to see that Microsoft has continued to improve the Git integration. A while back, Microsoft introduced Git repositories as a source-control option in Visual Studio Online (the former Team Foundation Service). They also introduced Git integration into Visual Studio. It was limited, and I found myself jumping out to an external Git manager to perform most tasks. It did do the basics like check out files, commit local repositories and sync with external repositories. Now you can easily manage branches and review branch histories, a task I used to jump out to an external client to do.
There is also better integration with GitHub, which allows you to manage your open-source projects better. There are still some areas that need to come along, like the ability to run command-line commands from within the IDE, but it is nice to see that Microsoft is taking open-source development seriously.
One of the major features of an IDE is its ability to debug code and provide diagnostics. Visual Studio has always had good tools but as with anything else, there is always room for improvement. And some of those improvements have made their way into this version. Here are the highlights:
- Improved breakpoint configuration, including the ability to undo a breakpoint deletion
- The ability to use lambda expression in debugger windows like the Watch window and the Immediate window
- Tools to monitor GPU usage of DirectX applications
- Network diagnostic tools
Performance is important when it comes to building apps. Users expect their apps to be highly responsive. In the past you had to use third-party tools like ANTS to analyze your WPF and Universal app code to find where the bottlenecks were. Now there is a built-in timeline tool that can help you analyze your app as it is running to help find the issues.
There is one last feature I wanted to hit upon, and it is a really simple change. You know that it is the small things in life that can have the biggest impact. Microsoft added the ability to set the startup project right from a dropdown that is right next to the debug button in the tool bar. In the past you had to right-click the project you wanted to set as the startup project and find the option in the long list in the context menu. Like I said, it is not a big change, and it probably should have come sooner, but now that it is here I find myself using it all the time.
Increasing developer productivity is always a goal with each new version of Visual Studio, and this version is no different. The startup project dropdown is one example; another is CodeLens. CodeLens was introduced in 2013, but was only available in the Ultimate edition. In 2015, Microsoft has included it in the Professional version as well.
CodeLens is that little bit of interactive metadata that you see above methods, properties and other areas. CodeLens shows where those methods are being referenced. When a project is under source code, you see who last modified it and the changes made.
One of the new features is the file level CodeLens for all file types. Now you can get change history as a chart, allowing you see patterns in code changes. CodeLens allows developers to focus on their work while still gaining insight into their code.
Why mobile developers should choose Visual Studio
These are just some of the features available in the next version of Visual Studio. I am really impressed with what’s coming. I have only started to scratch the surface of what Visual Studio can do as I haven’t had a chance to try out the enhancements that were made to the architectural tools. I am also looking forward to learning about the tools available to Azure development. Mobile development is relying more and more on cloud services to provide value. As such, mobile developers are finding they need to delve in to the world of Azure development.
Microsoft is committed to keeping up this rapid release pace. The company is also committed to ensuring that its tools are up to date so that developers can keep up too. If there is a piece of functionality that you feel is lacking, I recommend submitting your feedback. They are open to the suggestions and want to make their products the kind of products that people want to use. The only way they can ensure that they reach their goal is to accept the feedback and incorporate it into their code. Going forward, if you don’t participate, you can’t complain.