The new Performance and Diagnostics hub in Visual Studio 2013 consolidates three existing tools -- the CPU Sampling tool (for .Net or C++ apps), the JavaScript Function timing tool, and the Performance Wizard (for profiling of desktop and server apps such as executables and ASP.Net applications) -- with four new tools: the Energy Consumption tool (for Windows 8.1 store apps, since they can run on low-powered tablets), the XAML UI Responsiveness tool (for XAML-based Windows Store applications), the HTML UI Responsiveness tool (for HTML/CSS/JavaScript-based Windows Store applications), and the JavaScript Memory tool (for HTML/CSS/JavaScript-based Windows Store applications). There is no Energy Consumption tool for Windows Phone applications as yet.
Visual Studio 2013 simplifies the creation of ASP.Net projects with a single wizard that lets you mix and match Web technologies.
Energy consumption is a new consideration for desktop and server application developers, although it has been a driving concern for mobile application developers for years. If just one desktop developer learns to replace his busy-wait loops with async code while profiling Windows Store apps, the world will be a better place.
In other diagnostic news, heap analysis has been extended from C++ to .Net, and Just My Code debugging has been extended from .Net to C++ and JavaScript. In addition, if you install Visual Studio 2013 on Windows 8.1, you can see async continuations in the Call Stack window and async operations in the Tasks window.
Test-driven development
The improvements I discuss in this section were actually introduced in Visual Studio 2012 Ultimate, but I think they are important enough to include here.
Test-driven development (TDD) is near and dear to my heart, but I didn't used to be able to practice it on Microsoft code the way I could on Ruby code, though I was an early adopter of NUnit. What made TDD untenable for me was that IntelliSense would blindly autocomplete the names of stubs I hadn't yet written to some random but similar label.
Improvements to IntelliSense over the years alleviated this problem somewhat, and Visual Studio 2010 brought unit testing into the tent in a way that was only moderately incompatible with NUnit. The Test Explorer in Visual Studio 2012 unified NUnit and MSTest, as well as unified .Net and unmanaged C++ unit testing. Another set of essential features for TDD was introduced at that time: Microsoft Fakes.
The Fakes framework generates mocks for classes and APIs that you want to exclude from a unit test. For example, you don't want to unit test from live data; it changes from run to run, and the test will fail even though it's working correctly. Instead, you want to unit test from fixed data and with APIs that always return the same results. Indeed, for a unit test, you want to use a stopped clock, not DateTime.Now.
There are two categories of Fakes: stubs and shims. Stubs are mocked classes generated by the Fakes framework. You use them to isolate the classes under test from other classes in your application that return variable results. Shims are runtime modifications of your calls to external applications, services, and system APIs. Ideally, you would always use stubs when they were applicable, and you would only use shims when forced. On the other hand, if you're lazy, shims will always work, albeit slowly.
If you've installed the current Windows Azure SDK, you can create Azure sites and databases directly from Visual Studio 2013.
Sign in to Visual Studio 2013
In previous versions of Visual Studio, you either installed a pre-registered version of the product from MSDN or you activated a demo version of the product with a code. Visual Studio 2013 gives you another option: Sign in with your Microsoft ID.
This is good for Microsoft -- it can phone home and make sure you have a current MSDN subscription for the product you're using. On the other hand, if you want to avoid that, you can enter an activation code.
Nevertheless, I sign in because it lets me synchronize multiple installations of Visual Studio 2013 on different computers using a roaming profile. What does it synchronize? Most important, it synchronizes your Team Foundation Services account credentials. But it also synchronizes your color scheme and font choices, your language preference, and your keyboard settings. If you move among many shared development computers and have a highly customized keyboard map, synchronization is a huge convenience.
Ultimate programming
As you've probably gathered by now, Visual Studio 2013 presents a huge learning curve to new users. Visual Studio 2012 is composed of about 50 million lines of code, and Visual Studio 2013 is bigger. There are so many actions in Visual Studio and TFS, so many documents in MSDN, so many samples to go through, and so many videos to view, that the learning curve for a new developer can appear overwhelming. While you can learn Visual Studio and TFS from the product and MSDN, it might not be the best way to use your time unless you actually enjoy solving giant puzzles.
In the past, I advised new Visual Studio developers to buy a book or take a course to get themselves up to speed. Now, unless you have a mentor or your company has budget for live teaching, I suggest you sign up for Wintellect Now and take those courses online. In particular, if you want to learn about developing Windows Store apps, go through Jeff Prosise's course, starting with the introduction to Windows RT. Similarly, if you want to learn about Windows Azure, go through Jeffrey Richter's course.
Let me point out that the Visual Studio Ultimate product I've reviewed is not appropriate for everyone. If you're new to Visual Studio, start with the free and stripped-down Visual Studio Express product that best suits your needs, be it for Web, Windows (that is, Windows Store), Windows Desktop (C#, Visual Basic, and C++), or Windows Phone. Unless you need more than one of these, stripped-down is good. Frankly, even the Express products have learning curves.
If you're a student, you can start (and perhaps end) with a free copy of Visual Studio Professional 2013, which will get you all the basic single-user development tools, at the possible cost of being a little overwhelmed.
Once you're sure you can use Visual Studio, then you can download the document that describes all the Visual Studio purchase options. It's 33 pages long -- I kid you not. Did the young Bill Gates who slept in the computer lab at his high school ever imagine his company would emulate the most obnoxious features of IBM? Somehow I doubt it. What's worse is that the 33-page document doesn't contain any prices.
I'll give you the short pricing summary. If you buy from the Microsoft Store you'll see prices ranging from $299 for an upgrade to Visual Studio 2013 Professional to $13,299 for a new full copy of Visual Studio Ultimate 2013 with MSDN, the product I reviewed here.
Professional is for independent developers. Premium is for developers and architects in teams. Test Professional is for testers in teams. Ultimate is the kitchen sink. If you want one of the high-end SKUs with MSDN, see the comparison on the MSDN site. Visual Studio Professional is the only Visual Studio product available without an MSDN subscription.
In summary, Visual Studio 2013 improves a developer's productivity in many ways, as compared to its predecessor: in the editors, in the debuggers, in the frameworks, in the wizards, and in the performance and diagnostics tools. Visual Studio 2013 Ultimate goes beyond development to unit testing, smoke testing, load testing, and all the way to continuous builds and release management.
Visual Studio 2013 installs side by side with Visual Studio 2012, and the projects and solutions are largely interchangeable. Upgrading from Visual Studio 2012 Professional to Visual Studio 2013 Professional costs a mere $99 until the end of January, and upgrading any other edition is just a matter of renewing your MSDN subscription. I'd suggest that, unless you discover incompatibilities between compiler versions that affect your code, upgrading is a no-brainer.
- Big improvements to the application lifecycle management portion of the product, including the introduction of a hosted Team Foundation Service that allows you to build, test, and even deploy in the cloud
- Incorporation of InRelease, a release management product, into TFS
- Vastly improved tooling for Web development, including a single ASP.Net project wizard that allows you to combine the different Microsoft Web technologies easily
- Improved code editing and browsing, including a Peek Definition action that allows you to look up code definitions without disturbing your underlying edit window
- Monitoring agents have become lightweight enough for continuous monitoring of production ASP.Net sites, and IntelliTrace lets you go to the code that caused a fault in production using the dump file
- Better support of JavaScript, HTML, CSS, and Python editing and debugging
- JavaScript editing is slightly behind C# editing in that it lacks the Peek Definition action
- With so many actions in Visual Studio and TFS, so many documents in MSDN, so many samples, and so many videos to view, the learning curve for a new developer can appear to be overwhelming
- Visual Studio 2013 has three color schemes, all of which are ugly and have top-level menu items ALL IN CAPS
This story, "Review: Visual Studio 2013 reaches beyond the IDE," was originally published at InfoWorld.com. Follow the latest developments in Windows and application development at InfoWorld.com. For the latest business technology news, follow InfoWorld.com on Twitter.
Read more about application development in InfoWorld's Application Development Channel.
This story, "Visual Studio 2013 reaches past the IDE" was originally published by InfoWorld.