Visual Studio 2013 is the latest version of Microsoft’s premier, consistently productive developer franchise. At first glance this release feels more like a service pack update to Visual Studio 2012 than a new major update. The fact that it comes just a year since the last release reinforces this view.
These conclusions are a big disappointment to some and have contributed to a chorus of pundits arguing for sitting this version out. The key to making this judgment without haste is to look at progress outside Visual Studio that this new version enables developers to leverage. Only then can you decide if you should drive your development to Visual Studio 2013.
Enhanced Windows Store and Azure development is a big factor in where this new release will take you and why some might find it worth upgrading so soon after the last major release. If you are already doing Windows Store development or are entrenched in Azure as your platform, then Visual Studio 2013 is an obvious choice. Users of Team Foundation Server will almost certainly find a great deal to like about this new version, but for many others there simply might not be enough to make the jump—unless they skipped Visual Studio 2012 or got it included with an MSDN subscription, something Microsoft seems to be pushing users toward more firmly in each round.
To install or not install
There are two ways to get up and running with Visual Studio 2013. The traditional way is to straight up install it on your client machine. If during this process you opt for the default of installing all options, including Blend, LightSwitch and the Silverlight Development Kit, you will need 9.5GB of free space. Anyone with a history with Visual Studio knows the drill and can then start customizing.
The first customization choice is presented when you first launch Visual Studio, where the user is presented with the choice of what kind of development he or she intends to do on the system. In Figure 1, you can see the choice offered to configure the development environment based on the kind of development you do most. Unless one of the choices really speaks to what you do as a specialty, then choosing “General” is a safe bet. Once you are down this road, backups and system restore points are vital to ensuring that if something goes wrong, you can recover quickly.
The other, much newer way to get things started with Visual Studio 2013 is to use a cloud-based virtual environment hosted on Windows Azure. Microsoft now offers a full Visual Studio 2013 install as a virtual machine available via the gallery, and thanks to changes in the charge model that makes virtual machines free when they are turned off, you only have to pay for the time that you are using it. Just remember to power it down when you are done.
#!This cloud-based option has great potential, but let’s not forget that the most over-hyped word in technology in recent years is “cloud.” The world has rapidly filled with cloud offerings, many of which are either ill-conceived, disingenuous in that they really have nothing to do with anything cloud-related, or are doomed. Duane Laflotte, CTO of CriticalSites, explained how he approaches the risks around any cloud offering like this: “I always weigh the risk before building my company processes around systems in the hands of others, and anything cloud fits this category.”
Laflotte pointed out two examples of well-established cloud storage offerings that recently closed down. The first was Nirvanix, with a sudden announcement in September that caused its clients to scramble to find a new strategy and get their data someplace else. More recently, Symantec’s Backup Exec cloud offering was withdrawn and, as in the case of Nirvanix, is causing any client that built its processes around it to scramble.
Laflotte said his organization is not worried about Azure in this regard. In his opinion, there are some clear winners who offer or leverage cloud technologies in ways that seem much more likely to persist. Amazon springs to mind, and with Azure exceeding a billion dollars in revenue recently, Microsoft seems to be solidly on the same path. Microsoft is taking its cloud play very seriously.
If you have doubts, then hosting your development environment on Azure is not a great idea. However, there are real advantages to the cloud option for running Visual Studio 2013. If being connected is not an issue, then having your development systems running on a virtual environment managed by Microsoft on Azure can eliminate a lot of trouble.
The really good part of this cloud option is that it removes the issue of your development environment becoming unstable and leading to the dreaded full reinstall. You can also spin up multiple development environments, even one per project, which will be useful separation for consultants.
More cloud stuff
As mentioned earlier, the cloud is a big part of Microsoft’s strategy going forward and is a cornerstone for making its new Devices and Services Strategy work. It is no wonder then that Microsoft has molded Visual Studio 2013 in numerous ways that enable development for Azure and for the Windows Store. The breadcrumbs are getting bigger and bigger as Microsoft tries to lead developers into making Azure the platform replacement for Windows Desktop.
In that vein, another new capability of Visual Studio 2013 is represented by the new Office/SharePoint App templates, including the Cloud Business App. This template allows you to integrate the Office 365 and Azure platform into a cross-platform business app. The template consists of four projects, including an app for SharePoint Project 2013 projects that helps with communicating with Office 365; an HTML client project for the user interface (hence the cross-platform targeting capability); an ASP.NET project to bring the data into the solution; and a Cloud Business App project that brings the other projects together. This is not a magic cloud/cross-platform pill, but an attempt to provide developers a road map with some of the architectural bits filled in.
If you do not do HTML5 and JavaScript, or have no idea about which end is up with SharePoint development, the learning curve will still be steep.
The November 2013 issue of MSDN has a walkthrough at that shows how to use this template to build a sample recruiting application. To get through it you will need a SharePoint site, and the examples assume you will use one from dev.office.com. Again, the theme is to lead developers to MSDN and to the online services provided from Microsoft.
This is already a big audience in the enterprise developer space. If that is where your organization is going or where you want to go, then this is great, but for some this is another feature that will not speak to their needs and may fail to drive a need for Visual Studio 2013 in their environment.
#!The TFS connection
Team Foundation Server is a real lifeline to organizations with larger development teams working in the Microsoft world. Barry Gervin, Microsoft regional director and director of solutions delivery for Navantis (one of Canada’s largest Microsoft partners), runs a globally distributed team that spans three continents and 18 time zones.
When talking about Visual Studio 2013, he said, “It has new features that have a tangible impact on the day-to-day life of my team as they are building enterprise applications.” In elaborating, he said, “From a team collaboration perspective, we are excited to leverage the new interactive discussion capabilities in TFS and VS 2013.
“Although I like the idea of Team Rooms for having threaded discussions within Team System, I am most excited about being able to comment and have a discussion attached contextually to a change set. This moves a lot of what we often do with e-mail across distributed teams, right into TFS and next to the code. This is invaluable for people coming back and looking at code later on in a project. Being able to reference hyperlinks to work items fluidly by using # is very natural to what we do in e-mail (‘@bgervin, this change has caused a few problems with story #101 and bug #122’).”
There are several other updated areas that have improved the lot of people like Gervin. He confessed, “I never liked the embedded pending changes view in Team Explorer,” and went on to explain, “I’m delighted I can now undock this and keep a close eye on my source-code impact as I work throughout Visual Studio.” There are also new agile portfolio-management capabilities that he said allow him and his team to roll up work across a subset of teams and create work plans at a higher level than was previously available from just looking at individual backlogs.
Finally, during our discussions, Gervin said that while “debugging improvements in Visual Studio are not usually the most obvious or quick-to-be-adopted features in Visual Studio, in 2013, the visual call stack combined with the ability to annotate with your own notes is fantastic for untangling the thorniest of problems.”
As if to confuse us as much as possible, Microsoft recently renamed Team Foundation Service to Visual Studio Online, and announced it with the launch of Visual Studio 2013. In a blog post, Microsoft vice president S. Somasegar described Visual Studio Online as “a collection of developer services that runs on Windows Azure and extends the development experience in the cloud.”
TypeScript in Visual Studio 2013… almost
The efforts to make a better JavaScript in the form of TypeScript have generated a great deal of excitement, with the topic covered regularly in User Groups and Code Camps everywhere. TypeScript adds types, classes and modules, and lets developers benefit from features that are missing from JavaScript, but compiles to standards-based JavaScript. Think of it as a way to type a message with no slang and abbreviations, and then having it output perfectly formed, grammatically correct prose.
The hope was that TypeScript 1.0 would ship with Visual Studio 2013. We almost got it, but not quite. In a twist, the New Project dialog in Visual Studio 2013 does contain a TypeScript template, but instead of actually being a template, it is an invitation to install the latest version of TypeScript for Visual Studio (see Figure 3). This then redirects you to an HTML page that brings you to the download for TypeScript for Visual Studio 2012 and 2013. As of this writing in early December, this downloaded TypeScript is version 0.9.1.1.
#!Edition drama, featuring CodeLens
Each time there is a major release of Visual Studio, there is some controversy regarding what each edition provides, but more importantly what each edition deprives at the lower end. Visual Studio 2013 is not only not an exception, thanks to CodeLens only being available in the Ultimate edition, it seems to be worse this time with a number of blog posts and articles lamenting this decision and heavily criticizing Microsoft. This is the focus of most who are making the argument to skip Visual Studio 2013, unless you have access to the Ultimate edition.
CodeLens is a feature meant to keep developers in the code editor by providing important data for understanding the status and back story of the code. It is easy to assume that this would be a benefit for developers regardless of whether they work for a multi-national corporation or alone in a garage. Normally the grousing is minimized when higher-end editions (read: higher-cost) have features more suited to developers working on larger projects and on things typified by larger organizations.
CodeLens, at first glance, does not seem to fit into this characterization, and some have claimed it is the best new feature for developers in all of Visual Studio 2013. If you delve deeper into CodeLens, there is the other side to the decision, which revolves around TFS 2013 and its version-control system, as well as Lync being used by your development team in order to get everything that CodeLens offers.
For those who will have access to the Ultimate Edition, CodeLens provides a heads-up display that for a lone programmer provides reference counts for simple code and a great deal of detail for more complex and long-lived code worked on by teams. After trying CodeLens for a simple, single developer project, it really is not all that exciting. It shines when it can show links to TFS Work Items and presence information for the developers involved in the code at hand.
As good as the CodeLens feature is, there are limitations. A big one is that it will not track references for your code in XAML or ASPX files, so you might end up with an incorrect count in the references presented.
Peek definition
When a developer is in the part of the editor (where his or her attention belongs), then anything that takes them out of “the zone” is bad. Anyone who has worked on writing anything that requires focus should relate to the fact that interruptions can be a poison pill to productivity. For that reason, anything that lets developers stay in the zone is good. CodeLens helps with this mission, and Peek Definition works even more often in serving this purpose.
Peek Definition lets you not only see code for a procedure called in the code at hand, but it also opens it in a window that lets you edit it without losing the focus on the code. For this reason it can be argued that Peek Definition, rather than CodeLens, is the biggest new feature added to Visual Studio 2013.
It is a marked improvement on the previous mechanism of right-clicking on a method or procedure name and choosing Go to Definition, since the Peek Definition keeps focus on the code at hand while the latter whisks you away to wherever that definition lives in the solution. Navantis’ Gervin listed it as a huge improvement for his development, saying, “The new Peek Definition gives me that next layer down while encouraging me to stay focused where I am.”
He went on to confess, “Historically, when spelunking code, I would quickly get myself into trouble with ‘Go to Definition’—drilling further and further, opening up tab after tab until I forget where I was.” Distractions like this are the enemy of productivity, and Peek Definition is a revolutionary way to avoid it.
#!.NET and ASP.NET 4.5.1
Visual Studio 2013 ships with .NET Framework version 4.5.1, but as with the last few versions, you can target any version of the .NET Framework. The only significant change between .NET 4.5 and 4.5.1 is that the latter supports Automatic Binding Redirection for assemblies.
Redirection of assembly versions has been available since .NET 2.0, and it allows you to specify an override such that a different version of an assembly will be used. This is a situation many developers seek to avoid since it is not common knowledge that there is a mechanism that is available to work around it. For example, if you have a project that targets a specific version of the .NET Framework, but depend on an older (or newer) version of a type definition such as XML or some other class that has evolved over time, then you can direct the system to use the desired version. In .NET 4.5.1, this is done automatically when the compiler detects it for both Windows and Web applications.
The ASP.NET team was quite busy in this version of Visual Studio, and ASP.NET has what looks to be the longest list of new features of any piece of Visual Studio 2013. Sure to be a favorite for Web developers is what Microsoft is calling One ASP.NET. When creating a new ASP.NET project, picking Web Forms no longer means that you are barred from leveraging features from MVC in the project. As seen in Figure 2, no matter which of the templates you pick, additional folders and references can be added to the project. For example, many developers require the control for Search Engine Optimization that is afforded by using MVC, but they do not need that level of control for ancillary pages, which might be easier to build with Web Forms. Now the project can benefit from the best of ASP.NET.
An updated version of SignalR (SignalR 2.0) is available with Visual Studio 2013, and it takes this very interesting technology to a wider audience. SignalR allows all users of a site to see updates from each other through the magic of JavaScript. It is very handy for chat programs (the default demo used to explain the technology), but if you think about it, other cool uses are bound to surface.
I recently oversaw one SignalR development project that allowed users recording podcasts or on conference calls to signal each other through a browser without typing that they want to interject when the current speaker finished talking. For podcasts, this eliminates a great deal of editing as people try to break in for times when the participants are remote from each other and recording individually. For conference calls, especially during joint presentations, having a button that lets you raise your hand helps create seamless transitions. The new version brings abilities like sending messages to selected groups of users instead of broadcasting them to all. There is also expanded client support to include iOS and Android clients thanks to libraries from Xamarin.
There are many more items on the list for ASP.NET 4.5.1, but the update to the Identity system is a big one. The Membership Provider System added with .NET 2.0 was a great new feature, but a great deal of water has passed under that bridge since then.
The new ASP.NET Identity system, sometimes referred to as One ASP.NET Identity, preserves the old options of being able to store credentials in a SQL database, but adds support for testability, social media authentication, and claims-based authentication.
#!C++ continues toward the mainstream
Microsoft has its promise of working to catch C++ up to the other languages, with features such as auto complete for closing braces, such as parentheses, curly braces and square brackets. Other features developers in C# and VB.NET take for granted are better code formatting, improvements to Find All References, and a resizable properties window. Many others would have undoubtedly evolved if C++ had been maintained over time as C# and VB.NET have been maintained and improved.
There are also enhancements that make C++ better for Windows Store development, and the addition of a REST SDK. As with past versions of Visual Studio, there are a bunch of other updates that are very niche and too numerous to list, but many of the C++-related ones are focused on faster speed in either the resulting code or the development environment. C++ already has a reputation for the best language if speed is your primary need, and it looks like Microsoft is going to maintain that aspect.
A whole lot more
As we have seen, there are a number of interesting new features in Visual Studio 2013, even though it does not have as many new features as some previous releases. But there are still too many to detail completely here. Regardless of how you use the development environment, there are a number of features that should be of great interest, such as Edit and Continue support for 64-bit applications, and the fact that MSBuild is now being included in Visual Studio instead of as part of the .NET Framework.
The key to enjoying any new version is to check out the edition comparisons provided by Microsoft to ensure the features you want or need are in the edition you have or are looking at. This will prevent disappointment like that associated by the choice about CodeLens.
It was a bit of a surprise to see that the Professional edition includes features like Architecture Explorer, as well as collaboration features like Code Review and PowerPoint Storyboarding. Normally these kinds of features would be expected to only exist at the Ultimate level. Overall it would probably have been a better choice to move these items to Ultimate, provided CodeLens could be brought into the Professional edition.
With Microsoft seeming to be releasing everything on a faster cadence, it might not matter so much as they can switch things around and expand these features to lower-end editions with each release.