我读过关于。net Standard和。net Core的区别,但是我真的不知道区别是什么,或者什么时候选择。net Standard库项目和什么时候选择。net Core库项目。
我读过。net标准是为了确保一组api总是可用的,无论使用什么平台(只要该平台与我所选择的。net标准版本兼容)。如果我没有弄错的话,这意味着我可以创建一个。net标准的类库,然后在任何与我所选择的。net标准版本兼容的平台上使用它。
对于。net Core,我读到过它也是用于跨平台使用的,所以如果我选择一个。net Core库,似乎我也可以在许多平台上使用它,就像。net Standard一样。
所以最后,我看不出有什么不同。什么时候用哪个?它们之间的区别是什么?
我将试图进一步澄清你的疑问,并扩展乔恩·斯基特的答案。
. net Standard是一个规范,因此为特定的. net Standard版本编译的库可以用于不同的. net Standard实现。
正如我在其他评论中所说,. net标准和其他。net标准实现之间的关系的一个很好的类比(。NET Core, .NET Framework等)是David Fowler的主旨:.NET标准版本是接口,而框架是这些接口的实现。
这张简化的图表可能有助于理解这种关系:
任何针对NetCore10的程序都可以访问INetStandard15 api和NetCore10特定的api(如DotNetHostPolicy)。
当然这个库不能在不同的INetStandard15实现中使用(NetCore10不能转换为NetFramework462或Mono46)。
如果你只需要访问INetStandard15 api(目标是该规范而不是具体的框架),你的库可以被任何实现它的框架(NetCore10, NetFramework462等)使用。
注意:在最初的类比中,David Fowler同时为. net标准版本和框架实现使用了接口。相反,我认为使用接口和类更直观,也更好地表示了规范和具体实现之间的关系。
我将试图进一步澄清你的疑问,并扩展乔恩·斯基特的答案。
. net Standard是一个规范,因此为特定的. net Standard版本编译的库可以用于不同的. net Standard实现。
正如我在其他评论中所说,. net标准和其他。net标准实现之间的关系的一个很好的类比(。NET Core, .NET Framework等)是David Fowler的主旨:.NET标准版本是接口,而框架是这些接口的实现。
这张简化的图表可能有助于理解这种关系:
任何针对NetCore10的程序都可以访问INetStandard15 api和NetCore10特定的api(如DotNetHostPolicy)。
当然这个库不能在不同的INetStandard15实现中使用(NetCore10不能转换为NetFramework462或Mono46)。
如果你只需要访问INetStandard15 api(目标是该规范而不是具体的框架),你的库可以被任何实现它的框架(NetCore10, NetFramework462等)使用。
注意:在最初的类比中,David Fowler同时为. net标准版本和框架实现使用了接口。相反,我认为使用接口和类更直观,也更好地表示了规范和具体实现之间的关系。