The managed execution process includes the following steps
- Choosing a compiler  - 
- To obtain the benefits provided by the common language runtime, you must use one or more language compilers that
  target the runtime.  
 
- Compiling your code to MSIL - 
- Compiling translates
  your source code into Microsoft intermediate language (MSIL) and
  generates the required metadata.  
 
- Compiling MSIL to native code  - 
- At execution time, a just-in-time (JIT) compiler translates the MSIL into
  native code. During this compilation, code must pass a verification
  process that examines the MSIL and metadata to find out whether the
  code can be determined to be type safe.  
 
- Running code  - 
- The common language runtime provides the infrastructure that enables execution to
  take place and services that can be used during execution. 
 
look here for detailled information: http://msdn.microsoft.com/en-us/library/k5532s8a.aspx