最近开始接触C#,遇到mono使用问题

最近开始接触C#,遇到mono使用问题,第1张

我下载了很多rpm文件,然后使用命令安装了。我看资料说默认安装的mono是在usr/local/lib下面但是我没有看到

但是我可以使用mono命令,而已。在linux建立一个简单控制台程序输出一个hello world。是成功

然后我就是开始把我windows上的一个很简单winform运行到linux。但是一直报错:大概是这样的,类型初始化错误,加载dll的时候错误,是那个gdi

简单地讲.net包括一个解析应用程序代码的类库以及一个支持程序运行的平台。何谓平台:比方说exe可执行文件可以在Windows上运行,却不能在Linux上面运行。 *** 作系统本身就是一个运行平台。底层的API等可以看做类库。所有在Windows上运行的程序其实都只是对底层API直接或间接地调用,扩展了 *** 作系统的功能而已。.net之前的Windows程序在写完后被编译成二进制的exe文件。它们可以直接被 *** 作系统解释并送到CPU里面运行。也就是说Windows就是这些程序运行的平台。问题1:不光Windows与Linux是不同的运行平台。Windows的不同版本也是不同的运行平台。因为它们的 *** 作系统内核或多或少不一样。API的类库也存在差异。如果各个版本的Windows内核不能完全兼容,就会导致如下问题:如果某程序编写的时候调用了某个特定版本Windows的某个函数,并且该函数在其它版本的Windows内核中都没有,那么把该程序发布到其它版本的Windows至上就会出现运行时错误。运行到一半发现找不到某个函数……这是一个问题。另一个显著的问题是: 编程语言何其之多。如果写C语言的人能够调用B语言编写的组件。那么代码的重用性就得到了极大程度上的增强。.net.net出现后解决了很多问题。当然包括这两个问题。.net支持很多种语言。但是C#才是为.net量身定做的语言。打个比方,地球上一部分人讲汉语,一部分人讲英语,一部分人讲鸟来语。但是英语是比较公认的官方语言。说不同语言的人如果不懂对方的语言显然不能沟通。如果有个翻译就OK了。.net本质也只是对API进行了更安全的封装,也只是Windows的一种扩展而已。但是它之所以独立于Windows之上成为一个运行平台,是因为.net编写的程序并没有直接编译成Windows能够理解的二进制文件。而是编译成了.net的中间语言。好比我们重新定义了一种国际语言。它既不是英语也不是汉语,不是现存的任何语言。但是它可以用来翻译现存的所有语言。正因为程序被编译成了中间语言,它们在这个层面上可以自由地交流。所以C#之类的C型语言可以跟VB型的B型语言等互相访问。也正因为它们被编译成了一种 *** 作系统不认识的中间语言,它们才需要有一个解析平台(公共语言运行时,也是.net的一个部分)。.net相当于同时充当了程序与Windows之间的翻译官与字典的功能。Winform这个这个……当你学会了一种语言的时候,你可以用它来唱歌,也可以用它来写诗。当你要唱歌或者要写诗的时候,你可以用任何一种语言。Winform说到底不就是编程语言的一件艺术品么?

可以用mono啊,支持在linux mac等 *** 作系统上运行.net Winform程序也可以让Appahe,Nginx等Web服务器支持Asp.Net程序,当然也是跨平台目前已经全面支持到.Net3.5 及以下版本的程序,而Moonlight项目则可以让Silverlight 也可以跨平台运行特别说明一点Mono还可以支持windows系统,这意味着可以不用安装庞大的.net runtime就可以在windows上运行.net程序,值得称赞的是Mono 也已经已知道Iphone 和 Android等移动设备上,只是目前还不完善,期待吧http://www.mono-project.com/Main_Page


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7325135.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-04
下一篇 2023-04-04

发表评论

登录后才能评论

评论列表(0条)

保存