由于这篇文章记录的是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. C#微信公众号开发系列教程四(接收普通消息)

    微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南) C#微信公众号开发系列教程三(消息体签名及加解密) C ...

  2. SQLServer数据导入Mongodb

    一.思路 MongoVUE免费版支持MySQL导入Mongo,所以思路是SQLServer导入MySQL,再从MySQL导入Mongo. 二.准备 1,安装mysql数据库(我用的是WAMP,集成my ...

  3. 也来山寨一版Flappy Bird (js版)

    随着Flappy Bird的火爆,各种实现的版也不断出现,于是也手痒简单实现了一版. 其实本来只是想实现一下这只笨鸟的飞翔运动的,后来没忍住,就直接实现一个完整游戏了…… 因为这个游戏本身实现起来就没 ...

  4. operating expense & captial expenditure

    营运成本(营业成本, operating expense, OPEX) 指的是运行企业的持续性.消耗性的支出,与之对照的是资本支出(captial expenditure, CAPEX).例如:购买影 ...

  5. hihocoder [Offer收割]编程练习赛4

    描述 最近天气炎热,小Ho天天宅在家里叫外卖.他常吃的一家餐馆一共有N道菜品,价格分别是A1, A2, ... AN元.并且如果消费总计满X元,还能享受优惠.小Ho是一个不薅羊毛不舒服斯基的人,他希望 ...

  6. 使textarea支持tab缩进

    //textarea支持tab缩进 $("textarea").on( 'keydown', function(e) { if (e.keyCode == 9) { e.preve ...

  7. 【转】赶集网mysql开发36军规

    原文链接:https://segmentfault.com/a/1190000004711147 写在前面的话:总是在灾难发生后,才想起容灾的重要性:总是在吃过亏后,才记得曾经有人提醒过. (一)核心 ...

  8. 53-whereis 查找文件

    查找文件 whereis [options] file 参数 file 是whereis需要查找的文件,这些文件属于原始代码,二进制文件或是帮助文件 选项 -b               只查找二进 ...

  9. 【原创·总结】影响sql查询性能的因素

     1.表定义 (1)如果字符串字段是经常需要用到的,可以冗余,否则不要冗余 (2)经常需要作为where的查询条件的字段,可以建索引:但是过多的索引会影响写入时的性能 (3)合理定义字段的数据类型 ( ...

  10. 如何在word中的第3+n页处插入页面并重新从1开始

    在插入页码时有时可能会遇到这种情况: word的第一页是文档名称 第二页是目录 第三页才开始是正文,而我们希望看到页码从第三页开始才是第1页. 在第三页的开头,插入分隔符“下一页”,如果office2 ...