从Unity3D编译器升级聊起Mono
接前篇Unity 5.3.5p8 C#编译器升级,本文侧重了解一些Mono的知识。
Unity3D的编译器升级
新升级的Mono C#编译器(对应Mono 4.4)
Unity编辑器及播放器所使用的Mono运行时还未升级。
新编译器仍针对C# 4,是旧的编译器也支持的版本。
新编译器目标框架为.Net 3.5,也是之前支持的框架。
Mono是如何运行的?
- *.cs源文件通过编译器编译成IL(中间文件)
- IL 运行在Mono的 JIT(just in time)
- Mono虚拟机运行在物理机中
查看Unity使用的Mono版本
参考:http://answers.unity3d.com/questions/259448/how-to-determine-mono-version-of-unity-.html
我在unity 5.3.4f1 中测试有效,而在unity 4.3.4f1下测试无效
using UnityEngine;
using System;
using System.Reflection;
public class MonoVersion : MonoBehaviour {
void Start()
{
Type type = Type.GetType("Mono.Runtime");
if (type != null)
{
MethodInfo info = type.GetMethod("GetDisplayName", BindingFlags.NonPublic | BindingFlags.Static);
if (info != null)
Debug.Log(info.Invoke(null, null));
}
//Debug.Log(System.Enviroment.Version);//net version?
}
}
方法二
d:\Program Files\Unity_5_34\Editor\Data\Mono\bin>monop2 --runtime-version mono.exe
runtime version: 2.0.50727.1433
d:\Program Files\Unity_5_34\Editor\Data\Mono\bin>mono.exe --version
Mono JIT compiler version 2.0 (Visual Studio built mono)
Copyright (C) 2002-2010 Novell, Inc and Contributors. www.mono-project.com
TLS: normal
GC: Included Boehm (with typed GC)
SIGSEGV: normal
Notification: Thread + polling
Architecture: x86
Disabled: none
Mono
Mono是.Net Framework?
.NET和Mono两者是完全独立的,简单的理解:Mono项目是第三方的.Net Framework实现,比喻为.Net的跨平台版,绝大多数C#的特性在.net和mono中都是相同的,少部分特性两者的实现不一致。
Mono的目标是创建一系列符合ECMA 标准(Ecma-334 和Ecma-335)的.NET 工具,包括C# 编译器和共通语言执行平台
Mono 虚拟机包含一个实时编译引擎,该引擎可用于如下处理器:x86,SPARC,PowerPC,ARM,S390(32位模式和64位模式),x86-64,IA64 和64位模式的 SPARC。该虚拟机可以将代码实时编译或者预先编译到原生代码。对于那些没有列出来的系统,则使用的是代码解释器。
这部分内容摘自:http://www.mono-project.com/docs/about-mono/
mono - C# Compiler
Mono’s C# compiler is feature complete for C# 1.0, 2.0, 3.0, 4.0 and 5.0 (ECMA). A good description of the feature of the various versions is available on Wikipedia.
mono的c#编译器提供c# 1.0,2.0,3.0,4.0和5.0(ECMA)完整的功能。不同版本的特性的描述可以在维基百科上查看。
mono - Mono Runtime
The runtime implements the ECMA Common Language Infrastructure (CLI). The runtime provides a Just-in-Time (JIT) compiler, an Ahead-of-Time compiler (AOT), a library loader, the garbage collector, a threading system and interoperability functionality.
mono运行时实现了ECMA 公共语言基础(CLI)。运行时提供了即时(JIT)编译器,提前的编译器(AOT),库加载器,垃圾回收机器,线程操作,互操作性
mono - .NET Frame Class Libray
The Mono platform provides a comprehensive set of classes that provide a solid foundation to build applications on. These classes are compatible with Microsoft’s .Net Framework classes.
Mono平台提供了一组全面的类来构建应用程序提供一个坚实的基础。这些类是兼容微软的.Net framework
mono - Mono Class Libray
Mono also provides many classes that go above and beyond the Base Class Library provided by Microsoft. These provide additional functionality that are useful, especially in building Linux applications. Some examples are classes for Gtk+, Zip files, LDAP, OpenGL, Cairo, POSIX, etc.
Mono还提供了很多类,甚至超越了微软提供的基类库。这些提供额外的功能是有用的,特别是在构建Linux应用程序。一些例子是Gtk +,Zip文件、LDAP、OpenGL,Cairo,POSIX等等。
.Net和Mono
.Net和C#版本
.Net版本和C#版本:http://www.cnblogs.com/zhaoqingqing/p/5478239.html
| .net framework | c# version | note | date |
|---|---|---|---|
| .net 3.5 | 3.0 | vs2008 | 2007-08 |
| .net 4.0 | 4.0 | vs2010 | 2010-04 |
| .net 4.5 | 5.0 | vs2012/13 | 2012-10 |
| .net 4.6 | 6.0 | vs2015 | 2015-07 |
.Net和Mono版本关系
一个大致的版本对应关系
| date | mono version | net version | note |
|---|---|---|---|
| 2008-10-01 | mono 2.0 | .net 2.0 c# 3.0 | |
| 2011-12-19 | mono 2.10.8 | .net 4.0 c# 4.0 | |
| 2014-03-31 | mono 3.4 | .net 4.5 c#5.0 | |
| 2016-06-08 | mono 4.4.0 | .net 4.6.1 c#6.0 |
mono编译器版本升级 mono运行库没有升级,目前运行时的mono还是 3.5
Mono发行版本
| Date(时间) | Version(版本) | Note(备注) |
|---|---|---|
| 2004-06-30 | 1.0 | C# 1.0 support |
| 2006-11-09 | 1.2 | C# 2.0 support |
| 2008-10-06 | 2.0 | .Net 2.0 C# 3.0 |
| 2010-09-22 | 2.8 | .Net profile C#4.0 support |
| 2012-10-15 | 3.0 | C# 5.0 support,async base class libray,MVC4 partial |
| 2014-03-31 | 3.4 | |
| 2015-04-29 | 4.0 | .NET 4.5 profile .NET4.5 assembiles,C#6.0,integrate .net core code |
| 2014-03-31 | 4.2 | |
| 2016-06-08 | 4.4 | |
| 2016-08-01 | 4.6 |
2016 Mono joins the .NET Foundation
参考资料
Mono release: http://www.mono-project.com/docs/about-mono/releases/
Mono 4.4:http://www.mono-project.com/docs/about-mono/releases/4.4.0/
Mono software: https://en.wikipedia.org/wiki/Mono_(software)
Unity3D发行版本
| Unity Version | Mono Runtime/Compiler Version | Note |
|---|---|---|
| 3.5 | ||
| 4.0 | 引擎大版本升级 | |
| 4.3 | 新的2D工具,Sprite | |
| 4.6 | uGUI,IL2CPP | |
| 5.0 | 2.0/2.0 | shader,assetbundle重大改变 ,等等 |
| 5.3.5p8 | 2.0/4.4 | Mono编译器升级运行时未升级,等等 |
| 5.4.0 f1 | 2.0/2.0 | 更多VR平台支持,等等 |
扩展资料
http://blogs.unity3d.com/2016/04/01/unity-joins-the-net-foundation/
更多信息
我的疑问
编译器和运行时版本不匹配可以正常执行?
文献资料
mono project github: https://github.com/mono/mono
mono doc: http://www.mono-project.com/docs/
Mono英文百科:[https://en.wikipedia.org/wiki/Mono](https://en.wikipedia.org/wiki/Mono)
Mono中文百科:https://zh.wikipedia.org/wiki/Mono
扩展资料
[.NET Core与.NET Framework、Mono之间的关系](http://www.cnblogs.com/shanyou/p/4295163.html)
国内 Mono 相关文章汇总:http://www.cnblogs.com/shanyou/archive/2012/07/28/2612919.html
从Unity3D编译器升级聊起Mono的更多相关文章
- Unity 5.3.5p8 C#编译器升级
Unity 5.3.5p8的C#编译器升级 注意:该版本是单独升级C#编译器的测试版!请使用文中提供的下载链接! 基于Unity 5.3.5p8的C#编译器升级!下载链接 试用该版本前请先备份项目,遇 ...
- CentOS 7 升级gcc/g++编译器
gcc的升级必须要使用源码进行升级,也就说,必须要使用源码进行编译才行.我的7.2的CentOS目前自带的gcc是4.8.5的,gcc从4.8之后开始支持C++11,但是鉴于现在C++14.C++17 ...
- 【Xamarin挖墙脚系列:Mono项目的图标为啥叫Mono】
因为发起人大Boss :Miguel de lcaza 是西班牙人,喜欢猴子.................就跟Hadoop的创始人的闺女喜欢大象一样...................... 历 ...
- 使用Visual Studio 2015 开发ASP.NET MVC 5 项目部署到Mono/Jexus
最新的Mono 4.4已经支持运行asp.net mvc5项目,有的同学听了这句话就兴高采烈的拿起Visual Studio 2015创建了一个mvc 5的项目,然后部署到Mono上,浏览下发现一堆错 ...
- Android破解学习之路(十四)——【Unity3D】王牌大作战破解
一.前言 今天带来的是王牌大作战的破解教程,游戏下载的话,我是直接去TapTap官网下载的 支付宝内购破解用老套了,今天学点破解的新花样吧!! 二.支付宝内购破解 支付宝的内购破解已经很熟悉了, 直接 ...
- Unity3d外包团队:Unity3d最新版本更新内容
GPU Instancing Improvement 只能改进了一些功能吧,原GPU Instancing shader可参考 https://docs.unity3d.com/Manual/GPUI ...
- keil编译器从ac5迁移到ac6
今天在安富莱的论坛上ac6的使用方法,所以,就小试牛刀玩了玩,终于ok了.使用keil5.25+stm32+hal库,5.23开始才支持ac6,因此keil版本不能太低. 可以参考:https://b ...
- C# 运行流程
转载 https://www.cnblogs.com/qcloud1001/p/9816956.html 从编译原理说起 一句话介绍编译器:编译器是将用某种程式语言写成的源代码(源语言),转换成另一 ...
- 'NSInteger' (aka 'long') to 'int32
怎么去掉Xcode工程中的某种类型的警告 Implicit conversion loses integer precision: 'NSInteger' (aka 'long') to 'int32 ...
随机推荐
- 【原】nodejs全局安装和本地安装的区别
来微信支付有2年多了,从2年前的互联网模式转变为O2O模式,主要的场景是跟线下的商户去打交道,不像以往的互联网模式,有产品经理提需求,我们帮忙去解决问题. 转型后是这样的,团队成员更多需要去寻找业务的 ...
- 在ASP.NET Core中使用百度在线编辑器UEditor
在ASP.NET Core中使用百度在线编辑器UEditor 0x00 起因 最近需要一个在线编辑器,之前听人说过百度的UEditor不错,去官网下了一个.不过服务端只有ASP.NET版的,如果是为了 ...
- 【.net 深呼吸】限制执行代码的权限
前面好几篇文章,老周都跟大伙伴们聊了跟应用程序域有关的话题,干脆咱们一聊到底吧,做学问就应该这样,有恒心. App Domain的创建新应用程序域的方法中,有一个特殊的重载: public stati ...
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(65)-MVC WebApi 用户验证 (1)
系列目录 前言: WebAPI主要开放数据给手机APP,其他需要得知数据的系统,或者软件应用,所以移动端与系统的数据源往往是相通的. Web 用户的身份验证,及页面操作权限验证是B/S系统的基础功能, ...
- Android性能优化之巧用软引用与弱引用优化内存使用
前言: 从事Android开发的同学都知道移动设备的内存使用是非常敏感的话题,今天我们来看下如何使用软引用与弱引用来优化内存使用.下面来理解几个概念. 1.StrongReference(强引用) 强 ...
- ASP.NET Core应用针对静态文件请求的处理[2]: 条件请求与区间请求
通过调用ApplicationBuilder的扩展方法UseStaticFiles注册的StaticFileMiddleware中间件帮助我们处理针对文件的请求.对于StaticFileMiddlew ...
- 了不起的 nodejs-TwitterWeb 案例 bug 解决
了不起的nodejs算是一本不错的入门书,不过书中个别案例存在bug,按照书中源码无法做出和书中相同效果,原本兴奋的心情掺杂着些许失落. 现在我们看一下第七章HTTP,一个Twitter Web客户端 ...
- [原] Cgroup CPU, Blkio 测试
关于Cgroup的简单测试 [toc] 简单介绍Cgroup (如果对cgroup熟悉可以忽略) 一般情况下,cgroup挂载到一个虚拟文件目录,然后可以通过文件系统的API对其操作. ># m ...
- 《LoadRunner12七天速成宝典》来了
看到自己的新书又要发行了,算算从09年第一本书开始,不知不觉已经是第四本书了(帮朋友合写的书不算),每次写完之后都会说太累了,不想再写了,但是却又次次反悔,吞下食言的苦果.如果非要说第四本书的感受,那 ...
- 搭建QQ聊天通信的程序:(1)基于 networkcomms.net 创建一个WPF聊天客户端服务器应用程序 (1)
搭建QQ聊天通信的程序:(1)基于 networkcomms.net 创建一个WPF聊天客户端服务器应用程序 原文地址(英文):http://www.networkcomms.net/creating ...