共通中間言語
CLIプログラミング言語のコンパイルにより、ソースコードはプラットフォームやプロセッサ固有のオブジェクトコードではなく、CILコードに翻訳される。CILはCPUやプラットフォームに依存しない命令セットである。従って、CILはWindows上の.NETランタイムやクロスプラットフォームなMonoランタイムのようなCLIをサポートするどんな環境でも動作する。この性質により、理論的にはプラットフォームやCPUの種類に応じて異なる実行可能ファイルを配布する必要がなくなる。CILコードは安全のため実行時に検証され、ネイティブにコンパイルされた実行可能ファイルよりも優れた安全性と信頼性を提供する。
実行プロセスは以下のようなものである。
ソースコードはCILに変換される。CILは、CLIにとってはCPUに対するアセンブリと等価なものである。
さらに、CILはいわゆるバイトコードの形に組み立てられ、アセンブリが生成される。
CLIアセンブリの実行中、ネイティブコードを生成するためランタイムのJITコンパイラにコードが渡される。このステップを省き事前コンパイルも利用できるが、実行可能ファイルの移植性が犠牲となる。
ネイティブコードがコンピュータのプロセッサで実行される。