第一章 (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.Runtime、System.Linq),不再依赖.NET Standard。

相关推荐
黎燃8 分钟前
我给自己写了一个 mini OpenRouter:基于蓝耘 MaaS 的多模型路由网关实战
后端
leobertlan10 分钟前
痛苦系列 | DSP-01 从连续到离散:DSP基础与采样
android·后端
高频因子挖掘机12 分钟前
同一只股票前复权和不复权价格对不上?先检查这几个口径
后端·github·api
Bazingga42 分钟前
Harness学习笔记:从马具到工程外壳
后端
法欧特斯卡雷特1 小时前
Kotlin 新特性抢先看:伴生扩展与伴生块
后端·面试·开源
桃李醉春风1 小时前
被微信拒审那天,我才真正学会 Vibecoding:一个人 + AI,3 万行代码、1.8 万张素材的小程序全复盘
后端
她的男孩1 小时前
打印模板草稿能保存,一点发布就报主从关系:我们把校验拆成了两档
java·spring boot·后端
Bazingga2 小时前
Embabel学习笔记:把Agent的决策权从LLM手里拿回来
后端
用户8314550980312 小时前
基于 Firecracker 自建 Agent 沙箱集群:状态机 + 文件管理 + 进程编排,附 E2B 生产经验校准
后端