.NET Standard 中的新增功能
.NET Standard 是一种正式规范,它定义了一组版本化 API。这些 API 必须可用于符合相应 Standard 版本要求的 .NET 实现。 .NET Standard 面向库开发者。 定目标到 .NET Standard 版本的库可用于任意 .NET 或支持 Standard 版本的 Xamarin 实现。
.NET Standard 附带了 .NET SDK。 如果选择 .NET 工作负载,它也会附带 Visual Studio。
.NET Standard 2.1 是将发布的最新版的 .NET Standard。 有关详细信息,请参阅 .NET 5+ 和 .NET Standard。
支持的 .NET 实现
以下 .NET 实现支持 .NET Standard 2.1:
- .NET Core 3.0 或更高版本(包括 .NET 5 及更高版本)
- Mono 6.4 或更高版本
- Xamarin.iOS 12.16 或更高版本
- Xamarin.Android 10.0 或更高版本
以下 .NET 实现支持 .NET Standard 2.0:
- .NET Core 2.0 或更高版本(包括 .NET 5 及更高版本)
- .NET Framework 4.6.1 或更高版本
- Mono 5.4 或更高版本
- Xamarin.iOS 10.14 或更高版本
- Xamarin.Mac 3.8 或更高版本
- Xamarin.Android 8.0 或更高版本
- 通用 Windows 平台 10.0.16299 或更高版本
.NET Standard 2.1 中的新增功能
.NET Standard 2.1 向标准版添加许多 API。 其中一些 API 是新 API,其他 API 是有助于进一步聚合 .NET 实现的现有 API。 有关添加到 .NET Standard 2.1 的 API 列表,请参阅 .NET Standard 2.1 与 2.0。
有关详细信息,请参阅宣布推出 .NET Standard 2.1 博客文章。
.NET Standard 2.0 中的新增功能
.NET Standard 2.0 新增了以下功能。
大幅扩展了 API 集
.NET Standard 版本 1.6 中包含了相对较小的一部分 API。 不包含的 API 许多都是 .NET Framework 或 Xamarin 中的常用 API。 这样一来,开发变得更为棘手,因为开发人员必须在开发定目标到多个 .NET 实现的应用和库时,寻找常用 API 的合适替代项。 为了消除此限制,.NET Standard 2.0 向 Standard 旧版本 .NET Standard 1.6 中的可用 API 补充了 20,000 多个 API。 有关添加到 .NET Standard 2.0 的 API 列表,请参阅 .NET Standard 2.0 与 1.6。
.NET Standard 2.0 的 System 命名空间中新增的一些功能包括:
- 支持 AppDomain 类。
- 更好地支持通过 Array 类中的附加成员处理数组。
- 更好地支持通过 Attribute 类中的附加成员处理属性。
- 改进了日历支持,并附加了 DateTime 值的格式设置选项。
- 附加了 Decimal 舍入功能。
- 在 Environment 类中附加了功能。
- 增强了通过 GC 类控制垃圾回收器。
- 增强了 String 类中的字符串比较、枚举和规范化支持。
- TimeZoneInfo.AdjustmentRule 和 TimeZoneInfo.TransitionTime 类支持夏令时调整和时间转换。
- 显著改进了 Type 类中的功能。
- 通过添加包含 SerializationInfo 和 StreamingContext 参数的异常构造函数,改进了对异常对象反序列化的支持。
支持 .NET Framework 库
许多库定目标到 .NET Framework,而不是 .NET Standard。 不过,这些库大多调用的是 .NET Standard 2.0 中的 API。 自 .NET Standard 2.0 起,可以使用兼容性填充码从 .NET Standard 库访问 .NET Framework 库。 此兼容性层对开发人员透明;无需执行任何操作,即可使用 .NET Framework 库。
只有一项要求就是,.NET Framework 类库调用的 API 必须是 .NET Standard 2.0 中的 API。
支持 Visual Basic
现在可以使用 Visual Basic 开发 .NET Standard 库。 安装了 .NET Core 工作负载的 Visual Studio 2019 和 Visual Studio 2017 版本 15.3 或更高版本包含 .NET Standard 类库模板。 对于使用其他开发工具和环境的 Visual Basic 开发人员,可以使用 dotnet new 命令创建 .NET Standard 库项目。 有关详细信息,请参阅 .NET Standard 库的工具支持。
.NET Standard 库的工具支持
随着 .NET Core 2.0 和 .NET Standard 2.0 发布,Visual Studio 2017 和 .NET CLI 均包含创建 .NET Standard 库所需的工具支持。
如果安装含 .NET Core 跨平台开发工作负荷 的 Visual Studio,可以使用项目模板创建 .NET Standard 2.0 库项目,如下图所示:
- C#
- Visual Basic
如果使用的是 .NET CLI,可以运行下面的 dotnet new 命令,以创建以 .NET Standard 2.0 为目标的类库项目:
dotnet new classlib