35
votes

I am interested in installing the .NET 4.5.

But I have heard that it is an In-Place upgrade.

Since the users at my company uses Windows XP. I can't release any client side apps that use .NET 4.5.

I know I can target .net 4.0 when I code, but, if I install .net 4.5, is there risk of things working on my machine that will not work on a Windows XP machine (that only has .net 4.0)?

(By the way, I looked but did not see this question asked. If it has been asked, please point me to it and I will try to delete this one.)

3
4.5 confuses me more than others with WindRT in the mix.paparazzo
Do not install a beta on a production machine. I never not had a massive problem doing so. Use a VM if you want to play with it.Hans Passant

3 Answers

23
votes

Yes, there are risks of the sort you describe. The .NET 4.0 interface is unchanged, so if you target .NET 4.0, your program will compile and run on XP with .NET 4.0, but the .NET 4.5 implementation of .NET 4.0 contains bugfixes as well. If you rely on .NET Framework not being buggy, and the only available .NET Framework for XP is buggy, your program is going to experience those bugs. I've had this happen with Entity Framework, but there could be other bug fixes as well.

2
votes

I asked this question on the WPF Forum and was given basiclly the same answer that @hvd gave.

http://social.msdn.microsoft.com/Forums/en/wpf/thread/c05a8c02-de67-47a9-b4ed-fd8b622a7e4a

1
votes

The accepted answer is very relevant, but let me add an example of a situation where the 4.0 target compiled on a 4.5+ machine is something less useful than a 4.0 with fixed bugs.

If you have any ComReference in your projects, they will invoke tlbimp.exe from .NET 4.5 on the build machine. This may result in your software containing wrappers that reference, for example, a System.Reflection.MethodInfo.CreateDelegate(System.Type) method that only exists in .NET 4.5. You'll get a MissingMethodException on the WinXP machine.

This happened to me when working with the ComAdmin namespace, which are COM objects for access to the COM+ catalog, but I suspect that the problem may be wider.