首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.NET标准与.NET核心

.NET标准与.NET核心
EN

Stack Overflow用户
提问于 2017-05-20 11:38:54
回答 7查看 39K关注 0票数 276

我读过.NET标准和.NET核心之间的区别,但是我真的不知道区别是什么,也不知道什么时候选择.NET标准库项目,什么时候选择.NET核心库项目。

我读过.NET标准是为了确保一组API始终可用,无论使用的是哪个平台(只要该平台与我选择的.NET标准版本兼容)。如果我没有弄错,这意味着我可以创建一个.NET标准类库,然后在与我选择的.NET标准版本兼容的任何平台上使用它。

关于.NET核心,我读到它也是为了跨平台使用,所以如果我选择一个.NET核心库,我似乎也可以在许多平台上使用它,就像.NET标准一样。

最后,我看不出有什么区别。我什么时候该用哪一种?他们之间有什么区别?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2017-05-20 17:07:48

我会进一步澄清你的疑虑,并给出乔恩·斯基特的回答。

.NET标准是一种规范,因此为特定.NET标准版本编译的库可以在不同的.NET标准实现中使用。

正如我在其他评论中所说的,.NET标准与其他.NET标准实现(.NET Core、.NET Framework等)之间关系的一个很好的类比是这是大卫·福勒的主旨:.NET标准版本是Interfaces,而框架是这些接口的实现。

这个简化的图表可能有助于理解这种关系:

任何获取NetCore10的对象都可以访问INetStandard15 API和NetCore10 特定的API(例如DotNetHostPolicy)。

当然,这个库不能在不同的INetStandard15实现中使用(NetCore10不能转换为NetFramework462Mono46)。

如果您只需要访问INetStandard15 API(并针对该规范而不是具体的框架),则实现它的框架 (NetCore10NetFramework462等)可能会使用您的库。

注释:在最初的类比中使用了.NET标准版本和框架实现的接口。我相信使用接口和类可以更直观、更好地代表规范和具体实现之间的关系。

票数 215
EN

Stack Overflow用户

发布于 2017-05-20 11:41:26

.NET核心是.NET标准的一个实现。它可以在多个操作系统上使用,但这不是一回事--还有.NET标准的其他实现。

因此,如果您创建了一个.NET核心库,它将能够访问在.NET Core中实现的东西,但它不是.NET标准的一部分,而且您的库将无法与.NET标准的其他实现兼容,例如Xamarin、Tizen、完整的.NET桌面框架等等。

简而言之:为了实现最大的可移植性,使您的库目标为.NET标准。

票数 195
EN

Stack Overflow用户

发布于 2019-04-24 07:31:25

.NET Standard是一种旨在在.NET实现上可用的.NET API规范。这使得能够为所有.NET实现定义统一的BCL集。

.NET Core就是.NET标准的实现之一。.NET框架是.NET标准的另一个实现。

来自.NET博客的图像

费德里科回答向您提供了每个框架如何随版本发展的图形概述。看看下面的图表来自Microsoft Docs

打靶 .NET标准增加了您的平台支持,而针对特定的.NET平台(如.NET Core (或.NET Framework) )将允许您使用该平台的所有平台特性。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44085424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档