.Net Framework, .NET Standard, .Net Core, Mono 是什么关系? #
.NET
是规范,其他是实现- 由于
.NET
对库函数的引用类似动态链接库,程序集内并不包含库函数的实现,只包含库函数的签名,然后运行的时候才去加载对应的有实现的程序集完成“链接”过程最后调用 - 再后来 mono 和
.NET Core
完成了基础库的统一,变成了新的.NET
,于是.NET Standard
的使命也结束了,只剩下一个统一的.NET
- 由于
- 最开始
.NET Framework
只支持 Windows - 而 mono 是一个社区的跨平台实现
- mono 能跑大部分的
.NET Framework
程序集 - mono 也不能跑
.NET Core
的程序集
- mono 能跑大部分的
- 后来出了个
.NET Core
跨平台了- 无法跑
.NET Framework
程序集 - 无法跑 mono 程序集
- 无法跑
.NET Standard
.NET Standard
参考三个实现的情况,划定了一组 API 的子集,这组 API 在.NET Framework
、mono 和.NET Core
上都有实现- 然后使
.NET Framework
、mono 和.NET Core
都能加载.NET Standard
程序集 - 这样当用户调用
.NET Standard
里的 API 的时候,会把调用转发到当前运行时的基础库的实现上 - 只要用户的代码基于
.NET Standard
编写,就能同时在.NET Framework
、mono、.NET Core
上跑了 - 后来到了
.NET Standard
2.1 的时候,由于.NET Framework
掉了队,不再新增新的功能,于是.NET Standard
2.1 干脆不支持.NET Framework
了,只支持 mono 和.NET Core
参考:
叶王 © 2013-2024 版权所有。如果本文档对你有所帮助,可以请作者喝饮料。