微软停止更新.NET Standard并由.NET 5取代

微软在博客宣布不再更新.NET Standard函数库,而.NET 5将成为取代.NET Standard定位的产品,可用于开发Windows桌面应用程序、跨平台移动应用程序、控制台应用程序,以及云计算服务和网站,.NET 5以上版本将会继续支持.NET Standard 2.1和更之前的版本。

微软为了更良好地反应.NET 5的定位,因此更新了目标框架名称(TFM),net5.0适用于在各平台执行的程序代码,整合并替代了netcoreapp和netstandard名称,net5.0仅会包含可以跨平台运行的技术,而net5.0-windows或是之后的net6.0-android和net6.0-ios,微软提到,这些TFM代表特定操作系统的.NET 5功能,其中不只包含了net5.0,还有专属于该操作系统的功能。

.NET Standard的出现,是为了要提供.NET统一跨平台基础函数库,让开发者可以撰写在任何平台执行的函数库,但微软提到,.NET Standard存在3个问题,包括版本更新缓慢,所以开发者无法快速使用到各平台新功能,再来是.NET Standard版本与.NET实例版本对应复杂,需要复杂的表格才能解释其对应关系,另外,因为.NET Standard包含了特定平台功能,因此没办法利用静态验证,检查程序代码的可移植性。

因此微软决定以.NET 5来解决这些问题,.NET 5将会是统一功能和API的单一产品,.NET 5以及未来的版本,将会支持.NET Standard 2.1以及更早版本,因此开发者可以不需要更新现有程序,但是当开发者想要使用额外的Runtime功能、语言功能以及API,则可以选择将.NET Standard升级使用.NET 5。

至于新程序代码要选择哪一个版本的函数库,微软表示,这取决于开发应用程序组件,还是可重用函数库。当开发者使用函数库将应用程序分解成多个组件,则使用的函数库版本,便为组件中最低支持的版本,而当开发者要开发上传到NuGet的可重用函数库,便需要顾虑可用的功能集,.NET Standard 2.0是.NET Standard版本中,最高还支持.NET Framework的版本,其提供庞大的功能集,覆盖范围广。

综合以上条件,微软建议开发者,不要使用.NET Standard 1.x,因为会带来许多麻烦,当开发者不需要支持.NET Framework,就可以直接使用.NET Standard 2.1或.NET 5,通常大部分的程序代码都可以直上.NET 5,而要创建广泛支持的函数库,只要同时支持.NET Standard 2.0以及.NET 5,就能提供最完整的覆盖,.NET Standard 2.0可以触及最大的支持范围,而.NET 5可以确保开发者能用到最新的平台功能。