在Linux上運行C#

衆所周知,C#是Microsoft推出的.NET語言,只能在.NET平臺上運行,例如Win 9x、ME、NT、2000、XP和Win CE之類的操作系統。但是,現在卻有了一個叫做Mono的項目,它的目標就是把.NET及其編程語言移植到非Windows的平臺上。現在,C#是唯一被移植到非Windows平臺的.NET語言。
  
  在任何一個平臺(操作系統+硬件體系)上,編寫和運行程序的三個最根本的需求是庫、編譯器/解釋器、運行環境。庫以類和方法(函數)的形式提供常用的例程,簡化大型程序的編寫。.NET框架也不例外,包含了許多類庫。另外,把程序轉換成可執行形式以及運行執行文件時,編譯器和運行環境是必不可少的。Mono軟件包包含了.NET類庫的一部分、一個C#編譯器和.NET運行環境CLR(Common Language Runtime,公共語言運行時環境)。
  
  Mono聲稱支持Linux、Solaris、Free BSD和MS Windows;除了Intel x86系列的CPU(486,各類Pentium等)之外,據說還要支持Sparc、PowerPC和StrongArm處理器。
  
  下面就來看看如何在Linux上運行Mono。
  
  
  命令行應用
  
  
  先從Mono主頁(http://www.go-mono.com/)下載軟件,執行下面的命令安裝所有RPM:
  
  rpm -ivh *.rpm
  
  
  
  安裝完成後,所有基本的動態執行庫,包括System.Data.dll、System.dll、System.Drawing.dll、System.Web.dll和System.Xml.dll都被複制到/usr/lib下。接下來,在Linux文本編輯器中輸入下面的內容,把文件保存爲HelloMono.cs:
  
  class HelloMono
  {
  public static void Main(string[ ] args)
  { System.Console.WriteLine("Hello Mono");
  }
  }
  
  
  
  執行下面的命令編譯C#文件:
  
  mcs HelloMono.cs
  
  
  
  mcs是Mono的C#命令行編譯器。與MS .NET SDK的csc編譯器相似,mcs也有很多命令行選項。上面的命令將生成可執行文件HelloMono.exe。注意這個執行文件不是Linux執行文件,而是一個.NET執行文件,或者說,這個文件的可執行代碼形式是中間語言(IL,Intermediate Language)。要運行這個執行文件,必須執行如下命令:
  
  mono HelloMono.exe
  
  
  
  Linux控制檯上將顯示出"Hello Mono"。關於mcs和Mono的更多說明,請執行man mcs或man mono參考其man文檔。
  
  
  GUI應用
  
  
  Mono不支持Windows Forms,但在C#編程中可用GTK #編寫GUI。GTK #是GTK+圖形庫的C#支持工具,可從http://gtk-sharp.sourceforge.Net/下載。下載完成後,先要安裝RPM:
  
  rpm -Uvh *.rpm --nodeps
  解開gtk-sharp-0.2.1.tar.gz:
  tar -zxvf gtk-sharp-0.2.1.tar.gz
  進入子目錄gtk-sharp-0.2.1,執行:
  ./configure --prefix=/usr
  make
  make install
  
  
  
  完成這一步驟之後,重新啓動一次。與GTK#有關的所有動態代碼模塊(gtk-sharp.dll、atk-sharp.dll、gdk-sharp.dll、glib-sharp.dll以及pango-sharp.dll)都會被複制到/usr/lib目錄,編譯用GTK#製作GUI的C#程序時,必須通過-r參數引用它們。GTK#下載包中包含了幾個示例程序,如HelloWorld.cs、Menu.cs、ButtonApp.cs等。編譯這些文件的命令如下:
  
  mcs -r gtk-sharp -r glib-sharp HelloWorld.cs
  mcs -r gtk-sharp -r glib-sharp -r System.Drawing Menu.cs
  mcs -r gtk-sharp -r glib-sharp -r System.Drawing ButtonApp.cs
  
  
  
  下面來看看如何通過-r選項引用前面各個.dll動態模塊。執行startx命令啓動X Window,進入終端窗口,再進入示例程序所在目錄,執行下面的命令分別運行各個程序:
  
  mono HelloWorld.exe
  mono Menu.exe
  mono ButtonApp.exe
  
  
  
  Mono項目還在完善和發展之中,還沒有移植好全部.NET類。但不管怎樣,它對許多人來說將是一個好消息。有關Mono C#類庫移植進展的信息,請訪問www.go-mono.com/class-status.html。
  
  考慮一個典型的服務器/客戶機式.NET應用:最終用戶只與客戶端打交道,客戶端最好是方便的GUI應用,許多人還會希望使用熟悉的Windows平臺。但是,對於他們來說,服務器端使用Windows還是Linux完全無關。所以,服務器端可以用帶有Mono的Linux構造,節省了配備專用Windows服務器的投資。Mono也將爲應用遷移帶來方便。如果Mono能夠順利發展,Windows開發者也將能夠爲Linux或其他非Windows平臺開發應用。如果這樣的話,不久之後出現一個類似Visual Studio .NET但免費或廉價的Linux開發IDE也說不定。
  
  然而,所有這一切是否能夠成爲現實,依賴於Mono是否能夠茁壯發展,也依賴於Mono與Windows平臺上的.NET框架兼容或相似程度。另外一些因素也很關鍵,例如Mono的性能、GUI的友好程度等。 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章