1. Mono 和 CLI 简介
这里先介绍一下Mono项目,Mono是微软 CLI 规范的一种实现,类似的还有 .NET Framwark、Portable.NET(该项目已于2012.12月停止). CLI 是 Common Language Infrastructure(公共语言基础)的缩写,它规定了一语言虚拟机结构规范,这点类似于Java虚拟机,只要遵循该规范编写的代码均可以运行于该虚拟机之上,只要该虚拟机针对各个实现,那么我们编写的代码就可以“一次编写,处处执行”了, Mono就是 CLI 规范的一个跨平台实现。.NET Framwork 虽然也是 CLI 规范的一个实现(.NET Framwork 是一个技术集合,除了实现 CLI 其还包含其他技术),但是它只在Windows上实现了,如果微软愿意它也可以实现跨平台。
图 1 CLI 语言虚拟机
其实理解Mono,可以类比 Java虚拟机。Java虚拟机(该虚拟机最初只为Java打造所以才叫Java虚拟机,跟Java语言应该分开看)就是一个语言虚拟机,它也有自己的一套规范,只要遵循Java虚拟机规范的语言编写的代码都可以跑在Java虚拟机之上, Java 语言就是遵循Java虚拟机规范的一种语言。CLI 一开始就野心比Java虚拟机大,因为它一开始就打算打造一个语言虚拟机平台,上面可以支持各种语言,而不是像Java虚拟机最初只是为了Java设计的,造成Java虚拟机许多地方考虑不周全。
C# 语言是微软发展Java受限后提出的一种现代化编程语言,自然是汲取了前人的经验,就语言本身而言比Java要优秀,只是由于C#并没有微软提供的跨平台虚拟机的支持,所以刚出来那会只能在Windows上使用,而Windows上使用的比较多的是VC++、VB,造成C#语言使用不是很广(当然现在C#已经使用的广泛了,在编程语言排行上保持前五)。
Mono项目的目标就是提供一个符合 CLI 规范的跨平台语言虚拟机实现,让更多的人可以使用C#在Linux、Mac OS等这些系统上编写程序了,获得 C# 和 CLI 所带来的巨大好处。
2. 搭建开发环境