在Linux上運行C#

來源:互聯網
上載者:User

標籤:

眾所周知,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的友好程度等。

在Linux上運行C#

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.