Visual Studio is no longer simply an IDE, no longer a place you go just to write and debug C/C++ code. It has long since become something of a development mashup. It's where you go to tackle any task in the development process, regardless of the target.
It's where you head to do your LightSwitch development, your SQL Server development, your Web application development, your Windows Azure development, and your ASP.Net or Windows Forms development in C#, F#, VB.Net, and - oh, yes - good old Visual C++. Naturally, it's where you build applications for Azure and Windows RT.
That's not all. With the new Visual Studio 2012, you have to start wondering what you don't do in Visual Studio 2012. It's not the Master Control Program by a long shot ... but it's trying.
As with earlier releases of Visual Studio, Visual Studio 2012 is available in several editions. The Express editions are, of course, free. Whereas some of the non-free editions target QA and Team Managers, the Express editions are intended specifically for developers:
Express for Windows Desktop. This version of Express caters to the more traditional developer, one employing the Windows Presentation Foundation (WPF), Windows Forms, or the tried-and-true Win32 libraries. This edition also supports the creation of Windows 8 Store applications.
The top of the Visual Studio 2012 line is the Ultimate edition, which is the version I tested. Ultimate installs enough gigabytes (about 10GB on my system) of development tools and libraries and documentation to occupy a person for a lifetime. You can target any of the platforms mentioned in the above list of Express editions, and you'll find support for all the .Net languages. Plus, Ultimate edition includes modeling, lifecycle management, testing, and development team management tools.
Next, there's the Premium Edition, meant primarily for agile development teams. It includes tools for task planning and development workflow. The Professional edition is meant for small development teams, and it includes tools for building applications on the Windows desktop, the Web, in the Azure cloud, and even Windows-supported mobile devices.
The Test Professional edition is obviously intended for QA team members. It incorporates tools for managing tests and test plans, executing tests, and analyzing test results.
It is not possible to cover all of the features of Visual Studio 2012. This article will concentrate on those new features developers are likely to be interested in. Even then, it will be a challenge to do the IDE justice. Details for all the editions - their intended users, as well as a comparison of features provided as well as omitted - can be found at Microsoft's Visual Studio website.
Building Windows Store apps
In such a broad panorama of editions, target platforms, and target applications, it is difficult to identify a sole, outstanding, key new component of Visual Studio 2012. However, it is safe to assert that -- given the proximity of the release of Visual Studio 2012 with the release of Windows 8 -- the new IDE's support of the new operating system is at the top of the list.
Windows 8 presents a new kind of application: the Windows Store application (sometimes just called a Windows 8 app). Originally referred to as a Metro Style application, a Windows Store app or Windows 8 app is a "whole screen" application that runs on Windows 8 or Windows RT. It is not composed of multiple, overlapping windows (which is a bit weird given that it's running on an OS called Windows). The user interface of a Windows 8 app is clearly optimized for finger or stylus input, but can employ mouse or keyboard. The display surface is partitioned into a grid of tessellated rectangular regions, and the fundamental onscreen object is a tile, rather than an icon. On the startup screen of Windows 8, of course, the applications themselves appear as tiles.
You construct a Windows Store app using several language combinations, typically a language pair. A pair of languages is needed because the application code consists of both front-end and back-end components. The front-end (display) component is defined using a declarative language like XAML or HTML5; the back end (execution logic) executes in a procedural (or object-oriented) language such as C# or C++.