fbpx
维基百科

Mono

Mono是一个由Xamarin公司(先前是Novell,最早為Ximian)所主持的自由開放源碼專案。該專案的目標是创建一系列符合ECMA标准(Ecma-334[3]和Ecma-335[4])的.NET工具,包括C#编译器和通用语言架构。与微软的.NET Framework共通語言執行平臺)不同,Mono项目不仅可以运行于Windows系统上,还可以运行于LinuxFreeBSDUnixOS XSolaris,甚至一些遊戲平台,例如:Playstation 3、Wii或XBox 360。Mono的標誌是一個猴子格式的臉。

Mono
開發者Novell, Xamarin
当前版本
  • 6.12.0.199 (2023年6月14日;穩定版本)[1][2]
源代码库
  • github.com/mono/mono
操作系统跨平台
类型系统平台
许可协议GPLLGPLMIT許可證,或双重许可
网站http://www.mono-project.com/

Mono现由Novell持有双重许可,这和QtMozilla Application Suite的情况相似。Mono的C#编译器及其相关工具发布于GNU通用公共许可证(GPL)之下,其运行时库发布于GNU宽通用公共许可证(LGPL)之下,其类库发布于MIT許可證之下。这些均是开源协议因此Mono是一个开源软件

微软开发了一个称为通用语言架构(Shared Source Common Language Infrastructure,Shared Source CLI;即今ECMA通用语言架构)的可用于FreeBSD,Windows和Mac OS X的.NET实现版本。微软的共享源代码协议并不是开源软件协议,且可能对于社区来说也是不足够的(它明文禁止了对软件的商业用途)。另外,GNU也有一个.NET实现版本Portable.NET英语Portable.NET项目,该项目与Mono项目有着很多相同的目标。

Mono虚拟机包含一个即時編譯引擎,该引擎可用于如下处理器:x86SPARCPowerPCARM、S390(32位模式和64位模式)、x86-64IA-64和64位模式的SPARC。该虚拟机可以将代码编译为本机代码。

历史 编辑

Microsoft在2000年6月第一次公佈.NET Framework時,它被描述為一個以網際網路標準為基底的新的平台。並且在12月發表了基本的共通語言架構開放標準的形式(ECMA-335),提供了無相依性實作的可能。Ximian的 米格爾·德伊卡薩在.NET的文档于2000年10月发布时就马上对.NET产生了兴趣。在查看字节码解释器后,他发现对于元数据(metadata)没有相应的说明文档。2001年2月,德伊卡薩在.NET邮件列表中索要到了那段缺失了的关于元数据文件格式的信息,并开始了采用C#编写一个C#编译器的工作,作为对C#的实践。2001年4月ECMA公布了那段缺失的文件格式,而在GUADEC(2001年4月6日-4月8日)德伊卡薩展示了他的编译器的一些特性(那个时候他的编译可以解释自身)。

Ximian内部对如何创建能有效提升生产效率的工具进行了大量的讨论,他们的目标是通过这些创建出来的工具让使用者可以在更短时间内创建出更多的应用程序从而缩短开发周期和降低开发成本。经过可行性研究后,他们清楚地见到创建这样的一项技术是可行的,于是Ximian从其它的项目抽调人员并创建了Mono的开发小组。由于缺少人力来创建整个.NET替代产品,他们在2001年7月19日的歐萊禮大会创建了Mono的开源项目。

差不多三年后,Mono于2004年7月30日发布了1.0版本。Mono逐步從一開始的重點為Linux桌面應用程式開發者平台,到支援寛廣範圍的架構和作業系統,包含了嵌入式系統

在2011年4月,Attachmate收購Novell後,針對Novell發布了上百位人力的解僱。在3月16號德伊卡薩在他的blog發佈在被Novell解僱後,他找到一家公司將透過Xamarin繼續支援Mono。原本的Mono團隊也被移到新的公司。Xamarin計畫維持在Mono的工作。由於在這時間點Novell仍然擁有MonoTouch和專為Android的Mono,所以計畫針對iOS和Android上重寫商業化的.NETstacks。

在這發表之後,這個專案的未來被質疑。因為,專屬 Android的MonoTouch and Mono變成跟現存Attachmate所屬的商業化商品有直接競爭,也考量了Xamarin團隊為了相同的作品而不使用之前在Novell開發的技術,證實是有困難的。無論如何,在2011年七月Novell、Attachmate的子公司及Xamarin發表了對Xamarin for Mono, MonoTouch and Mono for Android的永久性許可證,正式地帶起這個案子的管理方式。

發行歷史(Release History)
發行日(Date) 版本(Version)[5] 備註(Notes)
2004-06-30 1.0[6] C# 1.0 support
2004-09-21 1.1[7]
2006-11-09 1.2[8] C# 2.0 support
2008-10-06 2.0[9] Mono's APIs are now in par with .NET 2.0. Introduces the C# 3.0 and Visual Basic 8 compilers. New Mono-specific APIs: MonoCecil, MonoCairo and MonoPosix. Gtk# 2.12 is released. The Gendarme verification tool and Mono Linker are introduced.
2009-01-13 2.2[10] Mono switches its JIT engine to a new internal representation [11]that gives it a performance boost and introduces SIMD support in the MonoSimd [12]MonoSimd namespace.
Mono introduces Full Ahead of Time(页面存档备份,存于互联网档案馆) compilation that allows developers to create full static applications and debuts the C# Compiler as a Service [13]and the C# Interactive Shell [14](C# REPL)
2009-03-30 2.4[15] This release mostly polishes all the features that shipped in 2.2 and became the foundation for the Long-Term support of Mono in SUSE Linux.
2009-12-15 2.6[16] The Mono runtime is now able to use LLVM as a code generation backend and this release introduces Mono co-routines, the Mono Soft Debugger and the CoreCLR security system required for Moonlight and other Web-based plugins.
On the class library System.IO.Packaging, WCF client, WCF server, LINQ to SQL debut. The Interactive shell supports auto-completion and the LINQ to SQL supports multiple database backends. The xbuild build system is introduced.
2010-09-22 2.8[17] Defaults to .NET 4.0 profile, C# 4.0 support, new generational garbage collector, includes Parallel Extensions英语Parallel Extensions, WCF Routing, CodeContracts, ASP.NET 4.0, drops the 1.0 profile support; the LLVM engine tuned to support 99.9% of all generated code, runtime selectable llvm and gc; incorporates Dynamic Language Runtime, MEF英语Managed Extensibility Framework, ASP.NET MVC2, OData Client open source code from Microsoft;. Will become release 3.0
2011-02-15 2.10[18]
2012-10-18 3.0[19] C# 5.0 support, async support, Async Base Class Library Upgrade and MVC4 - Partial, no async features support.
2013-07-24 3.2[20]
2014-05-31 3.4[21]
2014-05-31 3.6[22]
2014-09-04 3.8[23]
2014-10-04 3.10[24]

目前的狀況與藍圖  编辑

Mono目的的版本為3.10.0(2014年10月)。這個版本提供了.NET Framework的核心API、Visual Basic .NET的支援、C#版本2.0,3.0,及4.0、LINQ to Objects、XMLSQL等。在C#編譯器的目前操作的預設模式是C# 4.0。Windows Forms 2.0也有被支援,但沒有積極地被開發,因此,它在Mono的支援不完整。Mono的目標是達成在.NET 4.0的完整功能支援,除了Windows Presentation Foundation(WPF)和Limited Windows Communication Foundation(WCF)。 在實驗性質mono的開發.NET Framework的一些遺失部份稱做Olive Mono專案也建立了Visual Basic .NET編譯器與一個runtime的VB.NET的應用程式。它目前一直由Rolf Bjarne Kvinge進行開發。

Moonlight 编辑

Moonlight是一個Microsoft Silverlight的開源實作,自從Mono 1.9起即包含了這實作。在2009年1月20日釋出的Moonlight 1.0支援Silverlight 1.0 APIs。而Moonlight 2.0支援Silverlight 2.0。Moonlight 3.0則在2010年2月被發表,包含了Silverlight 3.0的支援。Moonlight最終在2012年3月29日被放棄。依據米格爾所言,兩個因素扼殺了這個專案的命運:Microsoft增加了“人为限制”...這造成了桌面程式無用武之地...",並且在Web上的技術沒有獲得足夠的配合。

Mono組成元件 编辑

Mono組成元件包含了以下三類:

  1. 核心元件
  2. Mono/Linux/GNOME開發堆疊
  3. 微軟相容堆疊

核心元件包含了C# 編譯器,Common Language Infrastructure虛擬機器,以及核心類別程式庫。這些元件都是基於Ecma-334 and Ecma-335標準,[25]而使得Mono能夠提供與標準相容、免費、並且是開放原始碼的CLI 虛擬機器。微軟曾經聲明這些標準都是基於Community Promise license的社群保護承諾之下。[26]

Mono/Linux/GNOME開發堆疊則是提供了工具以用於開發應用軟體。這些工具使用了既有的GNOME以及自由並且開放原始碼程式庫,它們包含了針對圖形使用者介面(GUI)開發的Gtk#、可套用Gecko rendering engine的Mozilla程式庫、Unix整合程式庫(Mono.Posix)、安全性推疊、以及XML schema語言RelaxNG。Gtk# 讓Mono應用程式融入Gnome桌面環境而成為原生程式。資料庫程式庫則提供了與物件關連式資料庫連結的能力,這些資料庫包含了 db4o、Firebird、Microsoft SQL Server(MSSQL)、MySQLOpen Database Connectivity(ODBC)、OraclePostgreSQLSQLite等等。在網站上可看見Mono專案一直都在持續更新維護資料庫程式庫。[27]

微軟相容堆疊則是提供了一種方式來使得Windows .NET應用程式可以被移植到GNU/Linux上。這個堆疊包含了ADO.NETASP.NET以及Windows Forms等等。不過,由於這些元件並沒有被上述所說Ecma標準所涵蓋,因此部份元件有所謂專利恐懼與疑慮的問題。

架构 编辑

 

程式執行引擎 编辑

Mono程式的執行包含一個程式碼運作引擎,它會將ECMA CIL的byte code轉譯為原生碼(Native Code),它支援了以下處理器:ARMMIPS(只有32位元模式)、SPARCPowerPC、S390(64位元模式)、x86x86-64以及IA-64 64位元模式。

程式的轉譯有三種模式:

  • Just-in-time (JIT)編譯:在程式執行當中將ECMA CIL的byte code轉譯為原生碼。
  • Ahead-of-Time (AOT)編譯:ECMA CIL的byte code(通常在.exe檔或.dll檔中)會轉譯出原生碼並儲存在作業系統中、以及CPU架構設定檔(例如在Linux上,如果是foo.exe,就會產生foo.exe.so檔)。通常,此種模式可產生出絕大部份前種模式所產生的原生碼,部份的例外是trampolines或是控管監督相關的碼(仍舊需要JIT來執行),由此可知AOT影像檔並非可以完全獨立執行的。
  • 完全靜態編譯:這個模式只支援少數平台,它基於AOT編譯模式上,更進一步產生所有的trampoline、wrappers以及proxies,這幾樣東西是用於靜態連結出靜態檔案時所需。完全靜態編譯模式可以讓程式的執行期完全不需要用到JIT,這個做法適用於Apple iOS作業系統、Sony PlayStation 3以及微軟的XBox 360等作業系統。[來源請求]

從2.6版起,Mono開始支援使用LLVM來產生執行碼,而非原本自帶的方式。這對於高效能計算方面非常有用,因為在這種場合下,程式的執行效能比啟動速度來得重要。

從2.7 Preview版開始,使用者不再需要在程式編譯前的Configuration時就必須選定執行碼產生引擎,執行碼的產生可以在程式啟動時以--llvm--nollvm的參數來指定即可,預設是以自帶的引擎為主,因為它的產生速度比較快。

垃圾回收 编辑

當2.8版推出時,Mono runtime提供了兩套垃圾回收器:generational collector[28]以及Boehm conservative collector。在Mono 3.1.1版之前,預設的垃圾回收器(Boehm-Demers-Weiser Conservative Garbage Collector),[28][29]跟商業環境如Java Virtual Machine或.NET framework的垃圾回收器相比,一直有很大的限制,在某些狀況的應用軟體上會發生内存泄漏的現象,這使得Mono無法用於需要長時間執行的伺服器應用。

截至2010年10月 (2010-10),一個稱之為「Simple Generational GC」(SGen-GC)的新一代垃圾回收器開始用於Mono中,在3.1.1版之後就直接變成是預設的垃圾回收器。對於Mono 2.8到3.1.0,使用者可以以傳入參數--gc=sgen來讓Mono runtime啟動時使用SGen垃圾回收器。[28]這個新的垃圾回收器相較於傳統基於保守型掃描方式的回收器,有很多優點,它使用了generational garbage collection,從物件一開始被配置、到各個週期,所有活著的物件都會被轉移到較早代的記憶體池,這個想法是來自於因為許多物件都只是短暫使用的,因此可以被快速回收再利用,只有少數物件是長期性的存活在應用程式的整個生命期中。另外,為了改善效率,這個回收器對每個執行緒配置了個別的記憶體池,讓執行緒不需要跟別的執行緒打交道就可以自行配置記憶體區塊。對於前述所說,物件的轉移到較早代記憶體池的做法則是,在轉移之後,將所有目前指向該物件的指標都更新為新的位址。由於這樣的做法在大型物件時比較浪費記憶體,因此SGen為大型物件使用了獨自的記憶體池(Large Object Section),並且對這些物件使用mark-and-sweep演算法。

目前SGen是以比較保守的方式來對待堆疊與暫存器,並且,那些可被參考到的物件是由它們的root來負責pin的動作。未來版本的Mono將會以精確方式來掃描託管的堆疊,藉此減少那些被pin的物件。

類別庫 编辑

類別庫为应用程序开发提供一套广泛而有效的工具类。这些工具类可以用于任何.NET语言。類別庫被按命名空间进行了结构化,并被放置于称为程序集的共享库中。在我们谈到.NET Framework时,我们多数是指这个类库。

命名空间和程序集 编辑

命名空间是一种用于将逻辑上相似的类按层次结构分组的机制。这种机制防止了命名冲突。在这种结构化采用被点号"."分隔的单词来实现。通常最顶层的命名空间是System,例如System.IO和System.Net(完整的命名空间列表可以在Mono文档[30]中找到)。当然还有别的顶层命名空间,例如Accessibility和Windows就是这样的例子。新建的命名空间还可以以开发组织的名字开头。

程序集是这些类库的物理载体。它们跟Win32共享库一样都是dll文件,尽管不完全一样。一些程序集的例子有:mscorlib.dll,System.dll,System.Data.dll和Accessibility.dll。命名空间经常被分拆到几个程序集中,而一个程序集可以由几个文件组成。

公共语言基础和公共语言规范 编辑

公共语言基础(Common Language Infrastructure,CLI)是一套标准(ECMA335),公共语言运行时(Common Language Runtime)即CLR是CLI标准的实现,Mono是实现者之一。该运行时用于执行已编译的.NET应用程序。公共语言基础已被ECMA定义为标准ECMA-335。要运行一个.NET应用程序,你必须使用相应的参数调用运行时。

在ECMA-335的第六章详细说明了「公共语言规范」(Common Language Specification,CLS)并定义了提供给公共语言基础的接口,例如对于枚举类型的隐含表示类型的协定。Mono的编译器负责生成符合公共语言规范的映射代码,即公共中间语言(Common Intermediate Language,CIL)。Mono的运行时将运行这类代码。ECMA标准先前还定义了一个符合公共语言规范的程序库作为应用框架。

托管与非托管代码 编辑

在原生的.NET/Mono应用程序中,所有代码都是托管的,也就是说,是受管于CLI式的内存管理和线程安全管理的。其它的.NET或Mono应用程序可以通过使用System.InterOpServices库创建C#绑定来调用已存的非托管代码。很多移植到Mono的类库使用了CLI的这个特性,例如Gtk#。

相关项目 编辑

现有大量与Mono相关的用于扩展Mono的项目,这些项目允许开发者在他们的开发环境中使用Mono。这些项目包括:

  • Cocoa#[31],对原生Mac OS X工具包的一系列包装(Cocoa)。
  • Gecko#,一个对在Mozilla中使用的嵌入式布局引擎的绑定(Gecko)。
  • Gtk#,对使用CGTK+库的C#的外包。
  • Tao,一个图形及游戏库的绑定。

授權 编辑

Mono是透過Xamarin的雙重授權,相似於其他產品,如Qt和Mozilla application Suite。Mono's C#編譯器與工具是依照GNU Leasser General Public License(LGPLv2 only)來釋出(開始於Mono 2.0,Mono C#的編譯器源碼在MIT X11 License仍然是有效的),屬於GNU Leasser General Public License(LGPLv2 only)的runtime函式庫及屬於MIT X11 License的類別函式庫。

有完全免費的軟體與開源授權,因此Mono是免費的開源軟體。

C#編譯器的授權改變是從GPL到MIT X11授權,允許編譯器的程式碼在少許的GPL限制例子中被重複使用,如例:

  • 作為服務的Mono編譯器
 * Mono互動介面的Shell * Mono可崁入的的C#編譯器 
  • Mono的C# 4.0的動態綁定的實作
  • MonoDevelop的內建parser和AST

Mono与微软的专利 编辑

人们对于微软能否采用专利摧毁Mono项目进行了大量的争论。其实,专利问题不在于已被提交到ECMA组织的核心技术或Unix/Gnome的专有部分,而在于由微软基于.NET Framework创建的技术,例如ASP.NETADO.NETWindows Forms。这些技术在Mono中至今还没有被完全地实现,事实上,在开发Mono应用程序时也不需要用到,然而,在开发基于Windows平台的程序时却是不可缺少的。Mono团队将目标定为将这些技术纳入到项目中,并制订了一个三步驟策略来处理它们:

  1. 采用其它实现方式来实现从而绕过专利问题
  2. 把包含专利的代码清除出项目
  3. 找出“现有技术(prior art)”从而将专利变为非专利

显然,第一个选项并不总是可行的。对于一些问题,例如那些与协同工作和交互相关的,可能就只有一种解决方案。由于这个相同的原因,尽管第二个选项总是可行的,它却可能导致一个开发出来的产品并不能作为.NET的替代品。第三个选项则是昂贵的,甚至不可能的,这需要一定程度的运气。

使用Mono开发的软件 编辑

 
F-Spot photo management program
 
Muine music player

以下是使用Mono APIC#编写的部分程序:

  • Banshee是一个用于GNOME的音乐管理和播放软件。
  • Beagle是一个桌面搜索软件。
  • Blam!是一个RSS 新闻聚集器,特别适合于阅读如Planet Gnome[32]这样的行星[33]资讯。
  • Bless[34]是一个十六进制编辑器
  • CDCollect[35]是一个CD 编目应用程序。
  • Diva是一个用于GNOME的视频编辑器。
  • F-Spot是有个由Novell开发的图片便捷管理程序。
  • Fiddler[36]是一个强大的Web 抓包工具,与Charles齐名。
  • Galaxium[37]是一个MSN 即时通讯软件客户端。
  • GLyrics[38]是一个歌词搜索器。
  • Gpremacy[39]是以Mono/Gtk# 實作的圖版遊戲Supremacy
  • iFolder 3(by Novell)让你使用点对点协议(peer-to-peer)或Novell的群集服务器产品与其它计算机和用户共享文件。
  • imeem[40]一個社交網路軟體。Mac版本的用戶端和伺服器使用Mono運行,而Windows版本的用戶端仰賴於Microsoft.Net
  • KeePass是一款開源的密碼管理器。
  • MindFire[41]是一个用于辅助速读(speed reading)的跨平台电子书阅读器
  • MonoDevelop是一个用于创建Mono应用程序的集成开发环境。该软件原先是SharpDevelopGtk#的一个移植,而现今该软件已独立开发。该软件在Windows上有测试版的可用版本。
  • Pinta是一个简单的位图形编辑软件。

分支版本 编辑

2011年4月,Novell公司被Attachmate英语Attachmate公司所併購,而原先在Novell公司裡的Mono開發者被大量資遣。2011年5月,原先Mono的開發者另外成立一家Xamarin的公司,仿Mono發行他們的Xamarin跨平台.NET套件,在Windows下能與整合到Microsoft Visual Studio的IDE之中。2011年7月,Attachmate英语Attachmate公司旗下的Novell公司批准了Mono相關專案到Xamarin的授權。

备注 编辑

  1. ^ For more information about the licensing, see Mono FAQ: Licensing(页面存档备份,存于互联网档案馆

参考文献 编辑

  1. ^ Release mono-6.12.0.199. 
  2. ^ 6.12.0 Stable (6.12.0.199). 
  3. ^ Ecma-334(页面存档备份,存于互联网档案馆
  4. ^ Ecma-335(页面存档备份,存于互联网档案馆
  5. ^ OldReleases - Mono. Mono-project.com. [2013-07-17]. (原始内容于2020-09-24). 
  6. ^ Mono 1.0 Release Notes. Go-mono.com. [2013-07-17]. (原始内容于2020-04-09). 
  7. ^ Mono 1.1.1: Development Release: Features and Known Issues. Go-mono.com. [2013-07-17]. (原始内容于2020-04-09). 
  8. ^ Mono 1.2: Release Notes. Go-mono.com. [2013-07-17]. (原始内容于2020-04-09). 
  9. ^ Release Notes Mono 2.0 - Mono. Mono-project.com. 2008-10-06 [2013-07-17]. (原始内容于2020-11-09). 
  10. ^ Release Notes Mono 2.2 - Mono. Mono-project.com. [2013-07-17]. (原始内容于2020-06-12). 
  11. ^ Linear IR - Mono. Mono-project.com. [2013-07-17]. (原始内容于2020-11-09). 
  12. ^ Mono's SIMD Support: Making Mono safe for Gaming - Miguel de Icaza. Tirania.org. 2008-11-03 [2013-07-17]. (原始内容于2010-11-04). 
  13. ^ Mono's C# Compiler as a Service on Windows. - Miguel de Icaza. Tirania.org. 2010-04-27 [2013-07-17]. (原始内容于2020-11-09). 
  14. ^ CsharpRepl - Mono. Mono-project.com. [2013-07-17]. (原始内容于2020-09-20). 
  15. ^ Release Notes Mono 2.4 - Mono. Mono-project.com. [2013-07-17]. (原始内容于2020-11-09). 
  16. ^ Release Notes Mono 2.6 - Mono. Mono-project.com. [2013-07-17]. (原始内容于2020-08-29). 
  17. ^ Release Notes Mono 2.8 - Mono. Mono-project.com. [2013-07-17]. (原始内容于2020-11-09). 
  18. ^ Release Notes Mono 2.10 - Mono. Mono-project.com. [2013-07-17]. (原始内容于2020-08-04). 
  19. ^ Release Notes Mono 3.0. Mono-project.com. [2013-09-23]. (原始内容于2020-11-12). 
  20. ^ Release Notes Mono 3.2. Mono-project.com. [2013-09-23]. (原始内容于2020-11-12). 
  21. ^ Release Notes Mono 3.4.0. Mono-project.com. [2014-05-31]. (原始内容于2020-09-24). 
  22. ^ Release Notes Mono 3.6. Mono-project.com. [2014-05-31]. (原始内容于2020-09-24). 
  23. ^ Release Notes Mono 3.8.0. Mono-project.com. [2014-09-04]. (原始内容于2020-09-24). 
  24. ^ Release Notes Mono 3.10.0. Mono-project.com. [2014-10-04]. (原始内容于2020-09-24). 
  25. ^ Ecma-335. [2006-04-14]. (原始内容存档于2013-06-26). 
  26. ^ Technet.com. [2014-06-10]. (原始内容存档于2013-06-22). 
  27. ^ Database Access - Mono. [2014-06-10]. (原始内容于2020-04-09). 
  28. ^ 28.0 28.1 28.2 Compacting GC. mono-project.com. [2008-12-16]. (原始内容于2020-11-09). 
  29. ^ Boehm, Hans-J. . Xerox PARC. [2008-12-16]. (原始内容存档于2013-07-24). 
  30. ^ Mono文档(页面存档备份,存于互联网档案馆
  31. ^ Cocoa#(页面存档备份,存于互联网档案馆
  32. ^ Planet Gnome(页面存档备份,存于互联网档案馆
  33. ^ 行星(页面存档备份,存于互联网档案馆
  34. ^ Bless(页面存档备份,存于互联网档案馆
  35. ^ CDCollect(页面存档备份,存于互联网档案馆
  36. ^ Fiddler(页面存档备份,存于互联网档案馆
  37. ^ Galaxium(页面存档备份,存于互联网档案馆
  38. ^
  39. ^ Gpremacy(页面存档备份,存于互联网档案馆
  40. ^ imeem(页面存档备份,存于互联网档案馆
  41. ^
  • This article incorporates text from Mono's homepage(页面存档备份,存于互联网档案馆),which is in the GNU Free Documentation License.
  • Miguel de Icaza. . 2009-10-13 [6 December 2005]. (原始内容 (mailing list)存档于2011-06-06). 
  • Eugenia Loli-Queru. Mono Applications? Aplenty!. OSNews. 2005-02-22 [6 December 2005]. (原始内容于2006-11-11). 

外部链接 编辑

国际站点
  • ,A French Mono WebSite
  • ,A Brazilian Mono WebSite
  • ,A Colombian Mono WebSite
  • MonoGermany(页面存档备份,存于互联网档案馆),A German Mono WebSite
  • ,A Spanish Mono community
  • Mono web site translation to Japanese.
  • ,Polish Mono Web site.
  • ,Dutch Mono site.

mono, 本條目存在以下問題, 請協助改善本條目或在討論頁針對議題發表看法, 此條目翻譯自英語維基百科, 需要相關領域的編者協助校對翻譯, 如果您精通本領域, 又能清楚地將英語翻譯為中文, 歡迎您協助校訂翻譯, 原文参见en, software, 此條目需要更新, 2016年5月17日, 請更新本文以反映近況和新增内容, 完成修改後請移除本模板, 此条目序言章节没有充分总结其内容要点, 2020年4月26日, 请考虑扩充序言, 为条目所有重要方面提供易懂的概述, 请在条目的讨论页讨论此问题, 关于与, 標題相近或. 本條目存在以下問題 請協助改善本條目或在討論頁針對議題發表看法 此條目翻譯自英語維基百科 需要相關領域的編者協助校對翻譯 如果您精通本領域 又能清楚地將英語翻譯為中文 歡迎您協助校訂翻譯 原文参见en Mono software 此條目需要更新 2016年5月17日 請更新本文以反映近況和新增内容 完成修改後請移除本模板 此条目序言章节没有充分总结其内容要点 2020年4月26日 请考虑扩充序言 为条目所有重要方面提供易懂的概述 请在条目的讨论页讨论此问题 关于与 Mono 標題相近或相同的条目 請見 Mono 消歧義 Mono是一个由Xamarin公司 先前是Novell 最早為Ximian 所主持的自由開放源碼專案 該專案的目標是创建一系列符合ECMA标准 Ecma 334 3 和Ecma 335 4 的 NET工具 包括C 编译器和通用语言架构 与微软的 NET Framework 共通語言執行平臺 不同 Mono项目不仅可以运行于Windows系统上 还可以运行于Linux FreeBSD Unix OS X和Solaris 甚至一些遊戲平台 例如 Playstation 3 Wii或XBox 360 Mono的標誌是一個猴子格式的臉 Mono開發者Novell Xamarin当前版本6 12 0 199 2023年6月14日 穩定版本 1 2 源代码库github wbr com wbr mono wbr mono操作系统跨平台类型系统平台许可协议GPL LGPL与MIT許可證 或双重许可网站http www mono project com Mono现由Novell持有双重许可 这和Qt和Mozilla Application Suite的情况相似 Mono的C 编译器及其相关工具发布于GNU通用公共许可证 GPL 之下 其运行时库发布于GNU宽通用公共许可证 LGPL 之下 其类库发布于MIT許可證之下 这些均是开源协议因此Mono是一个开源软件 微软开发了一个称为通用语言架构 Shared Source Common Language Infrastructure Shared Source CLI 即今ECMA 通用语言架构 的可用于FreeBSD Windows和Mac OS X的 NET实现版本 微软的共享源代码协议并不是开源软件协议 且可能对于社区来说也是不足够的 它明文禁止了对软件的商业用途 另外 GNU也有一个 NET实现版本Portable NET 英语 Portable NET 项目 该项目与Mono项目有着很多相同的目标 Mono虚拟机包含一个即時編譯引擎 该引擎可用于如下处理器 x86 SPARC PowerPC ARM S390 32位模式和64位模式 x86 64 IA 64和64位模式的SPARC 该虚拟机可以将代码编译为本机代码 目录 1 历史 2 目前的狀況與藍圖 2 1 Moonlight 3 Mono組成元件 4 架构 4 1 程式執行引擎 4 2 垃圾回收 4 3 類別庫 4 3 1 命名空间和程序集 4 4 公共语言基础和公共语言规范 4 5 托管与非托管代码 4 6 相关项目 5 授權 6 Mono与微软的专利 7 使用Mono开发的软件 8 分支版本 9 备注 10 参考文献 11 外部链接历史 编辑當Microsoft在2000年6月第一次公佈 NET Framework時 它被描述為一個以網際網路標準為基底的新的平台 並且在12月發表了基本的共通語言架構開放標準的形式 ECMA 335 提供了無相依性實作的可能 Ximian的 米格爾 德伊卡薩在 NET的文档于2000年10月发布时就马上对 NET产生了兴趣 在查看字节码解释器后 他发现对于元数据 metadata 没有相应的说明文档 2001年2月 德伊卡薩在 NET邮件列表中索要到了那段缺失了的关于元数据文件格式的信息 并开始了采用C 编写一个C 编译器的工作 作为对C 的实践 2001年4月ECMA公布了那段缺失的文件格式 而在GUADEC 2001年4月6日 4月8日 德伊卡薩展示了他的编译器的一些特性 那个时候他的编译可以解释自身 Ximian内部对如何创建能有效提升生产效率的工具进行了大量的讨论 他们的目标是通过这些创建出来的工具让使用者可以在更短时间内创建出更多的应用程序从而缩短开发周期和降低开发成本 经过可行性研究后 他们清楚地见到创建这样的一项技术是可行的 于是Ximian从其它的项目抽调人员并创建了Mono的开发小组 由于缺少人力来创建整个 NET替代产品 他们在2001年7月19日的歐萊禮大会创建了Mono的开源项目 差不多三年后 Mono于2004年7月30日发布了1 0版本 Mono逐步從一開始的重點為Linux桌面應用程式開發者平台 到支援寛廣範圍的架構和作業系統 包含了嵌入式系統 在2011年4月 Attachmate收購Novell後 針對Novell發布了上百位人力的解僱 在3月16號德伊卡薩在他的blog發佈在被Novell解僱後 他找到一家公司將透過Xamarin繼續支援Mono 原本的Mono團隊也被移到新的公司 Xamarin計畫維持在Mono的工作 由於在這時間點Novell仍然擁有MonoTouch和專為Android的Mono 所以計畫針對iOS和Android上重寫商業化的 NETstacks 在這發表之後 這個專案的未來被質疑 因為 專屬 Android的MonoTouch and Mono變成跟現存Attachmate所屬的商業化商品有直接競爭 也考量了Xamarin團隊為了相同的作品而不使用之前在Novell開發的技術 證實是有困難的 無論如何 在2011年七月Novell Attachmate的子公司及Xamarin發表了對Xamarin for Mono MonoTouch and Mono for Android的永久性許可證 正式地帶起這個案子的管理方式 發行歷史 Release History 發行日 Date 版本 Version 5 備註 Notes 2004 06 30 1 0 6 C 1 0 support2004 09 21 1 1 7 2006 11 09 1 2 8 C 2 0 support2008 10 06 2 0 9 Mono s APIs are now in par with NET 2 0 Introduces the C 3 0 and Visual Basic 8 compilers New Mono specific APIs MonoCecil MonoCairo and MonoPosix Gtk 2 12 is released The Gendarme verification tool and Mono Linker are introduced 2009 01 13 2 2 10 Mono switches its JIT engine to a new internal representation 11 that gives it a performance boost and introduces SIMD support in the MonoSimd 12 MonoSimd namespace Mono introduces Full Ahead of Time 页面存档备份 存于互联网档案馆 compilation that allows developers to create full static applications and debuts the C Compiler as a Service 13 and the C Interactive Shell 14 C REPL 2009 03 30 2 4 15 This release mostly polishes all the features that shipped in 2 2 and became the foundation for the Long Term support of Mono in SUSE Linux 2009 12 15 2 6 16 The Mono runtime is now able to use LLVM as a code generation backend and this release introduces Mono co routines the Mono Soft Debugger and the CoreCLR security system required for Moonlight and other Web based plugins On the class library System IO Packaging WCF client WCF server LINQ to SQL debut The Interactive shell supports auto completion and the LINQ to SQL supports multiple database backends The xbuild build system is introduced 2010 09 22 2 8 17 Defaults to NET 4 0 profile C 4 0 support new generational garbage collector includes Parallel Extensions 英语 Parallel Extensions WCF Routing CodeContracts ASP NET 4 0 drops the 1 0 profile support the LLVM engine tuned to support 99 9 of all generated code runtime selectable llvm and gc incorporates Dynamic Language Runtime MEF 英语 Managed Extensibility Framework ASP NET MVC2 OData Client open source code from Microsoft Will become release 3 02011 02 15 2 10 18 2012 10 18 3 0 19 C 5 0 support async support Async Base Class Library Upgrade and MVC4 Partial no async features support 2013 07 24 3 2 20 2014 05 31 3 4 21 2014 05 31 3 6 22 2014 09 04 3 8 23 2014 10 04 3 10 24 目前的狀況與藍圖 编辑Mono目的的版本為3 10 0 2014年10月 這個版本提供了 NET Framework的核心API Visual Basic NET的支援 C 版本2 0 3 0 及4 0 LINQ to Objects XML及SQL等 在C 編譯器的目前操作的預設模式是C 4 0 Windows Forms 2 0也有被支援 但沒有積極地被開發 因此 它在Mono的支援不完整 Mono的目標是達成在 NET 4 0的完整功能支援 除了Windows Presentation Foundation WPF 和Limited Windows Communication Foundation WCF 在實驗性質mono的開發 NET Framework的一些遺失部份稱做Olive Mono專案也建立了Visual Basic NET編譯器與一個runtime的VB NET的應用程式 它目前一直由Rolf Bjarne Kvinge進行開發 Moonlight 编辑 Moonlight是一個Microsoft Silverlight的開源實作 自從Mono 1 9起即包含了這實作 在2009年1月20日釋出的Moonlight 1 0支援Silverlight 1 0 APIs 而Moonlight 2 0支援Silverlight 2 0 Moonlight 3 0則在2010年2月被發表 包含了Silverlight 3 0的支援 Moonlight最終在2012年3月29日被放棄 依據米格爾所言 兩個因素扼殺了這個專案的命運 Microsoft增加了 人为限制 這造成了桌面程式無用武之地 並且在Web上的技術沒有獲得足夠的配合 Mono組成元件 编辑Mono組成元件包含了以下三類 核心元件 Mono Linux GNOME開發堆疊 微軟相容堆疊核心元件包含了C 編譯器 Common Language Infrastructure虛擬機器 以及核心類別程式庫 這些元件都是基於Ecma 334 and Ecma 335標準 25 而使得Mono能夠提供與標準相容 免費 並且是開放原始碼的CLI 虛擬機器 微軟曾經聲明這些標準都是基於Community Promise license的社群保護承諾之下 26 Mono Linux GNOME開發堆疊則是提供了工具以用於開發應用軟體 這些工具使用了既有的GNOME以及自由並且開放原始碼程式庫 它們包含了針對圖形使用者介面 GUI 開發的Gtk 可套用Gecko rendering engine的Mozilla程式庫 Unix整合程式庫 Mono Posix 安全性推疊 以及XML schema語言RelaxNG Gtk 讓Mono應用程式融入Gnome桌面環境而成為原生程式 資料庫程式庫則提供了與物件關連式資料庫連結的能力 這些資料庫包含了 db4o Firebird Microsoft SQL Server MSSQL MySQL Open Database Connectivity ODBC Oracle PostgreSQL SQLite等等 在網站上可看見Mono專案一直都在持續更新維護資料庫程式庫 27 微軟相容堆疊則是提供了一種方式來使得Windows NET應用程式可以被移植到GNU Linux上 這個堆疊包含了ADO NET ASP NET以及Windows Forms等等 不過 由於這些元件並沒有被上述所說Ecma標準所涵蓋 因此部份元件有所謂專利恐懼與疑慮的問題 架构 编辑 nbsp 程式執行引擎 编辑 Mono程式的執行包含一個程式碼運作引擎 它會將ECMA CIL的byte code轉譯為原生碼 Native Code 它支援了以下處理器 ARM MIPS 只有32位元模式 SPARC PowerPC S390 64位元模式 x86 x86 64以及IA 64 64位元模式 程式的轉譯有三種模式 Just in time JIT 編譯 在程式執行當中將ECMA CIL的byte code轉譯為原生碼 Ahead of Time AOT 編譯 ECMA CIL的byte code 通常在 exe檔或 dll檔中 會轉譯出原生碼並儲存在作業系統中 以及CPU架構設定檔 例如在Linux上 如果是foo exe 就會產生foo exe so檔 通常 此種模式可產生出絕大部份前種模式所產生的原生碼 部份的例外是trampolines或是控管監督相關的碼 仍舊需要JIT來執行 由此可知AOT影像檔並非可以完全獨立執行的 完全靜態編譯 這個模式只支援少數平台 它基於AOT編譯模式上 更進一步產生所有的trampoline wrappers以及proxies 這幾樣東西是用於靜態連結出靜態檔案時所需 完全靜態編譯模式可以讓程式的執行期完全不需要用到JIT 這個做法適用於Apple iOS作業系統 Sony PlayStation 3以及微軟的XBox 360等作業系統 來源請求 從2 6版起 Mono開始支援使用LLVM來產生執行碼 而非原本自帶的方式 這對於高效能計算方面非常有用 因為在這種場合下 程式的執行效能比啟動速度來得重要 從2 7 Preview版開始 使用者不再需要在程式編譯前的Configuration時就必須選定執行碼產生引擎 執行碼的產生可以在程式啟動時以 llvm或 nollvm的參數來指定即可 預設是以自帶的引擎為主 因為它的產生速度比較快 垃圾回收 编辑 當2 8版推出時 Mono runtime提供了兩套垃圾回收器 generational collector 28 以及Boehm conservative collector 在Mono 3 1 1版之前 預設的垃圾回收器 Boehm Demers Weiser Conservative Garbage Collector 28 29 跟商業環境如Java Virtual Machine或 NET framework的垃圾回收器相比 一直有很大的限制 在某些狀況的應用軟體上會發生内存泄漏的現象 這使得Mono無法用於需要長時間執行的伺服器應用 截至2010年10月 2010 10 update 一個稱之為 Simple Generational GC SGen GC 的新一代垃圾回收器開始用於Mono中 在3 1 1版之後就直接變成是預設的垃圾回收器 對於Mono 2 8到3 1 0 使用者可以以傳入參數 gc sgen來讓Mono runtime啟動時使用SGen垃圾回收器 28 這個新的垃圾回收器相較於傳統基於保守型掃描方式的回收器 有很多優點 它使用了generational garbage collection 從物件一開始被配置 到各個週期 所有活著的物件都會被轉移到較早代的記憶體池 這個想法是來自於因為許多物件都只是短暫使用的 因此可以被快速回收再利用 只有少數物件是長期性的存活在應用程式的整個生命期中 另外 為了改善效率 這個回收器對每個執行緒配置了個別的記憶體池 讓執行緒不需要跟別的執行緒打交道就可以自行配置記憶體區塊 對於前述所說 物件的轉移到較早代記憶體池的做法則是 在轉移之後 將所有目前指向該物件的指標都更新為新的位址 由於這樣的做法在大型物件時比較浪費記憶體 因此SGen為大型物件使用了獨自的記憶體池 Large Object Section 並且對這些物件使用mark and sweep演算法 目前SGen是以比較保守的方式來對待堆疊與暫存器 並且 那些可被參考到的物件是由它們的root來負責pin的動作 未來版本的Mono將會以精確方式來掃描託管的堆疊 藉此減少那些被pin的物件 類別庫 编辑 類別庫为应用程序开发提供一套广泛而有效的工具类 这些工具类可以用于任何 NET语言 類別庫被按命名空间进行了结构化 并被放置于称为程序集的共享库中 在我们谈到 NET Framework时 我们多数是指这个类库 命名空间和程序集 编辑 命名空间是一种用于将逻辑上相似的类按层次结构分组的机制 这种机制防止了命名冲突 在这种结构化采用被点号 分隔的单词来实现 通常最顶层的命名空间是System 例如System IO和System Net 完整的命名空间列表可以在Mono文档 30 中找到 当然还有别的顶层命名空间 例如Accessibility和Windows就是这样的例子 新建的命名空间还可以以开发组织的名字开头 程序集是这些类库的物理载体 它们跟Win32共享库一样都是dll文件 尽管不完全一样 一些程序集的例子有 mscorlib dll System dll System Data dll和Accessibility dll 命名空间经常被分拆到几个程序集中 而一个程序集可以由几个文件组成 公共语言基础和公共语言规范 编辑 公共语言基础 Common Language Infrastructure CLI 是一套标准 ECMA335 公共语言运行时 Common Language Runtime 即CLR是CLI标准的实现 Mono是实现者之一 该运行时用于执行已编译的 NET应用程序 公共语言基础已被ECMA定义为标准ECMA 335 要运行一个 NET应用程序 你必须使用相应的参数调用运行时 在ECMA 335的第六章详细说明了 公共语言规范 Common Language Specification CLS 并定义了提供给公共语言基础的接口 例如对于枚举类型的隐含表示类型的协定 Mono的编译器负责生成符合公共语言规范的映射代码 即公共中间语言 Common Intermediate Language CIL Mono的运行时将运行这类代码 ECMA标准先前还定义了一个符合公共语言规范的程序库作为应用框架 托管与非托管代码 编辑 在原生的 NET Mono应用程序中 所有代码都是托管的 也就是说 是受管于CLI式的内存管理和线程安全管理的 其它的 NET或Mono应用程序可以通过使用System InterOpServices库创建C 绑定来调用已存的非托管代码 很多移植到Mono的类库使用了CLI的这个特性 例如Gtk 相关项目 编辑 现有大量与Mono相关的用于扩展Mono的项目 这些项目允许开发者在他们的开发环境中使用Mono 这些项目包括 Cocoa 31 对原生Mac OS X工具包的一系列包装 Cocoa Gecko 一个对在Mozilla中使用的嵌入式布局引擎的绑定 Gecko Gtk 对使用C的GTK 库的C 的外包 Tao 一个图形及游戏库的绑定 授權 编辑Mono是透過Xamarin的雙重授權 相似於其他產品 如Qt和Mozilla application Suite Mono s C 編譯器與工具是依照GNU Leasser General Public License LGPLv2 only 來釋出 開始於Mono 2 0 Mono C 的編譯器源碼在MIT X11 License仍然是有效的 屬於GNU Leasser General Public License LGPLv2 only 的runtime函式庫及屬於MIT X11 License的類別函式庫 有完全免費的軟體與開源授權 因此Mono是免費的開源軟體 C 編譯器的授權改變是從GPL到MIT X11授權 允許編譯器的程式碼在少許的GPL限制例子中被重複使用 如例 作為服務的Mono編譯器 Mono互動介面的Shell Mono可崁入的的C 編譯器 Mono的C 4 0的動態綁定的實作 MonoDevelop的內建parser和AST圖Mono与微软的专利 编辑人们对于微软能否采用专利摧毁Mono项目进行了大量的争论 其实 专利问题不在于已被提交到ECMA组织的核心技术或Unix Gnome的专有部分 而在于由微软基于 NET Framework创建的技术 例如ASP NET ADO NET和Windows Forms 这些技术在Mono中至今还没有被完全地实现 事实上 在开发Mono应用程序时也不需要用到 然而 在开发基于Windows平台的程序时却是不可缺少的 Mono团队将目标定为将这些技术纳入到项目中 并制订了一个三步驟策略来处理它们 采用其它实现方式来实现从而绕过专利问题 把包含专利的代码清除出项目 找出 现有技术 prior art 从而将专利变为非专利显然 第一个选项并不总是可行的 对于一些问题 例如那些与协同工作和交互相关的 可能就只有一种解决方案 由于这个相同的原因 尽管第二个选项总是可行的 它却可能导致一个开发出来的产品并不能作为 NET的替代品 第三个选项则是昂贵的 甚至不可能的 这需要一定程度的运气 使用Mono开发的软件 编辑 nbsp F Spot photo management program nbsp Muine music player以下是使用Mono API和C 编写的部分程序 Banshee是一个用于GNOME的音乐管理和播放软件 Beagle是一个桌面搜索软件 Blam 是一个RSS 新闻聚集器 特别适合于阅读如Planet Gnome 32 这样的行星 33 资讯 Bless 34 是一个十六进制编辑器 CDCollect 35 是一个CD 编目应用程序 Diva是一个用于GNOME的视频编辑器 F Spot是有个由Novell开发的图片便捷管理程序 Fiddler 36 是一个强大的Web 抓包工具 与Charles齐名 Galaxium 37 是一个MSN 即时通讯软件客户端 GLyrics 38 是一个歌词搜索器 Gpremacy 39 是以Mono Gtk 實作的圖版遊戲Supremacy iFolder 3 by Novell 让你使用点对点协议 peer to peer 或Novell的群集服务器产品与其它计算机和用户共享文件 imeem 40 一個社交網路軟體 Mac版本的用戶端和伺服器使用Mono運行 而Windows版本的用戶端仰賴於Microsoft Net KeePass是一款開源的密碼管理器 MindFire 41 是一个用于辅助速读 speed reading 的跨平台电子书阅读器 MonoDevelop是一个用于创建Mono应用程序的集成开发环境 该软件原先是SharpDevelop向Gtk 的一个移植 而现今该软件已独立开发 该软件在Windows上有测试版的可用版本 Pinta是一个简单的位图形编辑软件 分支版本 编辑2011年4月 Novell公司被Attachmate 英语 Attachmate 公司所併購 而原先在Novell公司裡的Mono開發者被大量資遣 2011年5月 原先Mono的開發者另外成立一家Xamarin的公司 仿Mono發行他們的Xamarin跨平台 NET套件 在Windows下能與整合到Microsoft Visual Studio的IDE之中 2011年7月 Attachmate 英语 Attachmate 公司旗下的Novell公司批准了Mono相關專案到Xamarin的授權 备注 编辑 For more information about the licensing see Mono FAQ Licensing 页面存档备份 存于互联网档案馆 参考文献 编辑 Release mono 6 12 0 199 6 12 0 Stable 6 12 0 199 Ecma 334 页面存档备份 存于互联网档案馆 Ecma 335 页面存档备份 存于互联网档案馆 OldReleases Mono Mono project com 2013 07 17 原始内容存档于2020 09 24 Mono 1 0 Release Notes Go mono com 2013 07 17 原始内容存档于2020 04 09 Mono 1 1 1 Development Release Features and Known Issues Go mono com 2013 07 17 原始内容存档于2020 04 09 Mono 1 2 Release Notes Go mono com 2013 07 17 原始内容存档于2020 04 09 Release Notes Mono 2 0 Mono Mono project com 2008 10 06 2013 07 17 原始内容存档于2020 11 09 Release Notes Mono 2 2 Mono Mono project com 2013 07 17 原始内容存档于2020 06 12 Linear IR Mono Mono project com 2013 07 17 原始内容存档于2020 11 09 Mono s SIMD Support Making Mono safe for Gaming Miguel de Icaza Tirania org 2008 11 03 2013 07 17 原始内容存档于2010 11 04 Mono s C Compiler as a Service on Windows Miguel de Icaza Tirania org 2010 04 27 2013 07 17 原始内容存档于2020 11 09 CsharpRepl Mono Mono project com 2013 07 17 原始内容存档于2020 09 20 Release Notes Mono 2 4 Mono Mono project com 2013 07 17 原始内容存档于2020 11 09 Release Notes Mono 2 6 Mono Mono project com 2013 07 17 原始内容存档于2020 08 29 Release Notes Mono 2 8 Mono Mono project com 2013 07 17 原始内容存档于2020 11 09 Release Notes Mono 2 10 Mono Mono project com 2013 07 17 原始内容存档于2020 08 04 Release Notes Mono 3 0 Mono project com 2013 09 23 原始内容存档于2020 11 12 Release Notes Mono 3 2 Mono project com 2013 09 23 原始内容存档于2020 11 12 Release Notes Mono 3 4 0 Mono project com 2014 05 31 原始内容存档于2020 09 24 Release Notes Mono 3 6 Mono project com 2014 05 31 原始内容存档于2020 09 24 Release Notes Mono 3 8 0 Mono project com 2014 09 04 原始内容存档于2020 09 24 Release Notes Mono 3 10 0 Mono project com 2014 10 04 原始内容存档于2020 09 24 Ecma 335 2006 04 14 原始内容存档于2013 06 26 Technet com 2014 06 10 原始内容存档于2013 06 22 Database Access Mono 2014 06 10 原始内容存档于2020 04 09 28 0 28 1 28 2 Compacting GC mono project com 2008 12 16 原始内容存档于2020 11 09 Boehm Hans J Advantages and Disadvantages of Conservative Garbage Collection Xerox PARC 2008 12 16 原始内容存档于2013 07 24 Mono文档 页面存档备份 存于互联网档案馆 Cocoa 页面存档备份 存于互联网档案馆 Planet Gnome 页面存档备份 存于互联网档案馆 行星 页面存档备份 存于互联网档案馆 Bless 页面存档备份 存于互联网档案馆 CDCollect 页面存档备份 存于互联网档案馆 Fiddler 页面存档备份 存于互联网档案馆 Galaxium 页面存档备份 存于互联网档案馆 GLyrics Gpremacy 页面存档备份 存于互联网档案馆 imeem 页面存档备份 存于互联网档案馆 MindFire This article incorporates text from Mono s homepage 页面存档备份 存于互联网档案馆 which is in the GNU Free Documentation License Miguel de Icaza Mono list Mono early history 2009 10 13 6 December 2005 原始内容 mailing list 存档于2011 06 06 Eugenia Loli Queru Mono Applications Aplenty OSNews 2005 02 22 6 December 2005 原始内容存档于2006 11 11 外部链接 编辑GotMono 页面存档备份 存于互联网档案馆 Mono community homepage Mono Forum Mono Live 页面存档备份 存于互联网档案馆 LiveCD website Running NET on Linux or Windows Ximian Forum Slashdot Fedora Core 5 includes Mono 页面存档备份 存于互联网档案馆 Novell Inc 页面存档备份 存于互联网档案馆 国际站点Mono France A French Mono WebSite MonoBrasil A Brazilian Mono WebSite MonoColombia A Colombian Mono WebSite MonoGermany 页面存档备份 存于互联网档案馆 A German Mono WebSite MonoHispano A Spanish Mono community Japanese Mono Mono web site translation to Japanese MonoPoland Polish Mono Web site Mono Netherlands Dutch Mono site 取自 https zh wikipedia org w index php title Mono amp oldid 78980473, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。