mono 开发_mono开发winform

       大家好,我是小编,今天我来给大家讲解一下关于mono 开发的问题。为了让大家更容易理解,我将这个问题进行了归纳整理,现在就一起来看看吧。

1.C#跨平台吗?

2.盗版游戏无法加载mono解决方法

3.unitymono内存一直涨

4.如何利用C生成.so供Mono调用

5.怎样用monodevelope写窗体程序

mono 开发_mono开发winform

C#跨平台吗?

       C#包括其他的

       .NET系语言,从技术实现上都是跨平台的,因为它们在编译之后都是符合.NET公共运行时标准的字节码,通过.NET虚拟机运行时翻译成最终的二进制运行。

       微软之前将C#等局限在微软操作系统上,只是一种商业竞争的考虑,希望广大的开发者仍然围绕在微软的操作系统生态上开发。

       C#当然已经是一门彻底的跨平台编程语言,最厉害的是C#是目前除了C++之外唯一一门可以开发移动端和PC端的编程语言,C#除了Windows平台的开发,还搞定了iOS/Android的开发,他还不用像C++一样每个平台都要单独开发一次。

       从Mono说起、C#似乎不是真正的跨平台

       C#并不是一开始就跨平台的,不像Java/Python/JavaScript/PHP这些编程语言一开始就是跨平台,C#并不是这样,C#设计之初并不是跨平台的。

       C#之父也是Delphi之父、安德斯海尔斯伯格从设计C#开始,就把它作为了Windows平台专属的编程工具,因此微软官方并没有像Java一样跨平台。

       Xamarin公司主持了一个叫做Mono的开源项目,这个项目的目的就是创建一个开源的

       .NET

工具,包括C#编译器以及通用语言架构,与微软官方的

       .NET

Framework不同的是,Mono项目不仅仅可以在Windows平台上运行,还可以在Linux、Unix、macOS、FreeBSD、Solaris等,甚至在Playstation3,Wii以及XBox360等游戏平台Mono也都能够运行。

       后来微软收购了Xamarin这家公司,微软正式推进了C#和

       .NET

开源,并且微软官方推出了macOS版本的visualstudio,其实就是基于xamarin做的,这可以说是微软正式官方支持了整个微软最核心开发体系的跨平台和开源。

       C#能够用在下面这些框架当中

       .NET

Core(全平台、完全跨平台支持Linux、Windows、macOS),主要用在服务器端开发,Web应用开发,以及企业系统开发,这方面功能是C++/Java/PHP/Python等编程语言最擅长的事情;

       Windows桌面程序开发,主要技术是WPF框架,这个层面的技术是C++最擅长的;

       Unity游戏引擎的主要脚本语言,可用来开发PC、Sony、Xbox等游戏平台上的各种游戏,Unity是最为成熟的游戏引擎之一,目前除了Unity最强的是Unreal虚幻引擎,虚幻引擎的主要编程语言则是C++,相对来说C#更低的学习门槛,也让Unity迅速发展成为最火的游戏引擎之一;

       开发原生移动应用,除了曾经的Windowsphone平台,通过Xamarin的技术,微软实现了iOS/Android原生应用开发,并且与此同时还支持了macOS应用开发;

       .NET

标准在上述所有应用程序中使用.net标准创建库。

       最后总结一下跨平台编程语言的特点:Java是一次编写到处运行,C++是一次编写针对特定的平台进行编译,C#则本质上仅仅是一门编程语言,想要实现跨平台你需要选择不同的技术栈、不同的框架。

       本文由EmacserVimer原创出品,未经许可,任何渠道、平台请勿转载,违者必究。

       .NET

和C#刚出来的时候就被设计为可以跨平台的,不过由于微软的战略考虑,所以当时只是跨Windows平台,只能算半个跨平台。

       之后有了Mono,也就是开源的

       .NET

实现,这时候C#就可以看成完全跨平台的了。不过Mono毕竟是社区实现,没有大公司的资金支持,虽然算是稳步发展,但是一直不温不火。

       这种情况知道最近几年改善了。因为微软终于出手了,这就是大名鼎鼎的

       .NET

Core,官方的跨平台

       .NET

实现。作为

       .NET

的亲儿子语言,C#自然理所应当的跨平台了。

       .NET

Core的代码完全是重新编写的,并且是模块化的。作为对比,Java的模块化直到Java9才实现。

       之后微软的工作重心就放到了.NETCORE上,ASP.NET

以及EF等框架也开发了新版来适应

       .NET

CORE。

       现在

       .NET

CORE的版本是2.2,最近的主要新特性是用Span重写了很多底层,大幅提高了运行速度。而今年底将要到来的3.0则会带来CORE上的WPF等GUI库。可以期待。

       PS.现在主流Linux已经将

       .NET

CORE纳入到官方仓库中,用一条命令即可安装。之后就可以享受到C#语言带来的便利。

       石头哥已经给你回答了。

       为了攒点粉丝,我也答一下。

C#是.NET中的一个语言,F#、VB等也是。一般我们不说C#,而是说.NET。

       目前.NET有.netframework、.netcore、xamarin、mono等框架。未来将以.NET5开始,统一框架。

       .net可以跨平台、跨CPU架构。

       支持Windows、linux、mac系统,基于linux开发的debain、ubuntu、centos等系统都支持。

       除了英特尔CPU,amd的CPU、arm架构的cpu都支持。

       除了我们平常电脑、服务器用的Windows系统、linux系统,还支持树莓派等各种linux嵌入式开发板。

       c语言是非托管语言,要对各种平台分别生成。而.net可以只生成一次,即可把软件放到各种平台下运行。一次生成,各个平台均可运行,不限cpu、不限系统。

       对于docker、k8s等技术。.net能十分优秀地契合,通过容器、集群技术,建立大型系统,开发分布式应用。

       国外有十分丰富的大型应用经验,国内对.NET的敏感度不高,主要以java为首的编程进行开发。要参考.net的情况,应当到谷g查找资料。国内对.net的”热情”并不高。

       .net支持windows、mac、linux等系统,支持电脑、手机(安卓和ios)、服务器、开发板/物联网设备。

       软件只需生成一次,即可在各个平台布署。

       .netcore的性能已经跟C++十分接近了。

       .net不仅能跨平台,而且跨得很优秀。

       跨

       Mono

一个第三方的.netframework实现(现被官方收编)

       几乎实现了

       .net

framework的所有功能,包括winfrm,wcf,aspnetwebfrm等等

       大名鼎鼎的unity3d就是使用mono实现了使用C#进行脚本编写

       Xamarin

       基于mono开发的,移动端跨平台框架,支持Android,iOS,WP(W10M)

       .NET

Core我猜这个我不用说了。

       C#是.Net平台上的主要开发语言,除此之外还有VB.Net和F#等。此处说的C#跨平台暂且理解为.Net跨平台。

       1,微软设计.Net之初,只支持Windows平台,跨多个版本的Windows系统平台,但是不能跨Linux等。

       2,.Net刚出来就公开了语言标准,因此有个团队基于该标准设计了Mono,除了Windows还支持Linux,并且一直维护更新,此时算得上是支持跨平台了。

       3,2004年,牛逼游戏公司搞了个游戏引擎Unity,现在只支持C#,非常热门

       4,2011年,另一个团队基于Mono开发了Xamarin,支持苹果、Android、WP三个平台的移动开发,这个时候的.Net跨平台更有价值了。

       5,2016年,微软正式推出.NetCore,天生跨平台,支持Windows、Linux、iOS等。

       6,再后来,微软收购了Mono、Xamarin,免费开放。

       至此,.NetCore跨平台一统天下!

盗版游戏无法加载mono解决方法

       unity3D用C#语言。

       unity3d选择C#,是因为C#在网络开发方面成绩很优秀。选择Mono这个基于C#的开源框架,Mono是一个由Novell公司(先前是Ximian)主持的项目。

       C#是Microsoft推出的.NET语言,只能在.NET平台上运行,例如Win9x、ME、NT、2000、XP和WinCE之类的操作系统。但是MONO是把.NET及其编程语言移植到非Windows的平台上。现在,C#是唯一被移植到非Windows平台的.NET语言。

扩展资料

       Unity3D开发工具中最重要的五个界面:

       1、场景(Sence)构建游戏的地方

       2、层级(Hierarchy)场景中的游戏对象都列在这里

       3、检测面板(Inspector)当前选中的资源或对象的设置,是一些变量和组件的集合

       4、游戏(Game)演示窗口,仅在播放模式中演示

       5、项目(Project)一些资源的列表,和库的概念一样

       百度百科—Unity3D

unitymono内存一直涨

       加载mono是指加载Unity游戏中的Mono运行时环境。当使用盗版游戏时,可能会遇到无法加载mono的问题。解决这个问题的方法如下:

       1. 购买正版游戏:使用盗版游戏存在违法行为,并且可能会导致无法加载mono等各种问题。购买正版游戏是一个合法且有效的解决方法。

       2. 更新游戏及相关组件:如果您已经购买了正版游戏,但仍然遇到无法加载mono的问题,可以尝试更新游戏及相关组件。确保您安装了最新版本的游戏以及mono运行时环境。

       3. 检查系统要求:确保您的计算机满足游戏的最低系统要求。有时候,无法加载mono的问题可能是由于硬件或操作系统版本不兼容所导致的。

       4. 安装正确的mono运行时环境:确认您已经正确地安装了mono运行时环境。如果您不确定如何安装或配置mono,请参考官方文档或游戏开发者的说明。

       5. 寻求技术支持:如果您尝试了以上方法仍然无法解决问题,建议您联系游戏开发者或官方技术支持寻求帮助。他们可能能够提供特定于游戏的解决方案。

       总结来说,使用盗版游戏存在很多风险和问题,包括无法加载mono等。购买正版游戏是最佳选择,同时确保您的系统和游戏组件状态良好,以获得最佳的游戏体验。

如何利用C生成.so供Mono调用

       CPU的开销。绝大多数基于Unity引擎开发的项目而言,其托管堆内存是由Mono分配和管理的,MONO内存分配带来CPU开销。当Mono内存从50M、60M、70M,一直增大到100M,这些内存分配都相当于CPU的开销,Unity是跨平台游戏引擎开发商,是实时3D互动内容创作和运营平台。

怎样用monodevelope写窗体程序

       Mono诞生的初衷是为了吸引更多的Windows .Net程序员来加入Linux平台的开发。但在Linux世界中C语言依然是

       主流。很多时候一些关键应用(比如大型 笛卡儿 乘积运算、需要调用平台硬件功能的时候)不得不依赖C来完成。

       这个时候 Mono 多少显得有些力不从心。

       当然可以使用DLLImport特性来完成对本地库(.so)的调用。现在来讲讲如何生成自己的本地库,并在Mono中调用

       首先,先用 C 写一个简单的函数,这个函数只用来把2个整形的形参相加之后返回结果。

       //the file name is sum.c

       #include <stdio.h>

       int sum(int a, int b)

       {

       return a + b;

       }

       OK.现在我们准备生成一个名为 libsum.so 的目标本地库。使用 GCC 编译器来编译生成我们要的结果

       gcc -Wall -fPIC -O2 -c -o libsum.o sum.c //生成.o

       gcc -shared -Wl,-soname,libsum.so -o libsum.so libsum.o //这步才生成共享库 .so 文件

       这个时候已经生成 libsum.so。然后可以在 Mono 中使用它了。

       using System;

       using System.Runtime.InteropServices;

       public class UnsafeDemo

       {

       [DllImport ("libsum.so", EntryPoint="sum")]//一定要指定EntryPoint

       static extern int sum(int a, int b);

       unsafe static void Main()

       {

       int x = sum(23, 45);

       Console.WriteLine("x: {0}", x);

       }

       }

       之后可以编译我们的程序:

       $ mcs --unsafe UnsafeDemo.cs

       $ mono UnsafeDemo.exe

       如果在编译程序的时候提示没找到 libsum.so ,你可以把 libsum.so 放到与 UnsafeDemo.exe 同级的目录下面试试。

       如果还不成功也可以参照我的这篇文章, good luck!

       /zhangjianying/archive/2006/09/04/1177049.aspx

       最后提醒一点写 C 的时候记住一点。C 是用返回值来判断是否发生错误。而 Mono 是用异常。

       //C code segment

       int debug (char *s)

       {

       printf("Output: %s/n", s);

       return -1;

       }

       //mono code segment

       [DllImport ("libsum.so", EntryPoint="debug")]

       static extern int debug(string sb);

       unsafe static void Main()

       {

       int x = debug("hello");

       if (x)

       {

       // succeeded

       }

       else

       {

       // failed

       throw new YouException();

       }

       }

       转载

       抱歉哦,来晚了。monodevelop开发的窗体是GTK+的哦,像java一样,默认的容器加进去只能布满全局,在这个里面,需要添加一个界面布局容器,然后在这个容器里面放控件就行了哦!

       今天关于“mono 开发”的探讨就到这里了。希望大家能够更深入地了解“mono 开发”,并从我的答案中找到一些灵感。