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

相关推荐
像我这样帅的人丶你还12 小时前
Java 后端详解(四):分页与搜索
java·javascript·后端
她的男孩12 小时前
数据权限为什么不能只靠注解?Forge 的 Mapper 层 SQL 改写源码拆解
java·后端·架构
烤代码的吐司君12 小时前
Redis 数据结构 ZSet, BIT, HyperLogLog,Geo 空间数据
redis·后端
苏三说技术12 小时前
为什么越来越多的人使用FastAPI?
后端
JavaGuide12 小时前
比 iTerm2 更适合 Claude Code/Codex 的终端,我换成 Ghostty 了
人工智能·后端
DyLatte13 小时前
AI 时代,最危险的不是被替代,而是努力不沉淀
前端·后端·程序员
神奇小汤圆13 小时前
架构师必备:CPU使用率不均匀排查
后端
神奇小汤圆13 小时前
Multi-Agent 执行闭环:AI Coding 真正进生产,要靠模型分工和工程护栏
后端
柒和远方14 小时前
从一次工程审查看 AI 学习产品的边界兜底:RAG 资料链路一致性实战
前端·后端·架构
亦暖筑序14 小时前
Java 8老系统Browser Agent实战:三层拦截把AI操作后台变成可审计流程
java·后端·设计模式