.net

wiki:en  chs

.net版本 公共语言运行时(CLR) 发布时间 随同分发的Visual Studio 预装于windows系统 支持的windows系统
1.0 1.0 2002.2.23 Visual Studio .NET WinXP WinXP
1.1 1.1 2003年4月24日 Visual Studio .NET 2003   WinXP、Vista
2.0 2.0 2005年11月7日 Visual Studio 2005  

WinXP、Vista、Win7、

Win8、Win8.1、Win10

3.0 2.0 2006年11月6日 Microsoft Blend for Visual Studio Vista
3.5 2.0 2007年11月19日 Visual Studio 2008 Win7
4.0 4 2010年4月12日 Visual Studio 2010  

WinXP SP3、Vista SP1、Win7、

Win8、Win8.1、Win10

4.5 4 2012年8月15日 Visual Studio 2012 Win8

Vista SP2、Win7 SP1、

Win8、Win8.1、Win10

4.5.1 4 2013年10月17日 Visual Studio 2013 Win8.1
4.5.2 4 2014年5月5日    
4.6 4 2015年7月20日 Visual Studio 2015 Win10
4.6.1 4 2015年11月30日 Visual Studio 2015 Update 1 Win10 v1511
4.6.2 4 2016年8月2日   Win10 v1607
4.7 4 2017年4月5日 Visual Studio 2017 Win10 v1703

注1:同一版本的CLR(Common Language Runtime)的.net是向上兼容的

注2:支持WinForm的.net framework最低版本为2.0,支持WPF的.net framework最低版本为3.0

注3:.net core(chs)是微软重新开发的开源跨平台.net实现,是未来的所有.net平台的基础。

在.net core推出之后,.net framework与mono将基于.net core重新构建。.net framework将成为其在windows上的一个发行版,mono将成为.net core的一个跨平台发行版。

.net core提供corefx类库,C#及Visual Basic编译器,并实现了2种运行时:

① NativeRuntime -- 将.net代码直接转换为本地机器码

② CoreCLR -- 开源的JIT(Just-in-Time compilation,即时编译)运行时,来动态地将符合CLS(Common Language Specification,公共语言规范)

的CIL(Common Intermediate Language,通用中间语言)或叫MSIL实时转换为本地机器码

CIL可以在任何支持CLI(Common Language Infrastructure,通用语言基础结构)的环境中运行

并提供了BCL(Base Classlibrary,基础类库)包含如FileSystem、Console、XML操作等

注4:.net compact framework(wiki:en  chs)为精简版的.net framework,主要用于移动或嵌入式windows平台开发

mono

wiki:en   chs

github:prj  docs

mono是.net framework的一个开源的、跨平台的实现。由mono运行时、mono编译器、 .NET Frame Class Libray及Mono Class Libray组成。

(1)mono运行时(CLR )实现了ECMA 公共语言基础结构(CLI)标准,提供了即时(JIT)编译器,静态编译器(AOT,Ahead Of Time,wiki),库加载器,垃圾回收机器,线程操作,互操作性

(2)许多语言(如:C#、VB.NET、Java、JavaScript、Python、Lua等)实现了生成为CIL的编译器,使得这些语言可以在mono上运行,其C#编译器提供C#所有版本的完整功能

(3).NET Frame Class Libray是Mono平台提供了一组全面的兼容微软的.Net framework类库

(4)Mono Class Libray是Mono自己的类库,其提供的功能是有用的,特别是在构建Linux应用程序。如:Gtk +、Zip、LDAP、OpenGL、Cairo、POSIX等相关的类。

注1:Mono会将程序一部分代码通过AOT(AOT实际也是调用JIT来提前静态编译得到本地机器码),以降低在程序运行时JIT动态编译在效率上的问题。

注2:在iOS平台是禁止JIT的,所以mono只能以Full AOT(完全静态编译)模式运行的(即:将程序集所有CIL代码进行AOT编译生成本地机器码)

ExecutionEngineException: Attempting to JIT compile method '...' while running with --aot-only.

目前由于技术或实现上的原因在使用Full AOT写代码时有一些限制:

① 不支持泛型虚方法,因为对于泛型代码,Mono通过静态分析以确定要实例化的类型并生成代码,但静态分析无法确定运行时实际调用的方法(C++也因此不支持虚模版函数)

② 不支持对泛型类的P/Invoke

③ 不能使用反射中的Property.SetInfo给非空类型赋值

④ 值类型作为Dictionary的Key时会有问题,实际上实现了IEquatable<T>的类型都会有此问题,因为Dictionary的默认构造函数会使用EqualityComparer<TKey>.Default作为比较器,

而对于实现了IEquatable<T>的类型,EqualityComparer<TKey>.Default要通过反射来实例化一个实现了IEqualityComparer<TKey>的类(可以参考EqualityComparer<T>的实现)。

解决方案是自己实现一个IEqualityComparer<TKey>,然后使用Dictionary<TKey, TValue>(IEqualityComparer<TKey>)构造器创建Dictionary实例。

⑤ 由于不允许动态生成代码,不允许使用System.Reflection.Emit,不允许动态创建类型。注:不要混淆了Reflection.Emit和反射,所有反射的API均可用

⑥ 由于不允许使用System.Reflection.Emit,无法使用DLR(Dynamic Language Runtime,动态语言运行时)及基于DLR的任何语言。

unity使用的mono在github专门拉了份代码,下面是之间版本的说明:

Unity版本 mono运行时版本 clr版本 对应.net版本 对应C#版本 说明
3.x、4.x、5.x 2.0 2.0 3.5 4.0 完全支持C#3.0,但也支持某些C#4.0特性(注:clr2.0支持下的特性)

5.3.5p8的测试版

5.5及以上版本

2.0 2.0 3.5 4.0

① 升级为mono4.4版本中的C#编译器,就编译器而言能支持C#6.0

② 运行时还是2.0,受其限制,实际对C#的支持情况与3.x、4.x、5.x版本一致

③ 5.3.5p8正式版本并没有升级C#编译器,而是单独给出一个5.3.5p8的测试版,在这个特殊版本中含有升级的C#编译器

④ 5.5及以上版本开始使用升级C#编译器

2017.1

2017.2

2.0

5.0.1

2.0

4.0

3.5

4.6

4.0

6.0

① 缺省使用先前版本的运行时与C#编译器版本

② 菜单:Edit --> Project Settings --> Player  Other Settings设置块Configuration节中,

修改"Scripting Runtime Version" 中的 Stable(.NET 3.5 Equivavalent) 为 Experimental(.NET 4.6 Equivavalent)

C#

wiki:en  chs

版本 语言规格 .NET版本 Visual Studio版本
ECMA ISO/IEC Microsoft
C#1.0 2002年12月 2003年4月 2002年1月 1.0 2002
C#1.1、1.2 2003年10月 1.1 2003
C#2.0  2006年6月  2006年9月 2005年9月 2.0 2005
C#3.0     2007年8月

2.0(Except LINQ/Query Extensions)

3.0(Except LINQ/Query Extensions)

3.5

2008、2010
C#4.0     2010年4月 4 2010
C#5.0     2012年10月 4.5 2012
4.5.1 2013
C#6.0     2015年7月 4.6 2015
C#7.0       4.6.2 2017

扩展阅读:

Unity C# 5.0 and 6.0 Integration

.net、mono和C#相关推荐

  1. linux ubuntu安装 mono,在Ubuntu 18.04系统中安装Mono及基本使用Mono的方法

    本文介绍在Ubuntu 18.04操作系统中安装Mono及基本使用Mono的方法.Mono是一个基于ECMA/ISO标准开发和运行跨平台应用程序的平台,它是Microsoft .NET框架的免费开源实 ...

  2. mono+jexus 部署之CompilationException

    使用 HelpPage 组件 CompilationException 好不容易在ubuntu上搭建了mono+jexus,欣喜若狂的部署上发布的网站,急忙打开,成功运行. 但是别高兴的太早,当我打开 ...

  3. apktoolkit apk反编译没有文件_重新编译mono——修改apk中Assembly-CSharp.dll并重新打包...

    环境: 操作系统:Mac OSX10.12.6 mono版本:unity2017.1.3p4 NDK版本:android-ndk-r10e 一.指导步骤: 1.通过apktool工具反编译apk 2. ...

  4. mono和monodevelop源码编译安装

    之所以用源码编译的方式安装mono和monodevelop,是因为通过yum安装的mono不是最新版本,而且monodevelop不能建 asp.net MVC3的工程. 而且通过源码安装,可以进一步 ...

  5. 从游戏脚本语言说起,剖析Mono所搭建的脚本基础

    0x00 前言 在日常的工作中,我偶尔能遇到这样的问题:"为何游戏脚本在现在的游戏开发中变得不可或缺?".那么这周我就写篇文章从游戏脚本聊起,分析一下游戏脚本因何出现,而mono又 ...

  6. Ubuntu阿里云搭建Mono.net环境

    查看磁盘信息 我们买的系统默认情况下只是安装了系统,而数据盘需要自己挂载,例如我这里的系统占用20多G,还有40多G的数据盘默认是没有挂载的,首先我们运行df -h查看: root@AY1212241 ...

  7. 使用Mono管理Coyote Linux

    Coyote是一个个人防火墙配置Linux的目的是为了保护家庭或教育网络. 这个防火墙产品牌的个人及教育用途,并提供免费下载:http://coyotelinux.com/ CoyoteLinux u ...

  8. Mono源代码学习笔记:Console类(四)

    NullStream 类 (internal class) 下面就是 mcs/class/corlib/System.IO/NullStream.cs: 01: namespace System.IO ...

  9. mono上运行程序常见问题

    1. System.BadImageFormatException: Invalid method header local vars signature token 0x 65d5b2 File n ...

  10. 扒一扒.net、.net framework、mono和Unity

    zhaichao 标签: .net.net frameworkc#monounity 2017-04-23 14:39 425人阅读 评论(0) 收藏 举报 版权声明:本文为博主原创文章,未经博主允许 ...

最新文章

  1. 关于 npm 中 lru-cache 之 maxAge 盲点 源码分析
  2. JZOJ 5406. 【NOIP2017提高A组模拟10.10】Tree
  3. 三星s3android wear,三星galaxy wearable下载
  4. flask入门2-模板引擎
  5. mac上数据库管理工具Navicat Premium 连接mySQL
  6. HTML基础教程笔记(HTML5与CSS3基础教程书)
  7. 计算机内存调用优化,Memory Cleaner——简单好用的Windows内存优化工具
  8. 几个在线的web代理
  9. 快速非支配排序 python版
  10. 程序员修炼(一)----剑指天下
  11. cannot find -l****问题的解决办法
  12. 专家揭示连锁加盟陷阱
  13. HTML基础 冲冲冲
  14. 输入一个字符串并原样输出。
  15. HTML5七夕情人节表白网页制作【纯HTML+CSS实现3D动态相册-蓝色海洋 】HTML+CSS+JavaScript
  16. 把1,2,3,4,5,6,7,8,9九个数分成三组,各个数字使用一次
  17. 3600000毫秒等于多少小时_工地扬尘监测规定-多少算超标?
  18. 操原作业(一)之Ubuntu编译新内核
  19. 屌炸天的内核来袭,史上最小chromium内核miniblink!
  20. Linux 解压方式总结

热门文章

  1. 无限循环python代码_python - 代码遇到意外的无限循环? - SO中文参考 - www.soinside.com...
  2. m苹果放n篮子_能用一只手,我绝对不用一双:苹果试图解锁更多Apple Watch控制手势...
  3. android studio配置国内,Android studio配置国内镜像源
  4. 计算机设计大赛作品评语,第九届大学生短片大赛获奖作品评语
  5. python123程序设计题答案第三周_Python 3 程序设计学习指导与习题解答
  6. unity ui框架_[教程汇总+持续更新]Unity从入门到入坟——收藏这一篇就够了
  7. java image getscaledinstance_使用getImage()和getScaledInstance()调整java.awt.Image的异常大小...
  8. java catch自定义异常_Laravel - 自定义处理程序中的Catch异常
  9. java 8的内存分代改进_java8的内存结构,这一篇文章就够了
  10. Android模拟器远程,使用Android模拟器进行远程调试