1. .NET Framework
.NET Framework开发平台包含公共语言运行库(CLR)和基类库(BCL),前者负载管理代码的执行,后者提供了丰富的类库来构建应用程序。.NET Framework仅支持Windows平台
2. Mono
由于.NET Framework支支持windows环境,因此社区开发了Mono,是可以跨平台运行的,但是其远远落后于.NETFramework的官方实现
3. .NET Core
微软官方提供的跨平台运行平台。包括名为CoreCLR的CLR跨平台实现和CoreFX的流畅的BCL。.NETCore的运行速度快。
.NETCore已经重命名为.NET,为了和.NET Framework区分,主版本号跳过了数字4,以免和.NET Framework 4.X混淆。其版本可以是长期支持的(LTS),也可以是当前的(Current)
3.1 .NET Runtime 和.NET SDK
.NET Runtime 版本控制遵循语义版本控制,也就是说,主版本表示非常大的更改,次版本表示更新,而补丁版本表示bug修复。.NET Runtime更新与主版本(如 6.x版)兼容。
.NET SDK 版本控制不遵循语义版本控制。主版本号和次版本号与匹配的运行时版本绑定。.NET SDK更新版本保留了构建适用于旧版运行时的应用程序的能力,可以使用以下命令更新版本:
dotnet-core-unistalll remove -all-previews-but-latest --sdk
4. 运行过程
dotnet CLI工具使用的C#编译器(名为Roslyn) 会将C#的源码转换成中间语言(IL)代码,并将IL存储再程序集(DLL或EXE)中。IL代码语句就像汇编的指令,由.NET的虚拟机CoreCLR执行。CoreCLR运行时,先从程序集中加载IL代码,再由JIT编译器将IL代码编译成本机CPU指令,最后由机器上的CPU执行。