CLR,说白了就是微软.net运行平台的虚拟机。像java虚拟机一样,对于.net程序,微软为其提供的虚拟机就是CLR。
说白了,
CLR运行一种称为通用中间语言(common intermediate language)的字节码。
何为通用中间语言?就是.net源程序(如C#,C++,vb.netd等等)经过它们各自的编译器,编译而成的中间语言。注意,其不是机器语言,而是所谓的“通用中间语言”。通用中间语言经过CRT之后才能生成本地语言(原生码)。
关于Mono
Mono是一个由Novell公司(先前是Ximian)主持的项目。该项目的目标是创建一系列符合ECMA标准(Ecma-334 和 Ecma-335)的.NET工具,包括C#编译器和共通语言运行平台。与微软的.NET Framework不同,Mono项目不仅可以运行于Windows系统上,还可以运行于Linux,FreeBSD,Unix,Mac OS X和Solaris。这使得.net framework下的项目可以移植到其它平台之下
从维基百科上用的一张图片: