Common Language Runtime (CLR) is the engine behind the .NET Framework that handles the execution of all managed application code.
Compiled .NET application code is organized into units called, in .NET terminology, .NET assemblies. These assemblies consist of two major parts:
Intermediate Language (IL) code Assembly code in a form that will be converted to executable code at runtime by the CLR engine. This type of process is called Just-in-time (JIT) compilation.
Metadata Generated by the compiler to describe the assembly and its structure (contained classes).
The assembly process consists of the stages shown in Figure 11-1.
Figure 11-1: CLR assembly process