What’s the difference between "CLR" and ".NET Framework"?


What's the difference between "Common Language Runtime (CLR)" and "Microsoft .NET Framework"?  David Broman's post explains it beautifully and was very helpful to me.

CLR + managed libraries and tools = Microsoft .NET Framework

The CLR is the low-level technology (much of it written in unmanaged, native code) that includes the garbage collector, security subsystem, just-in-time compiler, type system, the profiling API (of course :-)), and other similar stuff.  Much of this tends to reside in mscorwks.dll.

If you then add onto that list the many rich managed libraries for implementing graphical user interfaces, web services, accessing Windows OS functionality, etc., as well as the managed language compilers and tools, you get the Microsoft .NET Framework.

Versions

Here's how the Microsoft .NET Framework versions >= 2.0 correlate with the CLR versions:

Dave published a comparison table that I found very useful (with the following disclaimer):

These definitions are how I, geek-Dave, keep things straight in my head.  I'm not in marketing so the names I'm using might not be perfectly accurate (e.g., I'm probably missing terms like "SDK" or "redistributable package").  Please don't take these as Microsoft Official Definitions.

Microsoft .NET Framework version CLR version

Ships with Visual Studio Version

2.0 2.0 2005
2.0 SP1 2.0 SP1 2008 (via .NET 3.5 install)
3.0 2.0 (comes with Vista)
3.0 SP 1 2.0 SP1 2008 (via .NET 3.5 install)
3.5 2.0 SP1 2008
3.5 SP 1 2.0 SP2 2008 SP1

Be sure to read David Broman's post for lots more detail.

Skip to main content