Absence of media coverage regarding the lack of XP support in VC11
April 6, 2012 1 Comment
As you might have noticed, there is a lack of mainstream media coverage when it comes to the lack of XP targeting support in VC11.
Around the time of the release of the Developer Preview last September, when I attempted to convince the mainstream media that this would be a good thing to cover – I explained that most people still don’t know about it (as we were in the preview phase and the word hadn’t really gotten out), several media outlets did actually contact Microsoft for a statement. And the official PR received by them was:
“The VS 11 Developer Preview can create applications that will run on Windows XP. While Visual Studio 11 Developer Preview itself is only supported on Windows 7, Windows Server 2008 R2 and newer OSes, through the “multi-targeting” feature it can create applications that will run on earlier OSes, like Windows XP.”
And since the real meaning of the above was lost, they let the story die (and due to the lack of coverage, I believe the last 6 months were a wasted opportunity by Microsoft to add this support into the Beta). Face it, if an average person were to read the above, they would say, “surely VC11 is already supporting XP targeting, just use this multi-targeting feature” without really knowing what multi-targeting is. They would just conclude there’s no real story here because there’s a technical solution already.
Let me explain why I believe this answer is very misleading. While technically true, the statement hides a lot of the reality of the situation. Let me make this clear: multi-targeting is no more than a way to use older VC tools within the VC11 IDE. It is not a way to make the latest tools included with VC11 target XP. It is simply a way to continue to use the VC11 editor, while at the same time, using tools that come from older versions of Visual C++ (such as VC2010) or older Windows SDKs (such as Windows SDK v7.1).
What do I mean by tools? Here’s where it gets interesting. By tools I mean pretty much every component (except the editor and debugger itself) will no longer be available for you to use if you decide to use the multi-targeting feature in VC11. These are the things you will not be able to use:
1) The libraries (MFC, CRT, ATL, and ConCRT runtime) – instead they’ll be using old versions, not the ones that shipped with VC11. Meaning, no new threading libraries (std::thread), no standard C++11 STL libraries, no new MFC or ATL features, no concurrency runtime improvements (such as tasks).
2) The compiler/linker. The exciting new compiler features of VC11, such as auto parallelization, auto vectorization, new security options, improved linker speed, etc, will be completely unavailable to you.
3) All of the new C++11 language features (range based “for” is one example) introduced in VC11 which were encouraged during the Microsoft “Going Native” C++ conference.
4) The static analysis tools, and various other pieces of VC11.
It’s really a stretch to claim that native multi-targeting is useful at all. You would be better off using VC2010, as that’s all you’re really getting, but with the added feature of using a shiny new IDE. The main problem with multi-targeting is that you cannot mix and match tools. It’s an all-or-none situation. You cannot take the new VC11 compiler, and mix it with the old XP compatible CRT and MFC . You have to take it all of it or none of it. So multi-targeting is not a useful solution to providing XP targeting.
In conclusion, the lack of media coverage is directly related to the complete misunderstanding of the “native multi-targeting” feature. It is my hope that more publicity relating to the lack of XP targeting support is generated after more people realize that any adoption of VC11’s compiler, linker, libraries and tools will guarantee that you no longer can target XP (except through unofficial workarounds such as the ones I’ve been discussing in previous blog entries)