您的位置:首页 > 编程语言 > ASP

CLR/.NET/C#/Visual Studio/ASP.NET各版本之间的关系(转)

2016-12-08 16:48 621 查看

由于这篇文章记录的是2015年7月,那时.net core还是叫做.net core 5

名词定义

下列这些名词,写.NET 的人一定都不陌生,但你是否有真正理解呢?如果看了我的摘要文字说明还无法理解的话,建议多查询相关文件或书籍,或直接在文章最下方留言讨论。

CLR ( Common Language Runtime )

CLR 是.NET Framework 的虚拟机器元件(virtual machine component),用来管理执行中的.NET 程序。

CLR有个重要的流程是JIT编译 (just-in-time compilation)机制,可以将.NET程式编译过的中继语言 (Intermediate language)编译为当前CPU架构可执行的机器码 (machine instructions)。

CLR提供记忆体管理型别安全例外处理垃圾回收机制 (GC)、安全性执行绪管理等服务。

无论什么程式语言,只要是基于.NET 框架的程式,都必须执行于CLR 提供的执行环境(虚拟机器)中。

CLR包含一系列基础类别函式库 ( BCL ) ( Base Class Libraries ),用来提供.NET执行时期需要的程式基础。

在该函式库中含有一堆组件 (Assembly)与型别 (Type)定义,如命名空间、类别、介面、列举、…等等。

.NET

.NET Framework 的简称,有时候泛指.NET 相关的各种技术。

.NET Framework包含一系列框架类别函式库 ( FCL ) ( Framework Class Libraries ),用来扩充BCL不足的地方。

C#

是一种型别安全 (Type-safe)的物件导向 (object-oriented)的程式语言(Programming Language)

这里的型别安全泛指所有的C#物件都是具有型别的,例如Int32 , String ,StringBuilder , …等等都是型别,在各型别的继承关系中,最上层的型别为object

C#包含一套编译器 (Compiler),可将C#程式码编译为.NET中继语言( IL ) (Intermediate language),执行档为csc.exe

C#编译器在编译时,可以透过/langversion参数指定其编译的版本,目前支援ISO-1、ISO-2、3、4、5等版本。

C# 6.0开始,采用全新的Roslyn编译器平台,跟传统编译器的架构差别非常大,且编译器本身开放原始码。

初探Roslyn 编译器平台(1): 从认识到使用- MSDN 台湾部落格

.NET Compiler Platform ("Roslyn") Overview

.net - Microsoft Roslyn vs. CodeDom - Stack Overflow
(本篇文章有详尽的Roslyn与CodeDOM差异比较)

C# 6.0的csc.exe编译器改由NuGet进行安装,如需在专案中使用C# 6.0语法,则需额外安装Microsoft.CodeDom.Providers.DotNetCompilerPlatform套件。

在开发应用程式的时候又有区分「强型别」与「弱型别」的开发方式。

强型别:存取物件资料时,不需要额外转型的开发方法,凡事都用明确的型别来表达与传递资料。

弱型别:存取物件资料时,用较为抽象的型别来保存资料,需要用到资料时再透过转型得到真正的型别。

程式语言都有「语言特性」,有些C# 的语言特性会需要用到.NET Framework 的特定类别,因此C# 通常会与.NET Framework 有版本的相依性。

C# 的正确读音是C-Sharp,我曾经听过有人念成C-Hash 是错误的念法!

补充一个有趣的点,其实C#并不是写成C#,而是C♯,请注意这两者的差别,一个是垂直线是斜斜的,一个是水平线是斜斜的,后面那个才是对的,如下图示:



Visual Studio

是一种开发工具(号称地表最强),主要用来开发.NET 应用程式。

但只要安装特定外挂,也可以用来开发非.NET 的应用程式,例如:

Python Tools for Visual Studio (PTVS)

GitHub: https://github.com/Microsoft/PTVS

Node.js Tools for Visual Studio (NTVS)

GitHub: https://github.com/Microsoft/nodejstools

PHP Tools for Visual Studio « DEVSENSE sro

VS.Php | PHP IDE for Windows (商用软体)

Visual Studio 通常会内建许多专案范本,而且也不会支援所有版本的.NET Framework,因此也跟.NET Framework 有版本的相依性。

ASP.NET ( ASP.NET官方网站 )

ASP.NET 自2002 年一月推出的一套网页开发框架,早期只有ASP.NET Web Form 架构,直到2009 年推出以MVC 为主的开发框架( ASP.NET MVC 1.0 ),微软预计在2016 Q1 推出ASP.NET 5 框架(基于ASP.NET MVC 的改进)。

无论ASP.NET Web Form 或ASP.NET MVC 两者都是ASP.NET 框架的一部份,共用ASP.NET 底层提供的各种函式库。

许多人会把ASP.NET 简称为ASP 其实是不洽当的,由于ASP.NET 之前的网页开发技术为ASP (Active Server Page),简称ASP 会导致沟通上的混乱。

目前已推出的ASP.NET Web Form 版本有

ASP.NET 1.0

ASP.NET 1.1

ASP.NET 2.0

ASP.NET 3.5

ASP.NET 4.0

ASP.NET 4.5

ASP.NET 4.6

目前已推出的ASP.NET MVC 版本有

ASP.NET MVC 1.0

ASP.NET MVC 2.0

ASP.NET MVC 3.0

ASP.NET MVC 4.0

ASP.NET MVC 5.x

ASP.NET MVC 6.0 ( 目前还在beta 阶段,此版本等同于ASP.NET 5 版本 )

CLR 版本关联

CLR 1.0

.NET Framework 1.0

C# 1.0

CLR 1.1

.NET Framework 1.1

C# 1.1

CLR 2.0

.NET Framework 2.0

C# 2.0

.NET Framework 3.0

C# 2.0

.NET Framework 3.5

C# 3.0

CLR 4

.NET Framework 4

C# 4.0

.NET Framework 4.5

C# 5.0

.NET Framework 4.5.1

C# 5.0

.NET Framework 4.5.2

C# 5.0

.NET Framework 4.6 ( 又称.NET 2015 )

C# 6.0

※ 注意事项※

新版的C# 编译器通常可以编译旧版的C# 原始码,也就是C# 6.0 编译器通常有能力编译C# 1.0 ~ 6.0 的程式码,但编译时一次只能选择一个版本进行编译。

.NET Framework 版本关联

若要查询.NET Framework与各版本的关系,建议可参考.NET Framework Versions and Dependencies网页的表格说明,以下为摘要说明:

.NET Framework 1.0

使用CLR 1.0 版,需搭配C# 1.0 编译器

内建于Visual Studio .NET 开发工具

.NET Framework 1.1

使用CLR 1.1 版,需搭配C# 1.1 编译器

内建于Visual Studio 2003 开发工具

推出ASP.NET 1.1 版,支援ADO.NET 资料存取技术

.NET Framework 2.0

使用CLR 2.0 版,需搭配C# 2.0 编译器

内建于Visual Studio 2005 与之后的每一版Visual Studio 开发工具

从Visual Studio 2005 开始就不再支援.NET 1.1 开发,因此开发.NET 1.1 应用程式必须安装Visual Studio 2003

推出ASP.NET 2.0 版,增强ASP.NET 功能(并且与ASP.NET 1.1 不相容),并支援泛型

.NET Framework 3.0

使用CLR 2.0 版,需搭配C# 2.0 编译器

内建于Visual Studio 2005 与之后的每一版Visual Studio 开发工具

主要针对WPF, WCF, WF, CardSpace 功能进行强化,新增许多FCL

.NET Framework 3.5

使用CLR 2.0 版,需搭配C# 3.0 编译器

内建于Visual Studio 2008 与之后的每一版Visual Studio 开发工具

主要针对ASP.NET, LINQ, Dynamic Data, …等许多功能进行强化,请参见.NET Framework的新功能页面说明

推出ASP.NET 3.5 版

.NET Framework 4

使用CLR 4 版,需搭配C# 4.0 编译器

此版本CLR 4 扩充了许多BCL 类别库

内建于Visual Studio 2010 与之后的每一版Visual Studio 开发工具

主要针对BCL, Portable Class Library, MEF, DLR, code contracts, …等许多功能进行强化,请参见.NET Framework 4的新功能页面说明

推出ASP.NET 4.0 版

.NET Framework 4.5

使用CLR 4 版,可搭配C# 5.0 或C# 6.0 编译器

内建于Visual Studio 2012 与之后的每一版Visual Studio 开发工具

主要针对WPF, WCF, WF, ASP.NET updates, …等许多功能进行强化,也支援Windows Store apps开发,请参见.NET Framework的新功能页面说明

推出ASP.NET 4.5 版,并且统一了

.NET Framework 4.5.1

使用CLR 4 版,可搭配C# 5.0 或C# 6.0 编译器

内建于Visual Studio 2013 与之后的每一版Visual Studio 开发工具

主要针对Automatic binding redirection,侦错功能, …等许多功能进行强化,也支援Windows Phone Store apps开发,请参见.NET Framework的新功能页面说明

.NET Framework 4.5.2

使用CLR 4 版,可搭配C# 5.0 或C# 6.0 编译器

内建于Visual Studio 2013 与之后的每一版Visual Studio 开发工具

主要针对New APIs for transactional systems and ASP.NET, System DPI resizing in Windows Forms controls, Profiling improvements, ETW and stress logging improvements, …等许多功能进行强化,请参见.NET Framework的新功能页面说明

.NET Framework 4.6 ( 又称.NET 2015 )

使用CLR 4 版,可搭配C# 5.0 或C# 6.0 编译器

内建于Visual Studio 2013 与之后的每一版Visual Studio 开发工具

主要针对Compilation using .NET Native, ASP.NET Core 5, Event tracing improvements, Support for page encodings, …等许多功能进行强化,请参见.NET Framework的新功能页面说明

推出ASP.NET 5 Beta 5 (尚未正式版),关于ASP.NET 5的推出时程规划请参见ASP.NET 5 Schedule and Roadmap页面。

从上述整理的版本关联关系中,你可以发现早期的.NET Framework, CLR, C#, ASP.NET 版本之间是很容易记忆的,因为.NET 1.1 搭配CLR 1.1, C# 1.1 与ASP.NET 1.1,而.NET 2.0 搭配CLR 2.0, C# 2.0 与ASP.NET 2.0,到了.NET 3.5 开始出现版本号的变化,因为.NET 3.5 搭配着CLR 2.0 与C# 3.0,光是这点差异,在当时已经让有些人混淆了,我相信到2015 年的今天,还是有许多人搞不清楚。从.NET 4 开始,是一个新的CLR 版本的起点( CLR 4 ),需搭配C# 4.0,算是好记许多。不过到了.NET 4.5 有些功能就需要搭配C# 5.0 才能编译。

Visual Studio 版本关联

Visual Studio .NET

支援.NET Framework 1.0

可开发ASP.NET 1.0

Visual Studio 2003

支援.NET Framework 1.1

可开发ASP.NET 1.1

Visual Studio 2005

支援.NET Framework 2.0

可开发ASP.NET 2.0

Visual Studio 2008

支援.NET Framework 2.0

可开发ASP.NET 2.0

支援.NET Framework 3.0

与ASP.NET 无关

支援.NET Framework 3.5

可开发ASP.NET 3.5, ASP.NET MVC 1.0

支援Entity Framework 3.5

Visual Studio 2010

开始支援Visual Studio 扩充套件

开始使用NuGet 管理.NET 套件

支援.NET Framework 2.0

可开发ASP.NET 2.0

支援.NET Framework 3.0

与ASP.NET 无关

支援.NET Framework 3.5

可开发ASP.NET 3.5, ASP.NET MVC 2.0

支援Entity Framework 4.x

支援.NET Framework 4.0

可开发ASP.NET 4.0, ASP.NET MVC 3.0, ASP.NET MVC 4.0

支援Entity Framework 5.0

支援Entity Framework 6.0 (仅runtime 支援,可编译,没有设计工具)

Visual Studio 2012

支援.NET Framework 2.0

可开发ASP.NET 2.0

支援.NET Framework 3.0

与ASP.NET 无关

支援.NET Framework 3.5

可开发ASP.NET 3.5

支援Entity Framework 4.x

支援.NET Framework 4.0 ( 从.NET 4.5 开始预设采用C# 4.0 编译器 )

可开发ASP.NET 4.0, ASP.NET MVC 3.0, ASP.NET MVC 4.0, ASP.NET MVC 5.0

支援.NET Framework 4.5

支援.NET Framework 4.5.1

支援.NET Framework 4.5.2

可开发ASP.NET 4.5, ASP.NET MVC 3.0, ASP.NET MVC 4.0, ASP.NET MVC 5.0

支援Entity Framework 5.0

支援Entity Framework 6.0

Visual Studio 2013

专案范本预设改用NuGet 管理套件

支援.NET Framework 2.0

可开发ASP.NET 2.0

支援.NET Framework 3.0

与ASP.NET 无关

支援.NET Framework 3.5

可开发ASP.NET 3.5

支援Entity Framework 4.x

支援.NET Framework 4.0

可开发ASP.NET 4.0, ASP.NET MVC 4.0, ASP.NET MVC 5.0

支援.NET Framework 4.5 ( 从.NET 4.5 开始预设采用C# 5.0 编译器 )

支援.NET Framework 4.5.1

支援.NET Framework 4.5.2

可开发ASP.NET 4.5, ASP.NET MVC 4.0, ASP.NET MVC 5.0

支援Entity Framework 5.0

支援Entity Framework 6.0

支援.NET Framework 4.6

可开发ASP.NET 4.6

支援Entity Framework 5.0

支援Entity Framework 6.0

Visual Studio 2015

专案范本预设改用NuGet 管理套件

支援.NET Framework 2.0

可开发ASP.NET 2.0

支援.NET Framework 3.0

与ASP.NET 无关

支援.NET Framework 3.5

可开发ASP.NET 3.5

支援Entity Framework 4.x

支援.NET Framework 4.0

可开发ASP.NET 4.0, ASP.NET MVC 4.0, ASP.NET MVC 5.0

支援.NET Framework 4.5 ( 从.NET 4.5 开始预设采用C# 6.0 编译器 )

支援.NET Framework 4.5.1

支援.NET Framework 4.5.2

可开发ASP.NET 4.5, ASP.NET MVC 5.0

支援Entity Framework 5.0

支援Entity Framework 6.0

支援.NET Framework 4.6

可开发ASP.NET 4.6, ASP.NET MVC 5.0

可开发ASP.NET 5 / ASP.NET MVC 6 (目前还在beta 阶段)

支援Entity Framework 5.0

支援Entity Framework 6.0

支援Entity Framework 7.x (目前还在beta 阶段)

支援.NET Core 5

可开发ASP.NET 5 / ASP.NET MVC 6 (目前还在beta 阶段)

支援Entity Framework 5.0

支援Entity Framework 6.0

支援Entity Framework 7.x (目前还在beta 阶段)

※ 注意事项※

Entity Framework 7 将会是一套全新的Entity Framework 版本,与前版的Entity Framework 6 是两套完全不同的产品。

在同一个专案下,就算同时载入Entity Framework 6 与Entity Framework 7 也不会发生任何冲突或互相影响。

就算你用ASP.NET 5 开发网站,一样可以使用Entity Framework 6 进行资料存取。

以上为转载自一个台湾博客:http://blog.miniasp.com/post/2015/07/28/Clarify-the-versions-between-CLR-NET-CSharp-Visual-Studio-and-ASPNET.aspx

同时也是做dotnet的一个总结吧,上面全是繁体,我是直接简体成的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐