一般程序语言在不同的操作系统会有不同的编译程序(Compiler),程序在撰写完成后,被编译程序编译时会依据不同的操作系统产生不同的机器码,其所产生的机器码只能在所属的操作系统下执行,无法在不同的操作系统环境执行。
一般程序语言在不同环境的编译与执行图
在微软.NET跨平台的构想中,编译程序会将程序转译为公共中间语言(Common Intermediate Language,CIL),其实操作系统仍无法执行此公共中间语言,未来需将此公共中间语言交给公共语言运行环境(Common Language Runtime,CLR),将其转成适当平台的机器码,可以参考下图来理解。
Microsoft中C#的公共中间语言是MSIL(Microsoft Intermediate Language),所以我们可以使用下图来更完整地表达上述概念。