.NET framework - two versions?

It appears that my computer currently has two versions of the Microsoft .NET framework installed: v1.0.3705 and v1.1.

Is this as it should be, or is it a mistake? What might have caused this? Should I uninstall the earlier version? Is there any trick to doing this so that disruption is minimized?

This is perfectly ok, don’t worry about it (trust me, I do this for a living).

Arwin’s right. And in about 6 months, you’ll probably find a version 2.0 in there as well.

So you just keep on accumulating them? I would have thought the newer version replaced the older one.

And suppose I wish to install the .NET framework on a computer that doesn’t yet have it - do I need to install both versions?

One of the important features of .NET is that it eliminates “DLL hell” - the problems that can crop up when you replace one version of a library with another version that claims to be compatible, but really isn’t. For example, if a program was written to work around undocumented bugs in version 1, and version 2 fixes those bugs, the program might stop working after an upgrade, even though the public specifications of the new version are the same. The creators of the DLL might not even know they’re breaking third party software with the upgrade.

So .NET allows programs to be linked against specific versions of libraries, and it allows multiple versions to coexist on your computer. It wastes some space, but disk space is cheap these days.

This is also good for security, because libraries can be signed by their creators, and that signature is part of the version information that’s in a program. If you have a .NET program that’s linked with version 1.0 of System.Web.dll (signed by Microsoft), a malicious hacker can’t just create his own System.Web.dll, call it version 1.0, and slip it onto your computer, because he doesn’t have Microsoft’s private key to forge their signature. If he replaces your legitimate copy of the DLL with his own, the program won’t even run, because .NET won’t be able to find the library it’s linked to.

You only need to install the version(s) that the applications you use were built with.

A useful post - thanks.