. NET, mono, and C #

Source: Internet
Author: User
Tags emit visual studio 2010

. NET Framework

Wiki:en CHS

Version Common language Runtime (CLR) Release time Visual Studio that accompanies distribution Pre-installed on Windows systems Supported Windows systems
1.0 1.0 2002.2.23 Visual Studio. NET WinXP WinXP
1.1 1.1 April 24, 2003 Visual Studio. NET 2003 WinXP, Vista
2.0 2.0 November 7, 2005 Visual Studio 2005

WinXP, Vista, Win7,

Win8, Win8.1, Win10

3.0 2.0 November 6, 2006 Microsoft Blend for Visual Studio Vista
3.5 2.0 November 19, 2007 Visual Studio 2008 Win7
4.0 4 April 12, 2010 Visual Studio 2010

WinXP SP3, Vista SP1, Win7,

Win8, Win8.1, Win10

4.5 4 August 15, 2012 Visual Studio 2012 Win8

Vista SP2, Win7 SP1,

Win8, Win8.1, Win10

4.5.1 4 October 17, 2013 Visual Studio 2013 Win8.1
4.5.2 4 May 5, 2014
4.6 4 July 20, 2015 Visual Studio 2015 Win10
4.6.1 4 November 30, 2015 Visual Studio Update 1 Win10 v1511
4.6.2 4 August 2, 2016 Win10 v1607
4.7 4 April 5, 2017 Visual Studio 2017 Win10 v1703

Note 1: the. NET framework of the same version of the CLR (Common Language Runtime) is up-compatible

NOTE 2: Support for WinForm. NET Framework minimum version is 2.0, and the. NET Framework that supports WPF has a minimum version of 3.0

Note 3:. NET core(CHS) is the open source cross-platform. NET implementation of Microsoft's redevelopment, which is the foundation of all future. NET platforms.

After the launch of. NET core, the. NET Framework and mono will be rebuilt based on. NET Core. The. NET Framework becomes a release on Windows, and Mono becomes a cross-platform release of. NET Core.

. NET core provides the Corefx class library ,C # and Visual Basic Editor , and implements 2 runtimes:

① nativeruntime --Convert. NET code directly to local machine code

② CoreCLR --Open Source JIT (Just-in-time compilation, instant compile) runtime, to dynamically be CLS compliant (Common Language specification, Common Language Specification)

CIL (Common Intermediate Language, Universal Intermediate language) or MSIL to local machine code in real time

CIL can be run in any environment that supports the CLI (Common Language Infrastructure, common Language Infrastructure)

The BCL (base classlibrary, base Class library) includes such as FileSystem, Console, XML operations, etc.

Note 4:.net Compact Framework (wiki:en chs) is a lite version of the. NET Framework, primarily for mobile or embedded Windows platform development

Mono

Wiki:en CHS

GitHub: prj Docs

Mono is an open-source, cross-platform implementation of the. NET Framework. Consists of the Mono runtime, the Mono compiler, the. NET Frame class Libray, and the Mono Class Libray.

(1) The Mono runtime (CLR) implements the ECMA Common Language Infrastructure (CLI) standard, provides an instant (JIT) compiler, static compilers (AOT, Ahead of Time), library loaders, garbage collection machines, threading operations, Interoperability

(2) many languages (such as C #, vb.net, Java, JavaScript, Python, Lua, and so on) implement the compilers that make up CIL, allowing these languages to run on Mono, whose C # compiler provides C # Full functionality for all editions

(3). NET Frame class Libray is the mono platform that provides a comprehensive set of Microsoft-compatible. NET Framework class libraries

(4) Mono class Libray is Mono's own class library, which provides functionality that is useful, especially when building Linux applications. such as: Gtk +, Zip, LDAP, OpenGL, Cairo, POSIX and other related classes.

Note 1:mono a part of the program code through the AOT(the AOT actually calls JIT to statically compile the local machine code in advance) to reduce the efficiency of JIT dynamic compilation when the program runs.

Note 2: JIT is not allowed on the iOS platform, all mono can only run in full AOT (fully statically compiled) mode (i.e., the local machine code is generated by AOT-compiling all CIL code of the Assembly)

Executionengineexception:attempting to JIT compile method ' ... ' while running with--aot-only.

There are limitations to writing code using the full AOT for technical or implementation reasons:

① does not support generic virtual methods because, for generic code, mono passes static parsing to determine the type to instantiate and generate code, but static analysis cannot determine which method the runtime actually calls (C + + therefore does not support virtual-template functions)

② does not support the p/invoke of generic classes

③ cannot assign a value to a non-null type using Property.setinfo in reflection

There is a problem with the ④ value type as the key of dictionary, which actually implements the iequatable<t> type, because dictionary's default constructor uses the Equalitycomparer<tkey . Default as the comparator,

And for the realization of the type of iequatable<t>, Equalitycomparer<tkey> The default is to instantiate a class that implements the Iequalitycomparer<tkey> by reflection (you can refer to the implementation of equalitycomparer<t>).

The solution is to implement a iequalitycomparer<tkey> yourself, and then use Dictionary<tkey, tvalue> (iequalitycomparer<tkey>) The constructor creates an dictionary instance.

⑤ does not allow dynamic generation of code, System.Reflection.Emit is not allowed, and dynamically created types are not allowed. Note: Do not confuse Reflection.Emit and reflection, all of the reflected APIs are available

⑥ cannot use the DLR (Dynamic Language Runtime, Dynamics language runtime) and any of the DLR-based languages because System.Reflection.Emit is not allowed.

The Unity uses mono to pull the code specifically on GitHub, and here's a description of the version between the two:

Unity version Mono Run-time version CLR version Corresponds to the. NET version Corresponds to C # version Description
3.x, 4.x, 5.x 2.0 2.0 3.5 4.0 C#3.0 is fully supported, but some c#4.0 features are supported (note: Features under clr2.0 support)

Beta version of 5.3.5P8

Version 5.5 and above

2.0 2.0 3.5 4.0

The ① is upgraded to the C # compiler in the mono4.4 version and can support the compiler for c#6.0

② runtime or 2.0, limited by the actual support of C # with 3.x, 4.x, 5.x version of the same

The ③5.3.5P8 official version does not upgrade the C # compiler, but instead gives a 5.3.5p8 beta, which contains the upgraded C # compiler in this particular version

④5.5 and above start using the upgrade C # compiler

2017.1

2017.2

2.0

5.0.1

2.0

4.0

3.5

4.6

4.0

6.0

① default use of previous versions of runtime vs C # Compiler version

② Menu: Edit--Project Settings--and Player other Settings in the Set block configuration section,

Modify Stable (. NET 3.5 equivavalent) in "Scripting Runtime Version" to experimental (. NET 4.6 equivavalent)

C#

Wiki:en CHS

Version Language specifications . NET version Visual Studio version
ECMA ISO/IEC Microsoft
c#1.0 December 2002 April 2003 January 2002 1.0 2002
c#1.1, 1.2 October 2003 1.1 2003
c#2.0 June 2006 September 2006 September 2005 2.0 2005
c#3.0 August 2007

2.0 (Except linq/query Extensions)

3.0 (Except linq/query Extensions)

3.5

2008, 2010
c#4.0 April 2010 4 2010
c#5.0 October 2012 4.5 2012
4.5.1 2013
c#6.0 July 2015 4.6 2015
c#7.0 4.6.2 2017

Extended reading:

Unity C # 5.0 and 6.0 integration

. NET, mono, and C #

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.