Visual Studio 2012: 50 Shades of Grey by Microsoft
It's a good thing looks aren't that important, right?
Review Microsoft offended thousands  in April with a preview of its next Visual Studio, a John-Major-inspired, grey affair intended to take Microsoft’s all-encompassing IDE closer to the look of Windows 8.
Thousands gave the new look a thumbs-down on the Microsoft UserVoice poll, with people demanding a return to colour.
The day of reckoning has now arrived as, with the release to manufacturing of Windows 8, Microsoft has made Visual Studio 2012 available to subscribers on MSDN – or for free as the Express series.
What do we get? The revamp retains something of the Metro look, and you can choose between Light or Dark themes. Microsoft has kept the changes it added following criticism of the preview, with a few splashes of colour , but the changes are subtle and the IDE still looks grey and washed out.
Microsoft’s goal was to enable developers to focus more on their code, but there were few complaints about distracting colours in earlier versions, whereas the new IDE does tend to make all the icons look the same. It also seems odd that Microsoft puts so much energy into IDE design rather than, for example, implementing more of C++11 in Visual C++.
That said, the icon designs are something you soon forget about when working. Other things matter more. Performance is good and the IDE is rich in features without feeling cluttered.
Change what's not broken: Mostly monochrome icons
Hit New Project and there are hundreds of templates to choose from, including one for Windows Phone 8 which currently trails out with a “Coming soon” message. The nearly-forgotten Silverlight is still supported, while for desktop applications you can choose between several C++ types, and Windows Forms or Windows Presentation Foundation (WPF) for .NET.
Web options include ASP.NET Web Forms, MVC (Model – View – Controller) 3 or 4, with sub-options for Internet, Intranet or Web API, and ASP.NET or Razor view engines.
A quick look at some notable features
First, Windows 8 development. Microsoft is pushing its new platform hard, and Visual Studio has all you need to build what the IDE calls “Windows Store” apps. Given that the platform is new, the tool support is impressive. You can design the user interface either in XAML, the XML language first used for WPF, or in HTML. XAML has a two-way visual designer, so you can edit either in code or visually and the changes are synchronized. A separate application called Blend provides a design tool for both XAML and HTML.
You can debug a Windows Runtime app either by running it locally, or in a simulator, or on a remote device. The simulator is intriguing because it is actually a remote session into your own machine, providing a way of running not-Metro apps in a window. The simulator lets you adjust resolution, fake multi-touch, and take screenshots. Note though that it is not a safe environment, since it is a real session on your development machine.
Once complete, a Store submenu has all the options you need to publish an app to the Windows Store. Apps are subject to both automated and manual tests, following which Microsoft signs and publishes the app. The manual element is meant to take no more than five days.
Blend, the visual user interface designer for HTML and XAML
Microsoft has made Azure deployment easier in this edition of Visual Studio. Azure apps now take several forms. If you choose the Cloud option in a Visual Studio template, you can create applications according to the old model: Web Role, WCF (Windows Communication Foundation) Role, Background Worker Role and so on. You can debug on a local Azure compute emulator. When it comes to deployment, you can generate and upload a certificate to authorise your PC, following which Visual Studio can easily publish the application, and even enable remote desktop to the Azure Virtual Machines.
.NET demoted for native code
Another form of Azure app uses the Infrastructure as a Service (IaaS) model. Create an ordinary ASP.NET application, then hit Publish, and you can choose Azure as a target. You can download a publishing profile from the new Azure portal, import into Visual Studio, and then it just works.
One consequence of the Windows client reset is that native code has been brought to the fore, while .NET has become one among several options. This means that Visual C++ in Visual Studio 2012 is increasingly significant. The main changes are in two areas.
First, there is support for the Windows Runtime via C++ Component Extensions (C++/CX), which lets you access the Windows Runtime API and build components that can be consumed by any Windows Runtime language. You can use regular C++ classes in C++/CX as long as they do not have public accessibility. You can also create DirectX 2D and 3D apps for the Windows Runtime.
Azure deployment is easier, but there's inconsistency between project types
Second, there is some support for C++ 11, though the extent of it is disappointing. The supported features are listed here . You do get features including lambdas, rvalue references, strongly-typed enums, and range-based for loops. Variadic (variable number of arguments) templates are missing though, along with numerous other features. Look elsewhere, for example to GCC, Clang or Intel compilers, for better C++ 11 implementations. The C++ runtime and libraries in Visual Studio 2012 do not support Windows XP, but are being revised to do so. In the meantime, you can use the Visual Studio 2012 compiler from the new IDE via a project setting, provided Visual Studio 2010 is also installed.
There is also a new unit test framework for C++, C++ AMP (Accelerated Massive Parallelism) for general-purpose GPU programming, and better support for parallel programming both in the libraries and IDE.
Visual Studio also includes LightSwitch, a remarkable tool that lets you start with a database design on top of which you build a complete application by adding metadata and code snippets. It is not quite model-driven development but comes close, generating multi-tier applications automatically. The main snags with LightSwitch are first, that it is harder to grok than old enemies like Access, and second, that it generates Silverlight applications which are last year’s thing. Microsoft is releasing an HTML code generator for LightSwitch which may revive interest. It deserves attention, being innovative and promising, but with so much else for Microsoft-platform developers to take in, LightSwitch may not get what it merits.
The help engine in Visual Studio 2012 is the best yet. Context-sensitive help works with both local and web-based documentation, and the document viewer is fast and responsive.
Visual Studio comes in four editions, which run on 32-bit or 64-bit Windows 7 or higher, though for Windows 8 development you need Windows 8.
Professional is the base edition and supports all types of development, but lacks most ALM features other than Unit tests, though Team Foundation Server Express is available for source code control and collaboration. The Premium edition adds code metrics, code coverage, UI testing, lab management for automated build, deploy and debug, Code Clone for finding needlessly repeated code, and ALM features – including backlog management, sprint planning and PowerPoint storyboarding.
LightSwitch application builder: Silverlight now but HTML is promised
Visual Studio Ultimate adds IntelliTrace historical debugging (the ability to capture a trace and set breakpoints in code after the event), web load testing and UML diagramming. All of these developer tools come with Blend.
Finally, the Test Professional edition supports most test features but lacks development tools. Some MSDN subscriptions provide Visual Studio as part of the bundle, alongside free software for test and development.
The is also an Express series: Web, Windows, or Team Foundation Server Express provides ALM tools including source code control and build automation for teams of up to five developers. Visual Studio Express for Windows only supports Windows Runtime applications – that is, the “Modern UI” or the platform formerly known as Metro – but Microsoft has promised a further edition which will support Desktop applications coded in C++, C# or Visual Basic.