在Linux上运行C#
时间:2022-10-27 19:30:00
众所周知,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友好等。
【无私分享:ASP.NET CORE 项目实战(第十章) Linux 上运行 Core 项目
目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 ASP.Net Core 给我们带来的最大亮点是跨平台,我在我的电脑上(win7)用虚拟机建造一个 CentOS7 ,来演示下 ...
不装mono,你的.NET程序还是可以的Linux上运行!
让.NET应用程序在linux目前上运行的一般做法是Linux上安装mono,然后通过”mono your.exe命令操作此程序. 这种运行.net程序方法有两个弱点,一是客户机需要安装 ...
Wine——在Linux上运行Windows软件
官网:https://www.winehq.org/ 参考: wikipedia 教你使用Wine在Linux上运行Windows软件 如何安装和使用Wine,以便在Linux上运行Windows应用 ...
发布项目到 Linux 上运行 Core 项目
发布项目到 Linux 上运行 Core 项目 目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 ASP.Net Core 给我们带来的最大亮点是跨平台,我在我的电脑上(win ...
Docker在Linux上运行NetCore配置运行系列(一)DotNetCore控制台
请注明本文的作者和路径,请尊重原文,违者必须调查. 系列文章:https://www.cnblogs.com/alunchen/p/10121379.html 文章操作系统信息 Linux:ubu ...
jmeter操作数据库,分布式,在Linux上运行
jmeter操作数据库: 1.在测试计划中导入数据库jar包 2.添加链接数据库信息 3.mysql:jdc:mysql://192.168.1.116:3307/bugfree?allowMulti ...
.netcore 在linux 上运行 Helllo World 例子
要想在linux上运行netcore ,需要在linux 安装netcore SKD 下面分两步完成, 首先,我的操作系统是Ubuntu 14.04 ,可参考不同版本 官网给出的连接 https:/ ...
开始使用 Docker (Linux 上运行 SQL Server) 上的 SQL Server 容器 - SQL Server | Microsoft Docs
原文:开始使用 Docker (Linux 上运行 SQL Server) 上的 SQL Server 容器 - SQL Server | Microsoft Docs 快速入门:使用 Docker ...
linux上运行jmeter-server失败
1. 在linux上运行jmeter-server报如下错误 处理办法: 通过以下命令运行 ./jmeter-server -Djava.rmi.server.hostname=192.168.16. ...
随机推荐
Cloud Computing Deployment Models
Cloud computing can broadly be broken down into three main categories based on the deployment model. ...
关于C51内的code,idata,xdata
在数据存储类型方面,8051系列有片内.片内外程序存储器.片外数据存储器、片内程序存储器也分为直接搜索区和间接搜索类型code.data.xdata.idata并根据51系列的特点设置 ...
Jquery 分页插件 Jquery Pagination
Jquery 分页插件 Jquery Pagination 对于分页插件,我觉得适用就行了,尽量简单,然后可以根据不同的应用场景换肤.展现式等. 对于初学者想写分页插件的同学,也可以看下源码,代码也 ...
VB中的冒号——bug
关于VB中的冒号,给许多人的印象都是:“一行可书写几句语句”.这么说是对的,但是有一种情况是不对的,那就是在条件语句中.这也是做一个VB项目升级的时候遇到,因为这个问题我查了好长时间程序,一直在找VB ...
truecrype加密卷的使用
truecrype7.1 文件加密 隐藏加密 密钥加密码双重保护
三、putty工具常见设置
转载自:https://www.cnblogs.com/hdk1993/p/4769072.html Putty是一个免费小巧的Win32平台下的telnet,rlogin和ssh客户端. 它的主程序 ...
问题描述: fatal error: 'XCTest/XCTest.h' file not found
#import 解决方法:在报错的Target中的Building settings中FRAMEWORK_SEARCH_PATHS添加$(PLATFORM_DIR)/Developer/Library ...
Biology(湖南集训)
题目大意:n个字符串,m个操作,可以插入字符串,也可以询问某T个字符串的最长后缀 题解:Trie+lca Trie树的插入与查询操作.把字符串反转就相当于求公共前缀. lca的深度就是公共前缀的长度. ...
mysqli函数库的使用
综述 1.什么是mysqli PHP-MySQL 函数库是 PHP 操作 MySQL 资料库最原始的扩展库,PHP-MySQLi 的 i 代表 Improvement ,相当于前者的增强版,也包含了相 ...
CSS——盒子模型
一.盒子模型: 模型如下: 如图:盒子模型包括:margin.padding.border.content四部分. margin:外边距,透明,能够显示父级的背景颜色等.表示元素与元素之间的间隔或者说 ...