第一章 (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。

相关推荐
geovindu25 分钟前
go: Semaphore Pattern
开发语言·后端·设计模式·golang·企业级信号量模式
IT_陈寒27 分钟前
Redis内存用爆了,原来我们都忽略了这个配置
前端·人工智能·后端
武子康30 分钟前
Java-02 深入浅出MyBatis 3 快速入门:环境配置、项目创建与 CRUD 操作
java·后端
未若君雅裁1 小时前
Spring Boot 自动配置原理与常用注解
java·spring boot·后端
Xiacqi11 小时前
Java数据库连接--JDBC--DRUID
数据库·后端
浮游本尊2 小时前
用结构化 Prompt 让大模型「干活」:以数据库巡检告警建议生成为例
后端
snakeshe10102 小时前
SpringBoot 多人协作平台实战(8):Cookie 与登录状态维持
后端
代码北人生2 小时前
后端工程师开始用 Claude Code 了,Stripe 4天完成了本来要10个工程师周的迁移
后端·claude
小江的记录本2 小时前
【Java基础】核心关键字:final、static、volatile、synchronized、transient(附《思维导图》+《面试高频考点清单》)
java·前端·数据结构·后端·ai·面试·ai编程