专栏首页林德熙的博客考古 dotnet 的不同版本

考古 dotnet 的不同版本

本文来考古一下 dotnet 发布过的版本,相信本文里面有很多个版本都是大家很少听过的

什么才能称为一个 dotnet 版本?从 .NET Framework 1.0-4.8 算多少个版本?其实我这里说的版本指的是不同的实现,我将整个 .NET Framework 算作一个版本。而将 .NET 的不同的分支,分别作为不同的版本

下面列举一下 dotnet 的不同版本

.NET Framework

这大概就是咱最熟悉的一个 dotnet 实现版本,从 2002 年发布到现在,当前最新是 .NET Framework 4.8 版本

.NET Core

这是 dotnet 的里程碑,作为完全开源的,基于 MIT 协议的实现版本,从构建到运行时完全开源

这也是跨平台版本的 dotnet 实现版本,可以在多个平台运行。相信有关注技术的开发者都对 .NET Core 非常熟悉

.NET

当前的 dotnet 主实现版本,从 .NET 5 开始,官方将定 .NET 作为主版本。将原有的 .NET Core 等版本合入在一起,放在一个仓库进行开发

当然,如果强行说 .NET 合并了 .NET Core 和 .NET Framework 和 Mono 等实现版本,这也不算全错,也不能说对。可以认为 .NET Core 和 .NET Framework 等实现版本的下一代就是 .NET 版本

Mono

这是 dotnet 跨平台的先锋,这是一个完全独立、跨平台的CLI实现。当前也合入到 .NET 主版本

据说 Unity3D 里面有基于 Mono 维护过一个自己的版本,但只是据说哈

在 Blazor 预览版本,也有基于 Mono 实现的 WASM 版本,当前这个版本合入到 .NET 版本

WinRT

这是在微软通用平台开发概念提出写的框架,本质上说,这不算是一个 .NET 的实现版本,当前这个 WinRT 依然在维护中,可以通过 NuGet 在 .NET Core 和 .NET 5 使用。通过 WinRT 可以访问现代化的 Windows 系统的功能

.NET Native

这也是 .NET 的很特殊的实现版本,大多数的 .NET 实现版本,在构建阶段都是将 C# 等代码构建为 IL 代码,在运行时进行翻译为本机代码。而 .NET Native 是将 IL 构建为本机代码,让 C# 代码一步生成为本机代码的实现。提供了很快的启动性能,以及减少运行时的资源占用。此实现当前依然在开发中。通过 .NET Native 技术可以压缩发布文件体积,减少环境依赖

如果将 .NET Native 算作 .NET 的一个实现版本,那么 CrossGen 和 CrossGen2 也可以算做 .NET 的一个实现,这两个实现是前后继承的关系,在 .NET 6 准备开始切为 CrossGen2 实现,使用 CrossGen2 可以提供在开发者构建时,将一部分逻辑提前加上本机代码构建,用来提升启动性能

IL2CPP

本质上说这勉强能算 .NET 的一个实现版本,此版本和 .NET Native 在功能上基本重叠。在 Unity3D 上大量采用 IL2CPP 技术

以上就是大部分开发者熟悉的版本,下面是一些大家很少听过的版本

Rotor

也是 Shared Source CLI 版本,这是基于教育和学术的目的开放的版本,在 2002 年发布的版本。这不是一个用来做商业软件的版本,只是让开发者了解 CLR 细节的版本

.NET Compact Framework

从 Windows CE 和 Windows Mobile 到 Xbox 360 都有使用过这个版本,这是 .NET 的移动端开始的版本。可以认为 .NET Core 的跨平台就起源在这里,在 .NET Core 有很多代码和实现都从这里拿到

另一个移动版本是 Windows Phone 7.x,Windows Phone 8.x 和 Windows 10 移动版。在 Windows Phone 7.x 是基于 .NET Compact Framework 3.7 的逻辑,而在 Windows Phone 8.x 就基于 .NET Framework 4.5 构建和更改

Silverlight

这是 .NET 的浏览器开发的开始,是 Web 浏览器插件。在 .NET Framework 2.0 时代开始开发。也被移植到了OSX平台,而 .NET Core 对 OSX 的支持也从这里拿到一些逻辑

提到 SL 这个框架,在这个框架的时代就是 .NET 最黑暗的时代,不过好在现在有 .NET Core 重新撑起来

.NET Micro Framework

这是给 IOT 等设备准备的开源独立版本,这个版本是最特殊的 .NET 实现版本

Itanium

其实这个版本我没有考古到名字,这是为 Itanium 处理器特别构建的版本,后面被合入到 .NET Framework 主版本

本文考古内容参考了很多文档,特别感谢 伟民哥翻译的 《.NET内存管理宝典 - 提高代码质量、性能和可扩展性》 这本书提供的详细参考


本文会经常更新,请阅读原文: https://blog.lindexi.com/post/%E8%80%83%E5%8F%A4-dotnet-%E7%9A%84%E4%B8%8D%E5%90%8C%E7%89%88%E6%9C%AC.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

如果你想持续阅读我的最新博客,请点击 RSS 订阅,推荐使用RSS Stalker订阅博客,或者前往 CSDN 关注我的主页

无盈利,不卖课,做纯粹的技术博客

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • dotnet 自动迁移 VS 2017 以前的 csproj 转为 dotnet core 的 SDK Style 风格工具

    本文来安利大家一个特别好用的工具,可以自动将 VisualStudio 2017 以前版本创建的 Franken-proj 格式 的 csproj 项目文件转换...

    林德熙
  • Roslyn 判断当前使用 dotnet core 编译器进行编译

    在写 msbuild 预编译或编译调度逻辑时,如何知道当前执行的编译器使用的是上古版本的 msbuild 还是用了 dotnet core 内核的 Roslyn...

    林德熙
  • ubuntu的不同版本

    ubuntu是现在最流行的Linux安装包,本文介绍了ubuntu的各种版本。 一、Ubuntu ? 每个ubuntu的版本都包含一个版本号(version n...

    ruanyf
  • 如何给 CI CD 服务器搭建上 .NET 5 构建和运行环境

    在 2020.11.10 官方正式发布了 .NET 5 正式版。而我花了一周的时间进行踩坑和预研,本文将告诉大家如何在自动化服务器上搭建 dotnet 5 的构...

    林德熙
  • dotnet core 在 MAC 系统下删除应用程序自己后调 Process Start 方法将会抛出 Win32 异常

    在 MAC 系统下,如果在运行过程中,应用程序的文件被删除了,那么此时如果应用程序执行了 Process.Start 方法时,将会抛出 Win32Excepti...

    林德熙
  • 下载不同版本的xcode

    用户1437675
  • .NET Core 项目指定SDK版本

    自从 .NET Core 2.1.0版本发布以后,近几个月微软又进行了几次小版本的发布,可见 .NET Core 是一门生命力非常活跃的技术。经过一段时间的实践...

    晓晨
  • .NET Core 项目指定SDK版本

    自从 .NET Core 2.1.0版本发布以后,近几个月微软又进行了几次小版本的发布,可见 .NET Core 是一门生命力非常活跃的技术。经过一段时间的实践...

    晓晨
  • kafka default partitioner java版本和scala版本的不同

    sanmutongzi

扫码关注云+社区

领取腾讯云代金券