I have encountered a few instances of application failing to install because of the .Net Framework on the machine is either too old or too new. This happened quite a lot during my testing of Microsoft SQL Server 2005 Beta and CTP. I figured it was ok because, after all, it was Beta, although I wasn’t too happy about it. Simon has a good blog entry about this topic, where Microsoft SQL Server 2005 RTM cannot cleanup older versions of .Net Framework. If you have installed Microsoft SQL Server 2005 Beta or CTP, you really don’t have much choice, short of rebuilding your machine, which is what I did.
It happened to me again within the last couple of months, although I couldn’t remember what application I was playing with. Yesterday, as I was testing SyncToy recommended by my readers, this problem resurfaced. So I decided to blog about it.
During SyncToy installation, I got the message below:
This setup requires the .NET Framework version 1.1.4322. Please install the .NET Framework and run this setup again. The .NET Framework can be obtained from the web. Would you like to do it now? Yes Button No Button
Yes Button will lead you to http://msdn.microsoft.com/netframework/downloads/updates/default.aspx. From here you have the choice of 3 .NET Framework versions to choose from as of this writing, among Service Packs, SDKs, Compact Framework, Redistributable for Windows 2003, and others. And nowhere does it mention version 1.1.4322, which is required according to the message mentioned above.
Now I have .NET Framework 2.0.50727 on my machine. I don’t know enough of the differences among those versions. But it upset me.
During the MTS, COM, and COM+ days, one common problem developers encountered was DLL hell. It was caused by incompatibility among different versions of a same DLL (Dynamically Linked Library) file. You needed to be careful when you register DLLs using regsvr32. Microsoft has touted .Net Framework as a solution to address that problem. Judging from my personal experience so far, I am not convinced. I hope we won’t have a .Net Framework hell in its place.
I know .Net Framework is still relatively new, so I would not be too harsh. But I think it is something that needs to be addressed before it escalates. For example, backward compatibility is something to look at seriously; more robust and reliable .Net Framework distribution needs to be researched; all tools released by Microsoft should be recompiled so different versions would be available for download for different .Net Framework install, etc.
To find out the version of .Net Framework on your Windows PC, check the registry key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\vX.X.XXXXX, where X.X.XXXXX is your .Net Framework version number.
Granted, this does not only happen on Windows platform. Linux sometimes has similar dependency issue. That’s why it is always a good practice to test that before you do an RPM install. Use rpm -i PackageName –-test to find that out, as I learned during my attempts to install some SMTP tools on Linux described here.
By the way, I don’t understand why marketing people invented the .Net lingo. Put it mildly, I am not particularly fond of it. I remember reading somewhere before that Microsoft decided to drop the lingo a while ago. But it is still here today. Or maybe it got scaled back. Maybe Windows 2003 was to be called Windows .Net Server initially. Anyway, I will rejoice if .Net lingo is totally dropped. But it does not look like it is going to happen.