欢迎光临

木子屋

标题: 在Linux上运行C#

作者: dnawo

日期: 2011-06-08 02:25 PM

分类: Win编程

内容: 众所周知，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#类库移植进展的信息，请访问http://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的友好程度等。

+ 查看当前日志评论 (0)

登录

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.797 ms

返回

标题: 在Linux上运行C#

你没有权限发表评论

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.797 ms

返回

暂无评论

返回

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.828 ms

返回