开发手册 欢迎您!
软件开发者资料库

.Net Core和.Net Standard项目类型的区别

之前项目中我遇到了个问题,就是.NET Standard和.NET Core的使用问题,不确定该用哪一个,本要就主要介绍一下.Net Core和.Net Standard的区别

1、.Net Core和.Net Standard区别

1)兼容性:.NET Standard的库可以在任何符合.NET标准的运行时上运行,例如.NET Core.NET FrameworkMono/Xamarin。另一方面,.NET Core的库只能在.NET Core运行时上运行。
2)API作用区域:.Net Standard库所有内容都在NETStandard.Library中,而.Net Core库所有内容都在Microsoft.NETCore.App中。后者包括大约20个额外的库,其中一些我们可以手动添加到我们的.Net Standard库(例如System.Threading.Thread),其中一些与.Net Standard(例如Microsoft.NETCore.CoreCLR)不兼容。

2、两者都存在的原因

1).NET Standard存在的原因是可移植性; 它定义了.NET平台,同意实现的一组API。任何实现.Net Standard API的平台都与目标.Net Standard的库兼容。其中一个兼容的平台是.NET Core
2).NET Standard库可以在多个运行时上运行(以API作用区域为代价)。相反,存在.NET Core库以访问更大API作用区域(以兼容性为代价),并指定用于构建可执行文件的平台。

3、.Net Core和.Net Standard的选择

1)决定是兼容性和API访问之间的权衡。
2)如果要增加兼容的应用程序数量,请使用.Net Standard库,并且可以减小库可以访问的.NET API作用区域。
3)如果要增加库可以访问的.NET API作用区域,请使用.NET Core库,并且只兼容.NET Core应用程序即可。

例如,.NET Standard 1.3的库将与.NET Framework 4.6.NET Core 1.0Universal Windows Platform 10.0,以及支持.NET Standard 1.3的任何其他平台的应用程序兼容。但是,该库无法访问.NET API的某些部分。例如,该 Microsoft.NETCore.CoreCLR软件包与.NET Core兼容,但与.NET Standard不兼容。