This is just my 2cents:

.Net programs are not complied into an EXE (as we know them).

EXE programs contain machine code, .NET programs are complied into a middle ware language called msil (microsoft intermediate language).

MSIL is freely document standard WC3???, which is why there are so many variants of complier ie Pascal.net, Bob the monkey complier.net.

MSIL is interipted by the JIT engine, (just in time) and it is this engine that creates the native code.

Think of the .Net frame work as a giant class, containg multiple subclasses such as consol and the like.

Like i said just my interiptation

G