CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

是不是在linux上能运行c#?我在一个网站上看到下面的东西,请大家说说。

楼主lzj18(孤独人生)2003-08-02 21:14:32 在 .NET技术 / C# 提问

 
  在Linux上运行C#      
   
  --------------------------------------------------------------------------------  
  源作者:仙人掌工作室                                                                               人气:1879                        
     
   
  众所周知,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的友好程度等。  
   
   
   
     
     
  问题点数:100、回复次数:31Top

1 楼shixueli(我们总是不能随心所欲)回复于 2003-08-02 21:25:53 得分 4

能不能运行,看编译器Top

2 楼chagel(Mike in Shanghai)回复于 2003-08-02 22:15:50 得分 4

http://www.go-mono.com/  
  想法是好的,其实没有多大意义  
  做的再好,人家要用.net还会放弃Windows?  
  不过对于微软倒是贴上一块金  
  Top

3 楼windsoft(風寒葉殘)回复于 2003-08-02 22:15:54 得分 4

我想比较难  
  至多也只是支持一部份功能  
  不可能象在windows下那样强大Top

4 楼cnhgj(戏子) (没时间练太极)回复于 2003-08-02 22:43:38 得分 5

希望如果如此Top

5 楼caoit(lost)回复于 2003-08-03 01:34:48 得分 4

gzTop

6 楼lzj18(孤独人生)回复于 2003-08-06 15:32:34 得分 0

upTop

7 楼anux(阿牛克斯)回复于 2003-08-06 19:10:40 得分 4

不错。希望它能更强大一些。  
  要知道,ms的服务器还是很贵的。Top

8 楼CMIC(大象)回复于 2003-08-06 19:31:02 得分 5

mono发展的太慢了.Top

9 楼lisoft2002(lisoft2002)回复于 2003-08-07 09:48:34 得分 5

budongTop

10 楼highman(看看)回复于 2003-08-07 09:54:28 得分 4

有谁用过吗?Top

11 楼qqsyb((一天到晚游泳的鱼))回复于 2003-08-07 10:12:52 得分 4

谁用过?这样用和在windows下有何区别?Top

12 楼hehaorome(石沉大海)回复于 2003-08-07 10:29:34 得分 4

人家要用.net还会放弃Windows?  
   
  这话有道理。Top

13 楼coudoufu(只爱细宝宝)回复于 2003-08-07 10:31:27 得分 4

早看过了……希望成功!Top

14 楼ddy2000(梦归自然)回复于 2003-08-07 10:46:02 得分 4

Mono是不是微软参与的Top

15 楼wheagle(小雄鹰飞)回复于 2003-08-07 11:02:15 得分 4

c#是一种新的语言  
  和.net应该说没有解不开的关系  
  所以c#用在linux下也不是没有可能的  
  语言想要健壮强大  
  跨平台性是不可少的  
  否则总会有不通用的地方  
  如果移植起来不方便  
  谁会死心塌地的用你呢  
  一家之言Top

16 楼lzj18(孤独人生)回复于 2003-08-08 16:37:25 得分 0

upTop

17 楼panyee(快乐王子)回复于 2003-08-08 16:58:03 得分 5

我装red   hat   8,在上头测试过,像输出简单的东西还是可以的,  
   
  编译好的exe可以直接拿到windows上运行  
   
   
  现在asp.net也可以在linux也可以运行  
   
  就是支持的类库比较有限  
   
  Top

18 楼panyee(快乐王子)回复于 2003-08-08 17:00:35 得分 4

对winforms不支持,只能是dos界面的那种i/o操作Top

19 楼lzj18(孤独人生)回复于 2003-08-08 17:29:04 得分 0

upTop

20 楼lzj18(孤独人生)回复于 2003-08-08 17:30:47 得分 0

还有谁试过?Top

21 楼abcynic(门外汉)回复于 2003-08-08 17:33:23 得分 4

Mono已经可以做winform程序了,大家看看这个例子。  
   
  http://www.nullenvoid.com/mono/wiki/index.php/The%20TextBox%20Control.Top

22 楼nichotilikai(lk)回复于 2003-08-08 17:37:06 得分 4

 
  微软曾表示过,想把.NET移植到FreeBSD上。不知道可有下文。  
  Top

23 楼alaisalaix(天上人间)回复于 2003-08-08 17:42:27 得分 4

我不知道这样做有多大意义?  
  linux中也不缺这个东东Top

24 楼abcynic(门外汉)回复于 2003-08-08 18:12:08 得分 4

意义还是有的,一个程序写好了,用户可以自己选择要用什么操作系统。  
  开发者不用因为用户选择的操作系统而重新写一次程序。  
  如果能在windows下开发,linux下用,对于程序员来说还是一件很方便的事情,不要装多重系统,玩游戏方便多了。Top

25 楼lyrixliu(WHO.NET)回复于 2003-08-08 20:14:09 得分 4

FreeBSD下肯定可以,Linux下好像不行吧  
  微软发布了FreeBSD下的.netFramework   SDKTop

26 楼nehc(青义居士)回复于 2003-08-08 20:25:48 得分 4

我没有做过ui的mono程序,不过我看到过。确实是可以的。用gtk的说  
   
  我在linux抄了一个实验性质的代码,居然成功访问另外的机器上的mssql?!  
   
  就一个字,牛!Top

27 楼lzj18(孤独人生)回复于 2003-08-09 07:00:20 得分 0

说说吧Top

28 楼alphawin(云和山的彼端)回复于 2003-08-09 08:52:00 得分 4

可以的,只要有c#编译器,就像java一样Top

29 楼Beta4(一会就好)回复于 2003-08-09 08:53:38 得分 4

mono的力量太小了,主要是microsoft不愿意向上移植   .net  
  祝mono成功Top

30 楼lzj18(孤独人生)回复于 2003-08-09 11:49:45 得分 0

自己再upTop

相关问题

  • 在linux下运行c
  • linux下C\C++的编译,运行
  • 如何在linux下运行c程序?
  • Linux下的C++程序运行错误
  • c++,Linux下怎样用程序实现后台运行?
  • 在linux上编译、运行C程序,请帮忙
  • 如何将C#写的东西在没有.net框架的机子上运行。
  • 怎么运行c++?
  • C++ Builder运行错
  • 在linux 用 C api 连接Mysql程序编译后运行出错!!

关键词

  • .net
  • .net框架
  • c#
  • mono
  • windows
  • 执行
  • linux
  • 编译器
  • 文件
  • 命令行

得分解答快速导航

  • 帖主:lzj18
  • shixueli
  • chagel
  • windsoft
  • cnhgj
  • caoit
  • anux
  • CMIC
  • lisoft2002
  • highman
  • qqsyb
  • hehaorome
  • coudoufu
  • ddy2000
  • wheagle
  • panyee
  • panyee
  • abcynic
  • nichotilikai
  • alaisalaix
  • abcynic
  • lyrixliu
  • nehc
  • alphawin
  • Beta4

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo