The Common Language Infrastructure is used in the Microsoft .NET initiative as the basis for running programs written in different programming languages. Before this Visual Basic for example has required a component VBVM and Visual C++ versions prior to Visual C++.NET use a MSVCRT DLL for the compiled programs to run. The common language infrastructure is an effort to unify the different runtime modules needed.
It uses a virtual machine and a class library Common Language Runtime. (see Microsoft site [1]). There are many compilers being developed which produce code for this virtual machine. The code these compilers generate is expressed in a Common Intermediate Language (CIL) (also known as Microsoft Intermediate Language (MSIL)) a CPU-independent set of instructions that can be efficiently converted to native code. CIL can be thought of as a high level assembly language.
It seems that in the future there will be at least two major virtual machine technologies competing (see Java virtual machine)