. 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 #