安哥网络 发表于 2013-12-15 20:16:24

在Windows平台下使用MONO

原文:http://www.cnblogs.com/warensoft/archive/2010/06/18/1760081.htmlMONO已经发布了好几年了,为.NET技术跨平台技术提供了真正的实现,但是对大多数.NET开发人员来讲MONO最重要的意义是能够实现在Windows下开发出应用程序,并且在其他操作系统下运行。本文会提及以下几内容:l      对于MONO的理解l      MONO的跨平台技术l      如何在Windows下安装MONOl      在Windows下的MONO的开发环境 如果大家有什么问题可以给我发Email:warensoft@163.com1.       对MONO的理解很多人会问,MONO到底是什么,要解释这个问题,我们要先从.NET技术能够跨平台的原理说起,首先看看下面的结构图:http://docs.google.com/File?id=dgsr497v_260ccx63wfm_b首先,.NET平台支持多种语言,MS为了解决不同语言之间数据类型兼容问题,在CLR中提供了MSIL机制(微软中间语言),不论是哪种语言,它们的数据类型都会被转化为中间语言。其次,程序员们会发现,在.NET应用程序(WinForm,ASP.NET)第一次运行的时候会比较慢,这是因为在CLR中存在一个名为JIT的工具(Just In Time Compiler,即时编译器),JIT会将中间语言编译为对应平台的本地代码,以提高运行速度。通过上面的分析,我们可以发现,想让.NET能跨平台,取决于JIT是否能够将MSIL解释成对应平台的本地代码,即:不同的平台需要安装不同的CLR。虽然,.NET可以跨平台的概念是由MS提出来的,但是MS只提供了一个Windows的实现,即:CLR,其实平台的CLR产品MS并没有开发。因此,所谓的MONO其实就是第三方开发的,功能等同于CLR的一个.NET RunTime,MONO提供了不同平台的JIT实现。2.       MONO的跨平台技术在MONO中兼容绝大部分CLR功能,但是运行效率不如CLR快(建议在Windows平台上使用CLR,而不是MONO),因此,绝大多数在Windows下开发的应用程序可以移植到其他操作平台上。虽然MONO兼容大多数CLR功能,但是在MONO下直接开发基于Form(不是WinForm)的功能时,MONO的IDE却不支持WinForm的设计,MONO建议的界面环境是GTK#或者是GNOME,开发模式大体上和WinForm相同。另外,为了能够实现ASP.NET的跨平台,MONO提供了MONO_MODE Web服务器,以支持ASP.NET的运行。为了实现.NET应用程序(WinForm,ASP.NET)的跨平台功能,有以下几点建议:l          在应用程序里最好不要使用PINVOKE的平台调用技术,因为调用Win32的DLL在其他平台上是不可行的,另外,直接调用自己编写的C/C++的DLL在其他平台也不一定能运行。l          如果程序中出现路径表达字符串中,尽量采用动态获取方式,或者是可配置方式,这是因为在不同的操作平台下,路径表达的方式是不同的。3.       如何在Windows下安装MONOMONO的官方网站是:http://www.mono-project.com/Main_Page,在主页上为大家提供了三个功能区,1,下载MONO的运行时,2.下载MONO的IDE,3.在Visual Studio中集成的MONO工具(付费)。用户首先要下载在Windows平台下的MONO运行时,如下图所示:http://docs.google.com/File?id=dgsr497v_261dtks4ggh_b然后下载Windows下的MONO开发环境:MONO Develop,如下图所示:http://docs.google.com/File?id=dgsr497v_262pg33zqcw_b将以上两个程序分别安装到Windows上,就可以进行MONO开发了。4.       在Windows下的MONO开发环境MonoDevelop开发环境基本结构和VS差不多,当然功能远不及VS好用,其打开的界面如下图所示:http://docs.google.com/File?id=dgsr497v_263wk787vd6_b在这里我们打开一个用VS2008做WinForm程序,如下图所示:http://docs.google.com/File?id=dgsr497v_264g8w7fzc9_b我们可以发现并没有WinForm的设计器。下面可以直接运行该程序,如下图所示:http://docs.google.com/File?id=dgsr497v_265gvnh3nhs_b我们会发现这个应用程序除了图标是一个“猴子”外,别的也没有什么和VS做的程序不同,这是因为MONO Develop默认是会用CLR来解释.NET应用程序的,我们可以修改一下配置,让他使用MONO来解释,打开“Edit-Preferences-.NET RunTime”,并将MONO设置为默认的.NET RunTime,如下图所示:http://docs.google.com/File?id=dgsr497v_2664b4vjmfm_b然后我们再来运行刚才的应用程序,如下图所示:http://docs.google.com/File?id=dgsr497v_267f6dmb3f5_b这个窗口的样式和CLR解释出来的样式,还是有点区别的,看起来有点怪

idlgv 发表于 2014-1-9 03:24:17

我也想了解,谢谢发帖的人











static/image/common/sigline.gif
12V2A电源适配器
页: [1]
查看完整版本: 在Windows平台下使用MONO