Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >考古 dotnet 的不同版本

考古 dotnet 的不同版本

作者头像
林德熙
发布于 2021-05-27 06:36:38
发布于 2021-05-27 06:36:38
6600
举报
文章被收录于专栏:林德熙的博客林德熙的博客

本文来考古一下 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 关注我的主页

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
dotnet 使用 Crossgen2 对 DLL 进行 ReadyToRun 提升启动性能
我对几个应用进行严格的启动性能评估,对比了在 .NET Framework 和 dotnet 6 下的应用启动性能,非常符合预期的可以看到,在用户的设备上,经过了 NGen 之后的 .NET Framework 可以提供非常优越的启动性能,再加上 .NET Framework 本身就是属于系统组件的部分,很少存在冷启动的时候,大部分的 DLL 都在系统里预热。启动性能方面,依然是 .NET Framework 比 dotnet 6 快非常多。而在破坏了 .NET Framework 的运行时框架层的 NGen 之后,可以发现 .NET Framework 的启动性能就比不过 dotnet 6 的启动性能。为了在 dotnet 6 下追平和 .NET Framework 的启动性能差异,引入与 NGen 的同等级的 ReadyToRun 用来提升整体的性能。本文将告诉大家如何在 dotnet 6 的应用里面,使用 Crossgen2 工具,给 DLL 生成 AOT 数据,提升应用启动性能
林德熙
2022/08/12
7550
dotnet 使用 Crossgen2 对 DLL 进行 ReadyToRun 提升启动性能
【重榜?】.NET 6 Preview 1 开箱上手!带你尝试新版本更新!
最近 .NET 6 Preview 1 发布了,.NET 统一是此版本的核心。大家可以读一下原文博客:
痴者工良
2021/04/26
3.8K0
.NET 6 Preview 6 正式发布: 关注网络开发
微软.NET 团队的项目经理在博客上发布了.NET 6 Preview 6, 在候选发布阶段之前的倒数第二个预览版,也就是8月份还会发布一个Preview 7,9月份开始进入RC,两个候选版本将专注于质量修复,直到 11 月的最终版本。 Preview 6 版本本身相对较小,而 Preview 7 功能方面会更多,Preview 6主要集中在网络开发方面,同时Visual Studio 2022 为WPF 应用程序的开发提供了实时预览。
张善友
2021/07/19
9390
苏州 开源自主的 dotnet 生态
本文仅仅只是用来在2020苏州开发者大会上的素材,开发者大会成功完成,本文也可以公开
林德熙
2021/12/24
9980
Macbook(M1版)的用户看过来,.net 6 Preview 6支持Apple Silicon for macOS
我们很高兴发布.NET6预览的第6版,本次预览是倒数第二次预览了。在本次预览发布之后到最后一次预览之前,我们会进入RC期,将会有两个RCs。这个版本本身相对内容较少,而Preview7的内容会更多。在所有预览发布结束后,我们将持续对问题进行修复,直到11月发布最终版本。请大家一起期待.NET的新版本。
葡萄城控件
2021/07/20
1.2K0
Macbook(M1版)的用户看过来,.net 6 Preview 6支持Apple Silicon for macOS
WPF 通过 ReadyToRun 提升性能
通过 ReadyToRun 可以在程序集同时包含 IL 和本机代码,可以有效提升软件的启动速度
林德熙
2022/08/12
1.1K0
Unity3D (Mono/IL2CPP) 中 P/Invoke 平台调用代码应该如何传委托
IL2CPP does not support marshaling delegates that point to instance methods to native code. 你可能平时在 .NET Core / Framework 的代码中写得很正常的托管代码的委托调用,在 Unity3D 中变得不可行。
walterlv
2023/10/22
9730
杂谈 System.Drawing.Common 的跨平台性(关键词:libgdiplus / .NET Core / Mono / Win32 / Linux / ……)
经过 Mono 团队的不懈努力,原本专属于 Win32 平台的 GDI+ 终于可以跨平台了,不过这中间还有好多的故事和好多的坑。
walterlv
2023/10/22
2.5K0
杂谈 System.Drawing.Common 的跨平台性(关键词:libgdiplus / .NET Core / Mono / Win32 / Linux / ……)
译 | .NET Core 3.0 Preview 6 已发布
今天,我们宣布 .NET Core 3.0 Preview 6。它的更新包括编译程序集以改进启动、使用链接器和 EventPipe 改进优化应用程序的大小。我们还在 ARM64 上发布了针对 Alpine 的新 Docker 镜像。
Edi Wang
2019/07/09
1K0
Roslyn 判断当前使用 dotnet core 编译器进行编译
在写 msbuild 预编译或编译调度逻辑时,如何知道当前执行的编译器使用的是上古版本的 msbuild 还是用了 dotnet core 内核的 Roslyn 编译器?本文解决的问题是我期望在 Windows 系统使用 .NET Framework 版本的工具,而在非 Windows 系统上,使用 dotnet core 版本的工具。原因是 .NET Framework 在开发者设备上都会有,用起来简单。而 dotnet core 提供了跨平台,可以在其他平台上使用
林德熙
2021/01/07
4680
【翻译】.NET 5 Preview8发布
今天,.NET 5预览8发布了,对于.NET5.0的功能开发已经完成了,这必须要排除待处理的bug,预览8是最后一次预览版本。预计11月正式的.NET5.0版本发布之前还将发布两个正式之前的候选版本,这篇文章描述了.NET5.0版本中的一系列功能。 You can download .NET 5.0, for Windows, macOS, and Linux:
Jlion
2022/04/07
8360
【翻译】.NET 5 Preview8发布
.NET9 AOT部署
AOT是Ahead-of-Time的缩写,AOT是将C#程序提前编译为机器代码(通常为平台特定的二进制文件),在应用程序启动之前完成编译过程。
郑子铭
2025/03/17
1060
.NET9 AOT部署
深度探秘.NET 5.0
今年11月10号 .NET 5.0 如约而至。这是.NET All in one后的第一个版本,虽然不是LTS(Long term support)版本,但是是生产环境可用的。
Jlion
2022/04/07
1.1K0
深度探秘.NET 5.0
dotnet core 应用是如何跑起来的 通过自己写一个 dotnet host 理解运行过程
在上一篇博客是使用官方提供的 AppHost 跑起来整个 dotnet 程序。本文告诉大家在 dotnet 程序运行到托管代码之前,所需要的 Native 部分的逻辑。包括如何寻找 dotnet 运行时,如何加载运行时和框架然后跑起来业务端的 dll 文件的逻辑
林德熙
2020/12/08
5650
dotnet core 应用是如何跑起来的 通过自己写一个 dotnet host 理解运行过程
.NET 6 RC1 正式发布
昨天晚上微软发布了.NET 6的两个RC版本中的第一个版本,该版本将于11月正式发布,作为在开源MIT协议下整合所有不同的.NET开发模组件的开源跨平台实现。这是一个从2014年开始,持续多年的,以改变应用开发游戏规则的努力,由于COVID-19大肆虐,推迟了一年,这个版本终于完成了,将基于Mono的Xamarin 也整合到了.NET 6, 不过据官方博客说明,MAUI 在.NET RTM上仍然是预览版,要到2022年才能够正式发布。
张善友
2021/09/23
5120
.NET 6 RC1 正式发布
厚积薄发,拥抱 .NET 2016
厚积薄发这个词是高三英语老师在高考前写在黑板上,高中三年努力这么久,是时候迎面而上,冲刺向前。所以,一想到.NET 2016,脑海里蹦出的第一个词就是它。 .NET 2016 是 .NET 一次质的飞跃,不管难易,我们需要拥抱变化。 初识 .NET 2016 .NET 2016 概览 .NET 2016 作为 .NET 技术最新发展,如下图所示,它主要包含三大块: 最左边代表的是 .NET Framework 4.6,WPF、ASP.NET 4.x、ASP.NET Core 1.0 能运行在它上。中间这部
用户1161731
2018/03/28
1.2K0
厚积薄发,拥抱 .NET 2016
简析.NET Core 以及与 .NET Framework的关系
简析.NET Core 以及与 .NET Framework的关系 1 .NET Core & .NET Framework 2 .NET Core & ASP.NET 3 .NET Core & Mono 1. Runtime 2. Unified BCL 3. Windows Store AppModel & ASP.NET Core 1.0 一 .NET 的 Framework 们 二 .NET Core的到来 三 .NET Core 与 .NET 其他平台的关系 总结 ---- 至2002微软公司推
逸鹏
2018/04/10
1.8K0
简析.NET Core 以及与 .NET Framework的关系
dotnet 使用 XWT 构建跨平台客户端 入门篇
本文告诉大家如何入门开始开发一个基于 mono 组织开源的 XWT 跨平台客户端 UI 框架的应用,本文的 xwt 是在 GitHub 上完全开源的,基于 MIT 协议的,底层采用 GTK# 的 UI 框架
林德熙
2021/08/12
1.2K0
.NET 5.0正式发布,新功能特性(翻译)
  我们很高兴今天.NET5.0正式发布。这是一个重要的版本—其中也包括了C# 9和F# 5大量新特性和优秀的改进。微软和其他公司的团队已经在生产和性能测试环境中开始使用了。这些团队向我们反馈的结果比较令人满意,它证明了对性能提升及降低Web应用托管成本的机会有积极的表现。从预览版1开始,我们一直在5.0上运行我们自己的网站。从我们目前的所见所闻来看,.NET5.0无需在升级上花费太多的精力就能带来巨大的价值。对于你的下一个应用来说,这是一个很好的选择,而且可以直接从早期的.NET Core版本升级。我们希望您在台式机、笔记本电脑和云实例上正式开始使用它。
张传宁IT讲堂
2020/11/13
2.3K0
.NET 5.0正式发布,新功能特性(翻译)
【Unity逆向】玩游戏遇到的“飞天锁血”是怎么实现的?
就是先用kali扫一下,手机信息。根据开了什么端口等等来判断如何去做,是不是可以直接弱口令。
20岁爱吃必胜客
2023/03/11
1.2K0
【Unity逆向】玩游戏遇到的“飞天锁血”是怎么实现的?
推荐阅读
相关推荐
dotnet 使用 Crossgen2 对 DLL 进行 ReadyToRun 提升启动性能
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档