Note: This is strictly my opinion and in no way should be conveyed as the opinion of anyone else.
Now that VS2013 Preview is available I can provide some feedback about it. Then I can provide my opinion about whether it is a mandatory upgrade or not.
Honestly, there are really no new features in VS2013 that are really critical. VS2013 is a minor update, in my opinion, to support Win 8.1 and .NET 4.5.1. There are no new language features or changes to even blog about. The exception is with WinRT apps. As such don’t expect a VS2010 to VS2012 jump in performance, behavior or features.
The C++ team continues to make improvements in this release. If you are using C++ then you’ll be glad to hear that C++ is more compliant with the latest standard. There are also some useful enhancements that you’ll want to check out. If you don’t use C++ then none of this will matter to you.
The debugger team has added some new features as well. The one feature I’m really excited about is viewing the return value. Since the early days of C++ it has been possible to see the return value of a function even if the calling program didn’t capture it. .NET has never had this feature, until now. I cannot count the times I wanted to see the return value of a function but wasn’t capturing the result. Therefore I had to temporarily modify my code to capture the results and then make sure I undid the changes before checking in the code. With VS2013 method return values show up in the Autos window even if the value isn’t being explicitly captured. Awesome!!!
Edit and Continue
Are you sitting down? One of the most requested features in VS history is EnC support for 64-bit managed code. MS has always said that this feature required both CLR and Windows changes to support and the demand wasn’t there yet. Well starting with VS2013 EnC with 64-bit managed code is supported. EnC is not trivial to implement and I haven’t seen it in action yet so I cannot confirm whether it is as solid as 32-bit EnC but this is at least a step forward.
Managed Crash Dumps
One of the challenging aspects of managed code is debugging a crash dump file. Managed memory isn’t like native memory so finding objects and piecing together chains can be hard. With VS2013 you can load a managed crash dump into VS and VS will be able to view the dump as a managed process such that you can see managed memory objects. I haven’t been able to play around with this feature to see if it provides any real benefits but it sounds promising.
Going along with the roaming profile concept of Windows, VS2013 is getting on the bandwagon. One of the biggest issues with setting up a dev machine is getting your VS configured the way you want. With roaming settings this becomes less of an issue. Provided you hook VS up to your MS account (an option when you start VS the first time) then VS will pull down your VS profile. This allows you to share VS settings across machines. In this first release it isn’t clear what all will be pulled other than theme and possibly window layouts but still this feature has the potential to grow into a truly useful tool.
One thing that caught me off guard is the fact that the roaming settings appear to be tied to your online TFS account rather than with your MS account. This means you’ll have to set up a TFS account whether you want the rest of the services or not. Even after setting all this up I didn’t see any options to configure settings for VS. In reality you have to go to Tools\Options –> Environment\Synchronized Settings to specify whether roaming settings is enabled or not and what options you want to roam. I like the fact that I have some choices I just wish it was easier to get to. At this point it seems disconnected from my account link.
When Win8 was released the mandate from MS was for the products to comply with the new UI features. VS did that and the backlash during beta was intense. All caps menus and lack of color really angered a lot of people. MS added some color back before final release but were pretty adamant that the new UI was better. After release the anger still hasn’t fully subsided but MS has learned a valuable less. One of the big changes coming in VS2013 is adding more color back into the UI. This will make it far easier to identify things like selected items and to distinguish icons. There is still work to do but I’m glad the VS team listened and are retreating on their original decisions. There are also some other UX treatments being made such as altering lines to make things look nicer overall. Compared to VS2012, VS2013 has a much friendlier UI.
There is now a notification icon next to the Quick Search control. VS will now display notifications here rather than (or perhaps in addition to) toast notices on the Task Bar. It is unclear yet whether extensions will be able to hook into this and whether extensions/updates will be displayed here as well.
Outside the chrome stuff there are various tweaks and changes to allow more formatting of code. Most of the changes aren’t compelling enough to warrant an upgrade but they are certainly nice to have.
One feature that is really nice is the new Code Indicator feature in the editor. Above methods you will now see informational data such as the # of references to that method (think Find All References). It is a link so if you click on it you’ll get to see the actual references. Find All References is a heavily used feature in my world so this unto itself is worth its weight in gold.
Code indicators also include other things like test results. This is configurable from Tools\Options –> Text Editors\All Languages. I was privileged to be able to play around with its predecessors in VS2012 and I can assure you know that when I lost that functionality on the last VS update I really missed it. This feature is incredibly useful.
VS2012 and TFS2012 have had partial Git support for a while. It is officially integrated in VS2013. If you are a fan of Git then it’ll be there for you.
Another nice change is related to multiple source control providers. Some times you want to use an in house TFS server and other times you might want to use TFS Services. Unfortunately this process isn’t streamlined. The process of connecting to a local TFS server remains the same. For TFS Services you’ll create a new TFS server connection as well. But this triggers a login prompt to TFS Services even though I’m already hooked up via my MS account. This same workflow also occurs when you are trying to edit your profile. Hopefully this will be resolved before release. Once you get past all that though you can now see each of your source control servers and their projects which makes it real easy to switch between them.
When VS2012 came out one of the very big features was backwards compatibility with VS2010 SP1. This is one of the reasons that VS2012 did so well. It allowed for mixed development. VS2013 makes this same guarantee but the link here indicates a slightly different story. Some project types indicate VS2010 SP1 support and others don’t. There are even duplicate entries for the same project type with different compatibility statements. Hopefully MS will clear this up before release. Right now it would be safe to assume VS2012 is the only compatible version.
The question boils down to whether VS2013 is a mandatory upgrade or not. My initial thoughts were no unless you were doing WinRT work. However given some critical new features like Code Indicators, 64-bit EnC and seeing return values of methods I’m now in the camp that VS2013 is going to be a good upgrade provided the upgrade price is reasonable.
One thing that has not been clarified yet is the upgrade cost from VS2012. Will there be an upgrade price or will devs have to pay full price? If there is no upgrade price then I don’t expect VS2013 to do well at all. There simply isn’t any critical features that justify the high cost of VS. Of course most devs either have MSDN or SA so the cost isn’t relevant but hobby developers or those who didn’t go the above route will be out of luck. We’ll have to wait and see until MS publishes the price before we can decide.