由于这篇文章记录的是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. MVC 多级目录(控制器) 路由重写 及 多级Views目录 的寻找视图的规则

    转自:[原]Asp.net Mvc   多级控制器 路由重写 及 多级Views目录 的寻找视图的规则 asp.net mvc 为了更好的控制views的页面存放,和控制器的可读性,需要分开多级目录来 ...

  2. MathType 公式后的空格问题

    注册表编辑器修改 Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Design Science\DSMT6\WordC ...

  3. Xcode里-ObjC, -all_load, -force_load

    最近在做一个项目的时候,需要使用到一个第三方库,这个库的使用向导里面特别说明,在添加完该库后,需要在Xcode的Build Settings下Other Linker Flags里面加入-ObjC标志 ...

  4. Android 编译命令 make j8 2>&1 | tee build.log 解释

    在编译Android的时候,经常看到这样的命令 make  -j8 2>&1 | tee build.log  其中 make 是编译命令, -j8 这里的 8 指的是线程数量,就是你要 ...

  5. 基于ASP.NET MVC的热插拔模块式开发框架(OrchardNoCMS)--瘦身计划

    Orchard CMS是针对CMS开发的,对于很多开发需求来说,内容管理这块儿可能并不需要,而需要它的模块式开发模式.所以我这里通过对OrchardCMS进行瘦身,去除 内容管理部分的内容,保留简单的 ...

  6. windows下安装git & 在git@OSC上推送代码

    第一部分 windows下安装git 1.下载最新版本的git:直接百度“git”,如图所示,点击立即下载. 也可以直接在官网下载最新版本的git:http://www.git-scm.com/dow ...

  7. 谈谈patch strategy

    所谓的patch strategy,就是软件发布后出现bug时打补丁的方式 - 主要是关于源代码branch如何组织的方式 针对项目的开发阶段.开发状态.维护方式不同,可以有不同的patching s ...

  8. Qt学习笔记 线程(一)

    Qt中的线程是与平台无关的 QThread 提供了创建一个新线程的方法 新建一个线程,继承QThread并重写它的run()当调用 start()函数时会调用重载的run()函数 例: #ifndef ...

  9. lecture7-序列模型及递归神经网络RNN

    Hinton 第七课 .这里先说下RNN有recurrent neural network 和 recursive neural network两种,是不一样的,前者指的是一种人工神经网络,后者指的是 ...

  10. 如何快速从一个Storage Account拷贝到另一个账号

    当您有两个Storage Account的时候,怎样快速做到从一个账号拷贝到另一个账号呢.当拷贝的文件比较,例如100多G(VHD文件). http://code.msdn.microsoft.com ...