.NET Core各个版本对比(二)

320 阅读5分钟

本文主要阐述 .NET Core 3.0新增功能,功能有点多。

.NET Core 2.2

.NET Core 2.2 包括在应用程序部署、运行时服务的事件处理、Azure SQL 数据库的身份验证、JIT 编译器性能,以及执行 Main 方法之前的代码注入方面的增强功能。

.NET Core 3.0

.NET Core 3.0 于 2019年9月发布,重点是增加对同时支持使用 Windwos Forms、WPF 和 Entity Frmamework6.3 构建 Windows 桌面应用程序的支持、应用程序本地部署、快速JSON阅读器、串口访问和物联网(IoT)解决方案的其他PIN访问以及默认情况下的分级编译。

功能说明
语言改进 C# 8.0C# 8.0 也是该发布的一部分,包含可为空引用类型功能、异步流和更多模式。 有关 C# 8.0 功能的详细信息,请参阅 C# 8.0 中的新增功能
.NET Standard 2.1如果使用 Visual Studio,则需要 Visual Studio 2019,这是因为 Visual Studio 2017 不支持 .NET Standard 2.1 或 .NET Core 3.0 。
默认可执行文件.NET Core 现在默认生成依赖于框架的可执行文件
macOS appHost 和公证仅 macOS
单文件可执行文件dotnet publish 命令支持将应用打包为特定于平台的单文件可执行文件。 该可执行文件是自解压缩文件,包含运行应用所需的所有依赖项(包括本机依赖项)。 首次运行应用时,应用程序将根据应用名称和生成标识符自解压缩到一个目录中。 再次运行应用程序时,启动速度将变快。 除非使用了新版本,否则应用程序无需再次进行自解压缩。
程序集剪裁.NET core 3.0 SDK 随附了一种工具,可以通过分析 IL 并剪裁未使用的程序集来减小应用的大
分层编译.NET Core 3.0 中默认启用了分层编译 (TC)。 此功能使运行时能够更适应地使用实时 (JIT) 编译器来实现更好的性能
ReadyToRun 映像可以通过将应用程序集编译为 ReadyToRun (R2R) 格式来改进.NET Core 应用程序的启动时间。 R2R 是一种预先 (AOT) 编译形式。
跨平台/体系结构限制ReadyToRun 编译器当前不支持跨目标。 必须在给定的目标上编译。 例如,如果想要 Windows x64 R2R 映像,需要在该环境中运行发布命令。
主要版本运行时前滚.NET Core 3.0 引入了一项选择加入功能,该功能允许应用前滚到 .NET Core 最新的主要版本。 此外,还添加了一项新设置来控制如何将前滚应用于应用。
生成会复制依赖项dotnet build 命令现在将应用程序的 NuGet 依赖项从 NuGet 缓存复制到生成输出文件夹。 此前,依赖项仅作为 dotnet publish 的一部分复制。
本地工具.NET Core 3.0 引入了本地工具。 本地工具类似于全局工具,但与磁盘上的特定位置相关联。 本地工具在全局范围内不可用,并作为 NuGet 包进行分发。
新 global.json 选项global.json 文件包含新选项,当你尝试定义所使用的 .NET Core SDK 版本时,这些选项可提供更大的灵活性
垃圾回收堆大小减小垃圾回收器的默认堆大小已减小,以使 .NET Core 使用更少的内存
.NET Core SDK Windows Installer用于 Windows 的 MSI 安装程序已从 .NET Core 3.0 开始更改。 SDK 安装程序现在将对 SDK 功能区段版本进行就地升级。 功能区段在版本号的补丁部分中的百数组中定义。 例如,3.0.101 和 3.0.201 是两个不同功能区段中的版本,而 3.0.101 和 3.0.199 则属于同一个功能区段。 并且,当安装 .NET Core SDK 3.0.101 时,将从计算机中删除 .NET Core SDK 3.0.100 (如果存在)。 当 .NET Core SDK 3.0.200 安装在同一台计算机上时,不会删除 .NET Core SDK 3.0.101 。
Windows 桌面.NET Core 3.0 支持使用 Windows Presentation Foundation (WPF) 和 Windows 窗体的 Windows 桌面应用程序。 这些框架还支持通过 XAML 岛从 Windows UI XAML 库 (WinUI) 使用新式控件和 Fluent 样式。
创建 COM 组件在 Windows 上,现在可以创建可调用 COM 的托管组件。 在将 .NET Core 与 COM 加载项模型结合使用,以及使用 .NET Framework 提供奇偶校验时,此功能至关重要。
Windows 本机互操作
MSIX 部署MSIX 是新的 Windows 应用程序包格式。 可以使用它将 .NET Core 3.0 桌面应用程序部署到 Windows 10。
适用于 Linux 的 SerialPort.NET Core 3.0 提供对 Linux 上 System.IO.Ports.SerialPort 的基本支持。
Linux下 Docker 和 cgroup 内存限制在 Linux 上使用 Docker 运行 .NET Core 3.0 时,可更好地应对 cgroup 内存限制。 运行具有内存限制的 Docker 容器(例如使用 docker run -m)会更改 .NET Core 的行为方式。
Arm64 Linux 支持Arm64 的主要用例是当前的 IoT 场景
对 Raspberry Pi 的 GPIO 支持
Linux 上的 TLS 1.3 和 OpenSSL 1.1.1.NET Core 现在可以在给定环境中使用 OpenSSL 1.1.1 中的 TLS 1.3 支持
加密密码.NET Core 3.0 增加了对 AES-GCM 和 AES-CCM 密码的支持
加密密钥导入/导出.NET Core 3.0 支持从标准格式导入和导出非对称公钥和私钥。 你不需要使用 X.509 证书。

.NET Core 3.1

此版本包含对 .NET Core 3.0 的细微改进,重点介绍小型但重要的修复。 .NET Core 3.1 中最重要的特性是长期支持 (LTS) 版本。强烈建议将应用移动到最新的 LTS 版本

如果使用的是 Visual Studio 2019,则必须更新到 Visual Studio 2019 版本 16.4 或更高版本才能使用 .NET Core 3.1 项目。