由于这篇文章记录的是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编译器平台,跟传统编译器的架构差别非常大,且编译器本身开放原始码。
    • 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
  • 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的一个总结吧,上面全是繁体,我是直接简体成的。

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

  1. 安装了SQL2005再安装SQL 2008R2,提示此计算机上安装了 Microsoft Visual Studio 2008 的早期版本和检查是否安装了 SQL Server 2005 Express 工具的解决方案

    工作电脑上安装了SQL 2005, 但是客户电脑上安装的是SQL 2008R2,有时候连接他们的库调试没法连接,很不方便.然后又安装了个SQL2008 R2,期间遇到这两个问题,网上搜索了一下收到了解 ...

  2. SQL SERVER安装提示“安装了 Microsoft Visual Studio 2008 的早期版本

    工作共遇到的问题记录: 安装Sql Server 2008 R2时提示错误:“此计算机上安装了 Microsoft Visual Studio 2008 的早期版本.请在安装 SQL Server 2 ...

  3. Visual Studio 2012 与此版本的 Windows 不兼容。有关详细信息,请联系 Microsoft

    参考网址:Visual Studio 2012 与此版本的 Windows 不兼容 解决 下载更新包安装:http://www.microsoft.com/zh-CN/download/details ...

  4. Visual Studio 2012 与此版本的 Windows 不兼容 解决

    警告: [Window Title] 程序兼容性助手[Main Instruction] 此程序存在已知的兼容性问题[Expanded Information] Visual Studio 2012 ...

  5. 安装SQL Server 2008R2 报错“此计算机上安装了 Microsoft Visual Studio 2008 的早期版本”解决方法

    安装SQL Server 2008 R2报错“此计算机上安装了 Microsoft Visual Studio 2008 的早期版本,请在安装 SQL Server 2008 前将 VS2008 升级 ...

  6. sqlserver安装失败,此计算机上安装了 Microsoft Visual Studio 2008 的早期版本解决方法

    安装sql server 2008 management,提示错误:此计算机上安装了 Microsoft Visual Studio 2008 的早期版本.请在安装 SQL Server 2008 前 ...

  7. Visual studio 2010 打开高版本VS工程解决办法

    第一步.找到工程项目文件: 第二步.编辑项目文件 找到Format Version 12.00 ,将数字改为11.00 再找到#Visual Studio 14 将数字改为2010 点击保存并关闭 第 ...

  8. Visual Studio 添加图标和版本

    在Visual Studio中,如果你创建的是纯C语言的工程,那么给可执行程序添加图标就没有便捷的入口. 但也只是入口不好找了,添加步骤还是比较简单的,以下为具体操作方法:     1. 右键点击C工 ...

  9. 详解在Visual Studio中使用git版本系统

    转自:http://www.uml.org.cn/pzgl/201206211.asp

随机推荐

  1. [NOIP2010初赛]烽火传递+单调队列详细整理

    P1313 [NOIP2010初赛]烽火传递 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述   烽火台又称烽燧,是重要的防御设施,一般建在险要处或交通要道上 ...

  2. Post model至Web Api

    Post model可以解决多动态性的参数至Web Api中去,获取数据或是创建数据.如果一个对象有很多字段,需要对每一个字段进行查询或是在创建对象时,我们可以考虑使用model来作参数.这样不必在控 ...

  3. [转]源代码的管理和发布:以SVN为例

    FROM : http://ju.outofmemory.cn/entry/47277 前几天在微博吐槽了SVN的几个不爽的地方:.svn文件满天飞.分支管理的麻烦.不爽一般来说都是有过对比后才有如此 ...

  4. mysql查看数据库和表的占用空间大小

    mysql查看数据库和表的占用空间大小   第一部分-任务 将线上db,导出后,导入到office db 一. 两种方案: 1,将数据直接从online-->office,通过mysqldump ...

  5. 64位centos 下编译 hadoop 2.6.0 源码

    64位os下为啥要编译hadoop就不解释了,百度一下就能知道原因,下面是步骤: 前提:编译源码所在的机器,必须能上网,否则建议不要尝试了 一. 下载必要的组件 a) 下载hadoop源码 (当前最新 ...

  6. git的安装以及遇到的问题

    git安装以及遇到的问题 之前没有学会如何在Ubuntu下使用git,国庆放假回来后,完成了git的安装,补回来了之前没有学会的东西. 以下是我安装的过程以及遇到问题.解决问题的过程. 这次安装git ...

  7. 如何在前台脚本通过json传递数据到后台(使用微软自带的ajax)

    首先,我们要在前台引入json的脚本,以便于把js对象序列化 <script type="text/javascript" src="/js/jquery.json ...

  8. Congruence relation 同余关系

    https://en.wikipedia.org/wiki/Congruence_relation https://zh.wikipedia.org/wiki/%E5%90%8C%E9%A4%98%E ...

  9. Centos|RHEL7以前解决网卡eth0相关问题

    网络-网络-有网才有络络,哈哈!学习在于不断记录,问题记录多了就成大牛了.当大牛达到一定层次,都会回馈社会.研发推出新的东东! CentOS找不到ifcfg-eth0解决方法 问题描述: ifconf ...

  10. RabbitMQ官方中文入门教程(PHP版) 第二部分:工作队列(Work queues)

    工作队列 在第一篇教程中,我们已经写了一个从已知队列中发送和获取消息的程序.在这篇教程中,我们将创建一个工作队列(Work Queue),它会发送一些耗时的任务给多个工作者(Works ). 工作队列 ...