本文主要阐述 .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.0 | C# 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 项目。