Below I show a picture of the basic .NET compilation process:
The compiler takes the source code as input, and creates an executable file in Common Intermediate Language (CIL) format. The input can be any .NET language, such as C# or VB.NET. The Common Language Runtime (CLR) then takes the CIL files and runs them. It does so by interpreting the CIL instructions into native machine instructions.