CLR/.NET/C#/Visual Studio/ASP.NET各版本之间的关系(转)
由于这篇文章记录的是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 的应用程式,例如:
- 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
- .NET Framework 1.0
- CLR 1.1
- .NET Framework 1.1
- C# 1.1
- .NET Framework 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
- .NET Framework 2.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
- .NET Framework 4
※ 注意事项※
- 新版的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
- 支援.NET Framework 1.0
- Visual Studio 2003
- 支援.NET Framework 1.1
- 可开发ASP.NET 1.1
- 支援.NET Framework 1.1
- Visual Studio 2005
- 支援.NET Framework 2.0
- 可开发ASP.NET 2.0
- 支援.NET Framework 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
- 支援.NET Framework 2.0
- 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
- 支援.NET Framework 2.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的一个总结吧,上面全是繁体,我是直接简体成的。
CLR/.NET/C#/Visual Studio/ASP.NET各版本之间的关系(转)的更多相关文章
- 安装了SQL2005再安装SQL 2008R2,提示此计算机上安装了 Microsoft Visual Studio 2008 的早期版本和检查是否安装了 SQL Server 2005 Express 工具的解决方案
工作电脑上安装了SQL 2005, 但是客户电脑上安装的是SQL 2008R2,有时候连接他们的库调试没法连接,很不方便.然后又安装了个SQL2008 R2,期间遇到这两个问题,网上搜索了一下收到了解 ...
- SQL SERVER安装提示“安装了 Microsoft Visual Studio 2008 的早期版本
工作共遇到的问题记录: 安装Sql Server 2008 R2时提示错误:“此计算机上安装了 Microsoft Visual Studio 2008 的早期版本.请在安装 SQL Server 2 ...
- Visual Studio 2012 与此版本的 Windows 不兼容。有关详细信息,请联系 Microsoft
参考网址:Visual Studio 2012 与此版本的 Windows 不兼容 解决 下载更新包安装:http://www.microsoft.com/zh-CN/download/details ...
- Visual Studio 2012 与此版本的 Windows 不兼容 解决
警告: [Window Title] 程序兼容性助手[Main Instruction] 此程序存在已知的兼容性问题[Expanded Information] Visual Studio 2012 ...
- 安装SQL Server 2008R2 报错“此计算机上安装了 Microsoft Visual Studio 2008 的早期版本”解决方法
安装SQL Server 2008 R2报错“此计算机上安装了 Microsoft Visual Studio 2008 的早期版本,请在安装 SQL Server 2008 前将 VS2008 升级 ...
- sqlserver安装失败,此计算机上安装了 Microsoft Visual Studio 2008 的早期版本解决方法
安装sql server 2008 management,提示错误:此计算机上安装了 Microsoft Visual Studio 2008 的早期版本.请在安装 SQL Server 2008 前 ...
- Visual studio 2010 打开高版本VS工程解决办法
第一步.找到工程项目文件: 第二步.编辑项目文件 找到Format Version 12.00 ,将数字改为11.00 再找到#Visual Studio 14 将数字改为2010 点击保存并关闭 第 ...
- Visual Studio 添加图标和版本
在Visual Studio中,如果你创建的是纯C语言的工程,那么给可执行程序添加图标就没有便捷的入口. 但也只是入口不好找了,添加步骤还是比较简单的,以下为具体操作方法: 1. 右键点击C工 ...
- 详解在Visual Studio中使用git版本系统
转自:http://www.uml.org.cn/pzgl/201206211.asp
随机推荐
- 【MVC】AJAX+PartialView实现商城首页的楼层加载
使用AJAX实现楼层加载的例子已经非常多,但是html代码大都是手动拼接的,编写不便,而且难以维护. 下面就使用AJAX+PartialView来实现 1.html代码 <!--楼层1开始--& ...
- office 2010 2013卸载工具
http://www.ithome.com/html/soft/32777.htm Office 2003 || Office 2007 || Office 2010.
- C#并行编程中的Parallel.Invoke
一.基础知识 并行编程:并行编程是指软件开发的代码,它能在同一时间执行多个计算任务,提高执行效率和性能一种编程方式,属于多线程编程范畴.所以我们在设计过程中一般会将很多任务划分成若干个互相独立子任务, ...
- 全球第一本基于Bootstrap V3.x的图书《深入理解Bootstrap》终于上市了,再次免费送书15本【活动结束】
先说活动规则,再说书的事 经过将近1年的努力,终于有了第一本自己独立编写的书:<深入理解Bootstrap>,基于最新版V 3.1 ,侧重于源码详解.架构分析.插件扩展(全新开发)实战.为 ...
- MVC5 + EF6 + Bootstrap3 (15) 应用ModelState和Data Annotation做服务器端数据验证
Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc5-ef6-bs3-get-started-server-side-validation.html 系列 ...
- 20145221 《信息安全系统设计基础》实验五 简单嵌入式WEB服务器实验
20145221 <信息安全系统设计基础>实验五 简单嵌入式WEB服务器实验 实验报告 队友博客:20145326蔡馨熠 实验博客:<信息安全系统设计基础>实验五 简单嵌入式W ...
- Notes on Convolutional Neural Networks
这是Jake Bouvrie在2006年写的关于CNN的训练原理,虽然文献老了点,不过对理解经典CNN的训练过程还是很有帮助的.该作者是剑桥的研究认知科学的.翻译如有不对之处,还望告知,我好及时改正, ...
- 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
今年微软Build 2016大会最让开发人员兴奋的消息之一,就是在Windows上可以原生运行Linux bash,对开发人员来说,这是一个喜闻乐见的消息. 1 安装 你必须安装开发者预览版本,才能使 ...
- PHP 实现页面静态化
PHP文件执行阶段:语法分析->编译->运行 静态html文件执行顺序:运行 动态程序: 连接数据库服务器或者缓存服务器->获取数据->填充到模板->呈现给用户 关于优化 ...
- Myeclipse 2015 stable 2.0 完美破解方法
2015-08-21 以前写了一篇<Myeclipse 2015 stable 1.0 完美破解方法>,现 在跟新一下Myeclipse 2015 stable 2.0 破解方法,此方法 ...