Before I dig into this question, I get that XP is over 10 years old. And that Microsoft wants users to upgrade.
But here are some other facts:
- Windows XP is the most used operating system on the planet! It has 44% of the market share. This means a high percentage of users are still using it, so developers have to support it.
- Windows XP is still on (extended) support until April 2014.
- .NET 4.5 is an In-Place Upgrade. That means that once you install it, you are no longer able to see issues that will happen on a .net 4.0 machine. (Because those dlls are gone.)
Some people argue that it has Visual Studio 2012 has "support" for XP with the "Targeting" feature. But this feature has so many flaws it is stunning.
Basically, when you "Target" .net 4.0 your compiler will tell you if you have used a .net 4.5 feature. That is it! Nothing else.
But once you start running, all your runtime stuff is really using .net 4.5 (even if you are targeting .net 4.0).
An example of how this is bad can be found in the bugs fixed in .net 4.5. If you are developing "Targeting" .net 4.0 and your code relies on a bug that is fixed in .net 4.5, you will not know that your code is broken (for 4.0) until you run it on a separate machine that ONLY has .net 4.0 installed.
"Fine!" you say. I will Remote Debug on a Windows XP machine. But that is also not supported.
This means that testing for .net 4.0 compatibility cannot happen at Debug time. It must be later down the chain. And the further down the chain it goes the more those bugs cost to fix.
The best part about all this craziness is that it based on .net 4.5. So those who think, "I will just install Visual Studio 2012 to use for my new apps and use Visual Studio 2010 for my old apps" are wrong. And probably will not know it until they see bugs on production Windows XP machines that they cannot reproduce on their .net 4.5 developer machine.
Anyway, this post is a bit of a rant. But it is just driving me nuts that Microsoft is not supporting the most used Operating system on the planet. They should wait until usage dies down (like they did with Windows 2000. It was at 8% when they dropped it from .net 3.0.)