I’ve never really understood why certain applications require installation of the Microsoft .NET Framework, even though there’s already a version included within the operating system. Surely each version of the framework includes previous versions? Well, it seems not – as David Allen from the Microsoft UK ISV Developer Evangelism Team explained to me recently:
- The original version of the Microsoft .NET Framework (v1.0.3705.0) was released in 2002. Version 1.1.4322.573 updated both the framework and the common language runtime (CLR) and was included within Windows Server 2003.
- With version 2.0.50727.42, Microsoft again updated both the framework (classes) and the CLR but this version was incompatible with v1.x and the two could be run side by side on the same system.
- It’s logical to think that v3.x (a major release) would also include a new CLR but 3.0.4506.30 (which shipped with Windows Vista and Windows Server 2008) and 3.5.21022.8 (shipping with Windows 7 and Windows Server 2008 R2) add new framework classes but use the existing v2.0 CLR.
- The next version will be 4.0 and is currently in beta. This will include a new CLR and will run side by side with v1.x and v2.x/3.x installations on the same system.
It’s no wonder I was confused – it’s a complete mess! A .NET Framework application that requires v2.0 will happily run on a system with v3.5 but a v1.x application needs v1.1 to be installed, and a v4.x application will require v4.0. It’s entirely feasible that, in the near future, a Windows 7 machine may need v1.1, v3.5 SP1 and v4.0 to all be installed to support different applications.
To find out which versions are installed on a given system, take a look in the %systemroot%\Microsoft.NET\Framework folder. Futher information on the various releases of the Microsoft .NET Framework (including service packs) is available on MSDN.
Hi Mark,
I thought a v1.x or v2.0 application would run on a machine with only v4.0 installed as each framework version is backward compatible (providing the application doesn’t target a specific version)?
I guess my scenario would be a rare occurrence anyway.
Cheers,
Neil Blackburn
I thought that too Neil, but it seems that’s not the way it works. Each time there’s a new CLR, it’s installed alongside the previous version, meaning that if your app wants, for example, version 1.1, then you’ll need to install it – even if you already have v3.5 installed. On the other hand, because the CLR has not changed between v2.0 and 3.5, v2.0 apps will run under v3.5 but that will change again at v4.0 as it introduces a new CLR.