接前篇Unity 5.3.5p8 C#编译器升级,本文侧重了解一些Mono的知识。

Unity3D的编译器升级

新升级的Mono C#编译器(对应Mono 4.4)

Unity编辑器及播放器所使用的Mono运行时还未升级。

新编译器仍针对C# 4,是旧的编译器也支持的版本。

新编译器目标框架为.Net 3.5,也是之前支持的框架。

Mono是如何运行的?

  1. *.cs源文件通过编译器编译成IL(中间文件)
  2. IL 运行在Mono的 JIT(just in time)
  3. 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)

魅力 .NET:从 Mono、.NET Core 说起

[c#基础系列二]:从编译,执行过程理解c#

Mono为何能跨平台?聊聊CIL(MSIL)

国内 Mono 相关文章汇总:http://www.cnblogs.com/shanyou/archive/2012/07/28/2612919.html

从Unity3D编译器升级聊起Mono的更多相关文章

  1. Unity 5.3.5p8 C#编译器升级

    Unity 5.3.5p8的C#编译器升级 注意:该版本是单独升级C#编译器的测试版!请使用文中提供的下载链接! 基于Unity 5.3.5p8的C#编译器升级!下载链接 试用该版本前请先备份项目,遇 ...

  2. CentOS 7 升级gcc/g++编译器

    gcc的升级必须要使用源码进行升级,也就说,必须要使用源码进行编译才行.我的7.2的CentOS目前自带的gcc是4.8.5的,gcc从4.8之后开始支持C++11,但是鉴于现在C++14.C++17 ...

  3. 【Xamarin挖墙脚系列:Mono项目的图标为啥叫Mono】

    因为发起人大Boss :Miguel de lcaza 是西班牙人,喜欢猴子.................就跟Hadoop的创始人的闺女喜欢大象一样...................... 历 ...

  4. 使用Visual Studio 2015 开发ASP.NET MVC 5 项目部署到Mono/Jexus

    最新的Mono 4.4已经支持运行asp.net mvc5项目,有的同学听了这句话就兴高采烈的拿起Visual Studio 2015创建了一个mvc 5的项目,然后部署到Mono上,浏览下发现一堆错 ...

  5. Android破解学习之路(十四)——【Unity3D】王牌大作战破解

    一.前言 今天带来的是王牌大作战的破解教程,游戏下载的话,我是直接去TapTap官网下载的 支付宝内购破解用老套了,今天学点破解的新花样吧!! 二.支付宝内购破解 支付宝的内购破解已经很熟悉了, 直接 ...

  6. Unity3d外包团队:Unity3d最新版本更新内容

    GPU Instancing Improvement 只能改进了一些功能吧,原GPU Instancing shader可参考 https://docs.unity3d.com/Manual/GPUI ...

  7. keil编译器从ac5迁移到ac6

    今天在安富莱的论坛上ac6的使用方法,所以,就小试牛刀玩了玩,终于ok了.使用keil5.25+stm32+hal库,5.23开始才支持ac6,因此keil版本不能太低. 可以参考:https://b ...

  8. C# 运行流程

    转载  https://www.cnblogs.com/qcloud1001/p/9816956.html 从编译原理说起 一句话介绍编译器:编译器是将用某种程式语言写成的源代码(源语言),转换成另一 ...

  9. 'NSInteger' (aka 'long') to 'int32

    怎么去掉Xcode工程中的某种类型的警告 Implicit conversion loses integer precision: 'NSInteger' (aka 'long') to 'int32 ...

随机推荐

  1. 如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成

    阅读目录 前言 建模 实现 结语 一.前言 前面几篇已经实现了一个基本的购买+售价计算的过程,这次再让售价丰满一些,增加一个会员价的概念.会员价在现在的主流电商中,是一个不大常见的模式,其带来的问题是 ...

  2. 猫哥网络编程系列:HTTP PEM 万能调试法

    注:本文内容较长且细节较多,建议先收藏再阅读,原文将在 Github 上维护与更新. 在 HTTP 接口开发与调试过程中,我们经常遇到以下类似的问题: 为什么本地环境接口可以调用成功,但放到手机上就跑 ...

  3. 我为什么要写LeetCode的博客?

    # 增强学习成果 有一个研究成果,在学习中传授他人知识和讨论是最高效的做法,而看书则是最低效的做法(具体研究成果没找到地址).我写LeetCode博客主要目的是增强学习成果.当然,我也想出名,然而不知 ...

  4. Beanstalkd一个高性能分布式内存队列系统

    高性能离不开异步,异步离不开队列,内部是Producer-Consumer模型的原理. 设计中的核心概念: job:一个需要异步处理的任务,是beanstalkd中得基本单元,需要放在一个tube中: ...

  5. PowerShell过滤文件中的重复内容

    Get-Content -Path E:\test11\data.txt | Sort-Object | Get-Unique 源文件: AA0001 2014-06-30 15:27:13.073 ...

  6. EntityFramework Core 1.1是如何创建DbContext实例的呢?

    前言 上一篇我们简单讲述了在EF Core1.1中如何进行迁移,本文我们来讲讲EF Core1.1中那些不为人知的事,细抠细节,从我做起. 显式创建DbContext实例 通过带OnConfiguri ...

  7. SQL Server-聚焦使用视图若干限制/建议、视图查询性能问题,你懵逼了?(二十五)

    前言 上一节我们简单讲述了表表达式的4种类型,这一系列我们来讲讲使用视图的限制,简短的内容,深入的理解,Always to review the basics. 避免在视图中使用ORDER BY 上一 ...

  8. DDD领域驱动设计 - 设计文档模板

    设计文档模板: 系统背景和定位 业务需求描述 系统用例图 关键业务流程图 领域语言整理,主要是整理领域中的各种术语的定义,名词解释 领域划分(分析出子域.核心域.支撑域) 每个子域的领域模型设计(实体 ...

  9. Struts2入门(六)——国际化

    一.前言 1.1.国际化简介 国际化是指应用程序在运行的时候,根据客户端请求来自的国家地区.语言的不同而显示不同的界面(简单说就是根据你的地区显示相关地区的语言,如果你现在在英国,那么显示的语言就是英 ...

  10. Android Fragment 剖析

    1.Fragment如何产生?2.什么是Fragment Android运行在各种各样的设备中,有小屏幕的手机,超大屏的平板甚至电视.针对屏幕尺寸的差距,很多情况下,都是先针对手机开发一套App,然后 ...