本文实例讲述了在Linux上运行C#的方法。分享给大家供大家参考。具体方法如下:

在任何一个平台(操作系统+硬件体系)上,编写和运行程序的三个最根本的需求是库、编译器/解释器、运行环境。库以类和方法(函数)的形式提供常用的例程,简化大型程序的编写。.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)。要运行这个执行文件,必须执行如下命令:

c++教程

打结石的方法

雀斑祛斑方法

8g运行内存手机

祛斑价格表

祛斑方法

点击查看更多图片

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的友好程度等。

希望本文所述对大家的C#程序设计有所帮助。

c#在linux上运行,在Linux上运行C#的方法相关推荐

  1. linux上jar包无法识别本地文件格式,解决使用maven将项目打包成jar包后运行在linux系统中无法读取jar包中文件的问题...

    哈哈,之前计划的每周至少更新一个博客的计划又因为各种原因都泡汤了.看来坚持真得是一件挺让人头疼的问题,无论如何,从这周开始接下来每周一定要至少更新一个技术博客,欢迎大家监督! 好,言归正传.之前前几周 ...

  2. linux导出文件夹到u盘,Linux系统放到U盘上直接在U盘上运行Linux

    以下使用dos+grub4dos启动Ubuntulinux进入u盘目录,这种开启方法便于加入PE和dos工具箱制作多重启动盘. 优盘之家 1.引导dos启动 U盘之家 启动UltraISO,选择菜单& ...

  3. 树莓派Java程序运行_树莓派上Java程序作为linux服务并开机自动启动

    http://www.iigrowing.cn/shu_mei_pai_shang_java_cheng_xu_zuo_wei_linux_fu_wu_bing_kai_ji_zi_dong_qi_d ...

  4. 运行linux在de1soc,在DE1-SOC上运行Linux

    1,设定串口终端 安装驱动 :使用mini-USB线将计算机与DE1-SoC的UART转USB接口.drivers\USB2UART_driver文件夹内放置有驱动程序 设定串口终端规格 : 设定串口 ...

  5. mac虚拟机linux性能测试,Veertu 1.0.4 – Mac上最轻便的虚拟机,可以运行Windows/Linux。...

    在Mac上运行 Windows / Linux Veertu简单.轻.安全的虚拟化软件设计的MAC. 与Veertu你可以运行你喜欢的窗口或Linux分布直接在OS X的系统管理框架Veertu供电和 ...

  6. oracle linux 版本 uek,在运行 Oracle Linux 7.1 UEK3 或 7.2 或者 RHEL 7.1 或 7.2 的系统上,RDMA 服务无法启动...

    在运行 Oracle Linux 7.1 UEK3 或 7.2 或者 RHEL 7.1 或 7.2 的系统上,RDMA 服务无法启动 错误号 20912503 问题: 在运行 Oracle Linux ...

  7. zybo上运行linux,Zybo开发板linux作业系统移植

    文章主要介紹zybo board上linux作业系统移植过程.分别介绍了开发环境搭建.U-boot编译.linux内核编译.busybox制作等流程及注意事项.文章使用的开发板是zynq 7000系列 ...

  8. 海思3519A上运行yolov3(二)——Linux和Windows开发环境和运行环境搭建

    本文主要讲Linux环境配置和Windows上软件的安装 一.Linux 1. Linux服务器上安装Hi3519A的Linux交叉编译器arm-himix200-linux, 复制Linux交叉编译 ...

  9. linux xen 管理,ARM平台上运行Xen 可同时管理linux和VxWorks

    Xen项目管理程序从上个世纪90年代就已经在剑桥大学里开始进行,到了2002年项目开源.如今它是最流行的开源管理程序之一,可以在云计算上使用,Xilinx和DornerWorks将这种虚拟化平台应用在 ...

  10. golang语言的入门基础,及window和linux系统上环境的搭配及运行

    golang语言的入门基础,及window和linux系统上环境的搭配及运行 简介: Go语言是谷歌推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性.Go语言专门针对多处理器 ...

最新文章

  1. group by 分组后 返回的是一个同属性的集合
  2. 【Python line_profiler memory_profiler】分析每一行代码的耗时及内存占用情况
  3. 1000万个“AI名师”:用机器算法“解剖”应试教育 | AI聚变
  4. linux动态分配全局置换,深入理解计算机系统 第九章 虚拟存储器
  5. bzoj1079: [SCOI2008]着色方案
  6. MVC的实体模型写在类库,为什么被其他类库调用时,用不了模型的表?
  7. bootstrap 打印组件_创想三维:有了3D打印机,后期该如何维护呢-创想三维 Ender-1_深圳3D打印机行情...
  8. 想成为企业争抢的目标吗?你需要掌握的五大热门IT技能
  9. python retry retrying使用
  10. linux 复制文件时,报cp: omitting directory `XXX'
  11. 编译原理第三版课后习题
  12. 免费网络硬盘-千脑网盘
  13. 关于office2016和visio2016无法共存的问题
  14. 地图 插件 html 经纬度,地图插件(经纬度)
  15. OneNote同步错误记录
  16. Android开发艺术探索 第一章 Activity的生命周期和启动模式
  17. IE无法查看源文件原因及解决办法
  18. XTU OJ 1359 字符频度
  19. linux环境MySQL8.0安装
  20. 身份证正则 身份证正则表达式

热门文章

  1. 学习C#设计模式(八)适配器模式
  2. 操作系统发展史及特点
  3. 数据库知识点总结——转载
  4. MyBatis-Plus之注解
  5. 微信公众号迁移主体变更需提供哪些材料以及迁移的完整流程
  6. ubuntu18.04 安装pip3
  7. 固定电话增值业务使用方法
  8. 快速搭建个人博客系统
  9. matlab-debug技巧
  10. Centos 7.9下载与安装