百科问答小站 logo
百科问答小站 font logo



.NET Standard和.NET Core区别? 第1页

  

user avatar   hez2010 网友的相关建议: 
      

最开始 .NET Framework 只支持 Windows,而 mono 是一个社区的跨平台实现,后来出了个 .NET Core 跨平台了,但是由于 .NET Core 和 mono、.NET Framework 是不同的,虽然 mono 能跑大部分的 .NET Framework 程序集,但是 .NET Core 不行;而 mono 也不能跑 .NET Core 的程序集,.NET Core 也不能跑 mono 和 .NET Framework 的程序集。

由于 .NET 对库函数的引用类似动态链接库,程序集内并不包含库函数的实现,只包含库函数的签名,然后运行的时候才去加载对应的有实现的程序集完成“链接”过程最后调用,于是 .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 上跑了。

而如果要使用各自平台独有的 API 的话,则不能基于 .NET Standard 来编写代码,而需要基于 .NET Framework、.NET Core 或者 mono 来编写代码。

后来到了 .NET Standard 2.1 的时候,由于 .NET Framework 掉了队,不再新增新的功能,于是 .NET Standard 2.1 干脆不支持 .NET Framework 了,只支持 mono 和 .NET Core。

再后来 mono 和 .NET Core 完成了基础库的统一,变成了新的 .NET,于是 .NET Standard 的使命也结束了,只剩下一个统一的 .NET。




  

相关话题

  “C++”读作「C 加加」,为什么“C#”不能读作「C 井」呢? 
  ASP.NET异步改造代码性能不升反降? 
  同时会C#、Qt还有Python是一种什么体验? 
  2019 年了,C# 发展得怎么样了? 
  为什么unity愿意用c#作为代码语言,而虚幻却使用c++? 
  为什么一说到 C#,很多人都说跟微软绑太紧,说到 Objective-C,就没人说跟苹果绑太紧呢? 
  重度强迫,只认 C#,其它不学不问,该如何是好? 
  对于C#与C++之间的数据传输,用GCHandle或Marshal是否就是最好的方案了? 
  如何看待即将发布的 C# 8.0? 
  如何判断 string 是否为合法的 C# 变量名? 

前一个讨论
俄乌冲突始作俑者美国渔翁得利意图明显,为什么欧洲仍然唯美国之命是从?
下一个讨论
对于这次疫情,你有什么感想?懂得了什么?





© 2025-05-27 - tinynew.org. All Rights Reserved.
© 2025-05-27 - tinynew.org. 保留所有权利