我读过.NET标准版和.NET Core之间的区别,但我真的不知道有什么不同,或者什么时候 Select .NET标准库项目,什么时候 Select .NET Core库项目.

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

具有NET Core,我已经读到它也是为了跨平台使用,所以如果我 Select .NET核心库似乎我也可以在许多平台上使用它,就像.净标准.

所以最后,我看不出有什么不同.我应该什么时候用哪一种呢?它们之间有什么不同?

推荐答案

我将try 进一步澄清您的疑问,并扩展Jon Skeet的答案.

.NET Standard是specification,因此为特定.NET Standard版本编译的库可以在不同的.NET Standard实现中使用.

正如我在另一条 comments 中所说,.NET标准和其他.NET标准实现(.NET Core、.NET Framework等)之间关系的一个很好的类比是this gist by David Fowler:.NET标准版本是Interfaces,而框架是这些接口的实现.

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

NET Standard Interfaces analogy

任何以NetCore10为目标的对象都可以访问INetStandard15个API、andNetCore10specific个API(例如DotNetHostPolicy).

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

相反,如果您只需要访问INetStandard15个API(并针对该规范而不是具体的框架),您的库可能会被any framework which implements it个(NetCore10NetFramework462等)使用

Note:在最初的类比中,David Fowler使用了两种接口.NET标准版本和框架实现.我认为使用接口和类更直观,更好地体现了规范和具体实现之间的关系.

.net相关问答推荐

跨请求共享数据

AppShell - 返回导航失败,匹配的路由不明确......但我只注册了一次路由

既然 .NET 有一个垃圾收集器,为什么我们需要终结器/析构器/dispose-pattern?

如何创建 LINQ to SQL 事务?

在 .NET 中获取执行 exe 路径的最佳方法是什么?

如何获取控制台应用程序的执行目录

如何在 EF 代码优先中禁用链接表的级联删除?

RNGCryptoServiceProvider 的优缺点

运算符重载 ==, !=, Equals

隐式与显式接口实现

如何在我的 C# 程序的面板中运行另一个应用程序?

当我们按下 Enter 键时启动的 WPF 文本框命令

让 String.Replace 只打整个单词的方法

将日期时间转换为时间跨度

ConcurrentDictionary TryRemove 何时返回 false

确定使用 ContextMenuStrip 的控件

如何访问 Session 变量并在 javascript 中设置它们?

MailMessage,Sender 和 From 属性的区别

功能说明

Uri.Host 和 Uri.Authority 有什么区别