我读过.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相关问答推荐

如何按需计算一个值并将该值缓存在FP/F#中?

是否存在指定的(子)索引分隔符?

仅在有换行符时捕获分隔符之间的所有文本

如何规范机器之间连字符的排序顺序?

AsyncLocal 的语义与逻辑调用上下文有何不同?

MongoDB C# 驱动程序 - 忽略绑定字段

SubscribeOn 和 ObserveOn 有什么区别

是否有用于 Windows / C# 开发的可嵌入 Webkit 组件?

如何从 .net 中的数组类型获取数组项类型

如何更改 double.ToString() 中小数点的符号?

List 和 IEnumerable 的实际区别

有没有办法从方法返回匿名类型?

监听依赖属性的变化

ReaderWriterLockSlim 什么时候比简单的锁更好?

微软内部 PriorityQueue 中的错误?

CI服务器的比较?

合并两个(或更多)PDF

忽略 LINQ to XML 中的命名空间

.NET 图形库?

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