Microsoft has just declined a UserVoice request that the upcoming .NET 4.5 should be made available for Windows XP and Server 2003. With 3,322 votes this was the second most popular request on Microsoft’s own feedback site, proving once again that actively providing any sort of feedback to Microsoft is generally a waste of time.
Why this request? The problem is that .NET 4.5 is an in-place upgrade for 4.0 that fixes a number of significant bugs in the older version. Once you install .NET 4.5 on your developer machine, you can still target .NET 4.0 – but what you’re actually running is an updated 4.0 subset of 4.5 rather than the .NET 4 that’s installed on your XP/2003 deployment machines. As discussed on the MSDN Forums, this means that you cannot test for errors that are specific to the older version. You’ll need to reserve an actual 4.0 machine for that. Even worse, both Visual Studio 2012 and Windows 8 will ship with .NET 4.5 – so if you need to target .NET 4 on XP/2003 you cannot use either product!
This is a very big deal for enterprise developers who must support .NET applications on XP/2003 machines for years to come. Microsoft’s own support for these operating systems extends to 2014/15, making this decision even more incomprehensible. Faced with the choice of either upgrading all their Windows XP/2003 installations or not upgrading to Visual Studio 2012 and/or Windows 8, what do you think most companies will do?
2013-05-14: The decision to make .NET 4.5 an in-place upgrade to 4.0 causes conflicts with Microsoft’s own tool chain. As Steve Johnson noted on Stack Overflow,
the underlying debug APIs changed significantly between 4.0 and 4.5, such that you cannot debug a .NET 4.0 dump with the .NET 4.5 You’ll need to manually copy over
SOS.dll from an actual .NET 4.0 machine! Michael Stum describes the error and remedy in greater detail.
2016-05-03: Microsoft has put up a comprehensive Introduction to .NET Framework Compatibility which explains the situation and gives advice on how to handle compatibility issues. At the time of this writing, new .NET 4.x releases continue to be installed as in-place updates.