第一章 (ASP.NET Core入门)第三节( 认识.NET Standard)

第三节( 认识.NET Standard)

引言:.NET Standard的诞生背景

.NET Standard的诞生源于.NET生态系统中不同实现(如.NET Framework、.NET Core、Xamarin等)之间的兼容性问题。具体背景包括:

  1. 跨平台需求‌:随着.NET Core的推出,微软希望在Windows、Linux、macOS等平台上实现跨平台开发,但不同实现的API不一致导致代码共享困难。
  2. 统一API规范‌:为解决API不兼容问题,微软提出.NET Standard,作为一套正式的API规范,确保不同.NET实现(如.NET Core、.NET Framework、Xamarin)能共享类库。

1.什么是.NET Standard

.NET Standard是针对多个.NET实现推出的一套正式的.NET API规范,这里需要注意的是,.NET Standard只是一套规范,而不是一个框架,它本身只是规定了需要被实现的规范,并不负责具体的实现。其核心特点包括:

  • 规范而非实现‌:仅定义API接口,不包含具体实现,需由.NET实现(如.NET Core、.NET Framework)提供支持。
  • 版本管理‌:通过版本号(如1.0、2.0、2.1等)逐步增加API,新版本兼容旧版本。

2.NET Standard的版本

|-----------------|------|------|-------|------|-------|-------|-------|-------|-------|
| .NET 实现 | .NET Standard版本 |||||||||
| .NET 实现 | 1.0 | 1.1 | 1.2 | 1.3 | 1.4 | 1.5 | 1.6 | 2.0 | 2.1 |
| .NET Core | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | 2.0 | 3.0 |
| .NET Framework | 4.5 | 4.5 | 4.5.1 | 4.6 | 4.6.1 | 4.6.1 | 4.6.1 | 4.6.1 | 不支持 |
| Xamarin.iOS | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.14 | 12.16 |
| Xamarin.Mac | 3.0 | 3.0 | 3.0 | 3.0 | 3.0 | 3.0 | 3.0 | 3.8 | 5.16 |
| Xamarin.Android | 7.0 | 7.0 | 7.0 | 7.0 | 7.0 | 7.0 | 7.0 | 8.0 | 10.0 |
| Mono | 4.6 | 4.6 | 4.6 | 4.6 | 4.6 | 4.6 | 4.6 | 5.4 | 6.4 |

.NET Standard版本通过版本控制管理API兼容性,主要版本如下:

版本 主要特性 支持范围
1.0-2.0 基础API集 广泛支持(如.NET Core 1.0-3.1、.NET Framework 4.6.1+、Xamarin等)
2.1-3.1 增加高级API(如异步编程、LINQ) 支持范围缩小(如.NET Core 2.1+、.NET Framework 4.7.2+)
5.0+ 不再发布新版本,但.NET 5+支持.NET Standard 2.1及更早版本

3.如何选择.NET Standard版本

因为.NET Standard只是一套规范,所以我们只能创建.NET Standard类库项目,而不能创建.NET Standard控制台项目等其它项目。

创建.NET Standard类库项目时,需要遵循以下原则:

选择.NET Standard版本需考虑以下因素:

  1. API需求‌:选择支持所需API的最低版本(如需异步编程,选择2.1+)。
  2. 兼容性‌:优先选择广泛支持的版本(如1.0-2.0)。
  3. 目标平台‌:确保目标.NET实现支持该版本(如.NET Framework需4.6.1+)。
  4. 未来扩展‌:若需使用新API,可选择更高版本(但限制兼容性)。

示例:

  • 跨平台通用‌:选择1.0-2.0(如.NET Core 1.0-3.1、.NET Framework 4.6.1+)。
  • 高级功能‌:选择2.1+(如异步编程、LINQ)。

关键提示 ‌:.NET 5+已转向模块化API集(如System.RuntimeSystem.Linq),不再依赖.NET Standard。

相关推荐
星辰徐哥2 小时前
Spring Boot 微服务架构设计与实现
spring boot·后端·微服务
星辰徐哥2 小时前
Spring Boot 数据导入导出与报表生成
spring boot·后端·ui
明夜之约2 小时前
Spring Boot 自动装配源码
java·spring boot·后端
Leaton Lee2 小时前
Spring Boot分层架构详解:从Controller到Service再到Mapper的完整流程
java·spring boot·后端·架构
Micro麦可乐2 小时前
Spring Boot 实战:从零设计一个短链系统(含完整代码与数据库设计)
数据库·spring boot·后端·哈希算法·雪花算法·短链系统
Jinkxs2 小时前
Resilience4j- 与 Spring Boot 快速集成:自动配置与基础注解使用
java·spring boot·后端
毕设源码_郑学姐2 小时前
计算机毕业设计springboot网络相册设计与实现 基于Spring Boot框架的在线相册管理系统开发与应用 Spring Boot驱动的网络影集设计与实践
spring boot·后端·课程设计
辣机小司2 小时前
【踩坑记录:Spring Boot 配置文件读取值不一致?警惕 YAML 的“八进制陷阱”与 SnakeYAML 版本之谜】
java·spring boot·后端·yaml·踩坑记录
码农阿豪2 小时前
从零到一:Spring Boot快速接入金仓数据库实战
数据库·spring boot·后端
追逐时光者2 小时前
一个基于 .NET 与 Avalonia 构建、面向 TrinityCore 的开源 WoW 数据库编辑器
后端·.net