微软2023-10-10 发布了 .NET 8 RC 2,下一站是.NET 8正式发布,就在下个月Net Conf 2023[1](11月14日)期间正式发布,我们也开始筹备第四届中国.NET开发者峰会了。 经过长达一年时间的开发,.NET 8 规划的所有主要的新功能都已推出,.NET 8 及其所有组件现在距离正式发布还有一个月的时间,接下来一个月,开发团队主要专注于通过改进功能和修复错误而不是引入主要的新功能来使 .NET 8 进入GA 的最终形态。
.NET 8 已准备好投入生产,但 Microsoft 建议通过 Visual Studio 17.8 预览版 3(也是今天刚刚发布的发行)对其进行测试,并建议开发人员转向预览频道内部版本[2],以试用 Visual Studio/Visual Studio Code 的 .NET 8。2023年10月,Tiobe编程语言排行榜.显示Java跌落比较明显,C#上升趋势比较明显. Tiobe官方表示,目前,差异仅为1.2%,如果趋势保持这种状态,C#将在大约2个月内超过Java。
.NET 团队今天在官方博客上发布了一系列文章来介绍.NET 8框架以及相关联的 ASP.NET Core、MAUI、EF Core 、Visual Studio 2022 17.8 的功能特性:
- ASP.NET Core Updates in .NET 8 RC2[3]
- .NET MAUI Updates in .NET 8 RC2[4]
- Visual Studio 2022 17.8 Preview 3[5]
- Entity Framework Updates in .NET 8 RC2[6]
- What's New in .NET 8[7] 中的所有新功能. 关于.NET 平台的广泛视图, 请阅读 为什么要选择-net[8].
我们通过上面这些文章来看一下 .NET 团队 如何描述其开发人员工具产品的 RC2。
.NET 8
.NET 团队在今天早晨通过文章 宣布推出 .NET 8 RC2[9] :"这是我们最后一个发布RC 版本。此版本包括适用于 .NET 包的新 NuGet 包自述文件、适用于 MSBuild 的基于 CLI 的简单项目评估、将容器发布到 tar.gz 存档以及适用于 .NET 的张量基元。"
文章提到的的亮点如下:
- 引入了 .NET 包的 NuGet 包自述文件,以便为用户提供重要信息,并帮助他们快速了解库是什么及其用途。这是开发团队努力提高 NuGet 包自述文件的采用率和质量的一部分。
- MSBuild 具有一个新的、简单的基于 CLI 的项目评估功能:
--getProperty``--getItem``--getTargetResult
,该功能可以更轻松地使用 、 和标志将 MSBuild 中的数据合并到脚本或工具中,以便于项目分析。 - SDK 容器发布工具具有一项新功能,可以直接将容器创建为 tar.gz 存档,这对于需要在推送映像之前扫描或移动Image的工作流非常有用,从而扩展了可用的部署选项。
- 引入 .NET 张量原语,增强对机器学习和数据科学操作的支持。张量原语是一组新的 API,它们引入了对张量操作的支持,这对于 AI 和机器学习工作负载至关重要。它为余弦相似性、点积、矩阵乘法等操作提供了矢量化实现。这是破例的特性发布,以前在 RC阶段是不加新特性的 。这个特性对于当前的人工智能的应用开发尤为重要,特别是开源项目Semantic kernel 也发布了1.0 beta 1[10].
此外,有关值得注意的修补程序以及更多内容的信息,请参阅 .NET 8 RC2 发行说明[11]。
MAUI
.NET 团队在文章 .NET MAUI Updates in .NET 8 RC2[4] 介绍到,今天,我们通过在.NET 8候选版本8(RC2)中发布.NET MAUI 向.NET 8正式发布(GA)更近了一步,与 RC1 一样,此版本包含在上线许可证中,因此您可以在生产应用程序中使用它时获得支持。在此版本中,我们重点关注了在整个预览版中回归的问题,并恢复了在改进热重载、视觉状态管理器、绑定和应用主题的可靠性时丢失的一些性能。
公告文章中的亮点包括:
- .NET MAUI 受上线许可证保护,并且没有与 .NET 7 相关的重大 API 更改。
- 进行了一些优化以提高Android和"Setter Specificity"的性能。
ActivityExtensions.GetWindowFrame
- 该团队修复了与 UI 元素和控件相关的几个问题,以提高跨平台的一致性和视觉准确性。
- 针对拖放功能、选项卡栏外观和某些平台行为制定了特定于平台的修复,以实现跨平台的一致用户体验。
- Microsoft发布了适用于 .NET 7 的服务版本8 (版本 7.0.96),其中包含高优先级修补程序。
- Xamarin 开发人员可以将 Xcode 15 和 Android API 34 与 Visual Studio 17.8 Preview 3 或 Visual Studio for Mac 的最新稳定版本配合使用。
有关详细信息,请参阅 .NET MAUI 发行说明[12]。
ASP.NET 核心
.NET团队在 .NET 8 RC 2 中 ASP.NET Core 更新[3]的公告文章中介绍了,开发团队在这个周期中的大部分工作都致力于 Blazor,主要使用 C# 而不是通常的主流 JavaScript 进行 Web 开发的Microsoft 的方案。该帖子特别列车了 Blazor 的 11 个项改进, 其他还包括一个组件项,两个服务器和中间件项,换句话说ASP.NET Core的核心特性都是Blazor。
对于 .NET 8,Microsoft引入了 Blazor 的一个重要新概念,即提供全栈 Web UI 的能力。 .NET团队表示,随着.NET 8的发布,Blazor是一个全栈Web UI框架,用于开发在组件或页面级别呈现内容的应用程序:
- 静态服务器呈现以生成静态 HTML。
- 使用 Blazor 服务器托管模型的交互式服务器呈现。
- 使用 Blazor WebAssembly 托管模型的交互式客户端呈现。
- 首先使用 Blazor Server 自动呈现交互式客户端,然后在下载 Blazor 捆绑包并激活 .NET WebAssembly 运行时后,在后续访问时呈现 WebAssembly。自动呈现通常提供最快的应用启动体验。
公告文章的亮点包括:
- HTTP 日志记录中间件具有持续时间日志记录、组合日志和自定义拦截器等新功能。
- IdentityModel 库已更新到版本 7x,这提高了性能、一致性和本机 AOT 兼容性。
- 最小 API 和 Blazor 的表单绑定现在支持具有属性的类型。
IFormFile
- SignalR TypeScript 客户端现在支持有状态重新连接,从而减少出现临时网络问题的客户端的停机时间。
- Blazor Web 应用模板具有用于全局或按页面启用交互式呈现模式以及使用 Blazor 标识 UI 的新选项。
- Blazor WebAssembly 独立应用模板已重命名和更新,以支持没有 ASP.NET 核心服务器的静态网站托管。
@rendermode
现在可以在文件范围内应用 Razor 指令,以在组件定义上指定呈现模式。- Blazor 的增强导航和表单处理已通过新的属性和事件进行了改进,以控制和自定义行为。
- 已实现交互式服务器组件的电路关闭,以便在页面上没有剩余的交互式组件时释放服务器资源。
- Blazor 中的表单模型绑定现在遵循数据协定属性,用于自定义表单数据绑定到模型的方式。
HttpContext
现在可以作为级联参数从静态服务器组件进行访问。- 该服务现在可用于在 Blazor Web 应用中保留和读取组件状态。
PersistentComponentState
- 该属性现在支持使用该属性注入密钥服务。
[Inject]``InjectAttribute.Key
- 对话框元素现在支持 Blazor 中的取消和关闭事件。
更多信息可在新更新的"ASP.NET Core 8.0 新增功能[13]"文档中找到。
EF Core 8
EF8 Core 的公告帖子 Entity Framework Updates in .NET 8 RC2[6] 重点介绍了对象关系映射器 (ORM) 产品/服务中的"包含的一些较小功能",尽管它还包含指向68 项针对.NET 8的改进。
公告文章的亮点包括:
- EF Core 8 需要 .NET 8,此 RC 2 版本应与 .NET 8 RC 2 SDK 一起使用。
- EF Core 8 将与 .NET 8 作为长期支持 (LTS) 版本保持一致。
- EF Core 8 引入了以下新功能:
- 更改具有数据库默认值的属性的哨兵值(sentinel)
- 支持访问多个实体类型的更新
- 使用 SQL 而不是 SQL 改进查询 替换
IN``EXISTS
- 将列映射到 或 属性
rowversion``long``ulong
- 消除生成的 SQL 中不必要的括号
有关详细信息,请参阅"EF Core 8 中的新增功能[14]"文档和 EF Core 路线图[15]。
总结
在 .NET 8 发布的过程中,我们衷心感谢世界各地所有充满激情的 .NET 开发人员,他们挺身而出探索和测试预览版和候选版本。您对 .NET 生态系统的奉献非常宝贵,您的反馈在确保此最新版本的可靠性和健壮性方面发挥了关键作用。感谢您成为这一激动人心的旅程的重要组成部分,我们迫不及待地想看看你将通过 .NET 8 带来什么。.NET团队特别列出了以下特性来自于社区的反馈和贡献:
- ASP.NET Core. 重新考虑在 .NET 8 中默认启用 HTTP/3[16]
- Blazor. 围绕 Blazor WebAssembly 的项目结构和 TFM 更改了整个计划[17]
- Runtime. 点亮更新的 ARM64 硬件功能[18] 和 更新 Marshal.QueryInterface[19].
- 软件开发工具包 改进了简化的输出路径[20]并完善了终端记录器
相关链接:
- [1]Net Conf 2023:https://dotnetconf.net/
- [2]预览频道内部版本:https://visualstudio.com/preview
- [3]ASP.NET Core Updates in .NET 8 RC2:https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-dotnet-8-rc-2
- [4]NET MAUI Updates in .NET 8 RC2: https://devblogs.microsoft.com/dotnet/announcing-dotnet-maui-in-dotnet-8-rc-2
- [5] Visual Studio 2022 17.8 Preview 3:https://aka.ms/vs/v178P3
- [6]Entity Framework Updates in .NET 8 RC2 https://devblogs.microsoft.com/dotnet/announcing-ef8-rc2
- [7]What's New in .NET https://learn.microsoft.com/dotnet/core/whats-new/dotnet-8
- [8]为什么要选择-net https://devblogs.microsoft.com/dotnet-ch/%e4%b8%ba%e4%bb%80%e4%b9%88%e8%a6%81%e9%80%89%e6%8b%a9-net/
- [9]宣布推出 .NET 8 RC2: https://devblogs.microsoft.com/dotnet/announcing-dotnet-8-rc2/
- [10]开源项目Semantic kernel 也发布了1.0 beta 1: https://devblogs.microsoft.com/semantic-kernel/introducing-the-v1-0-0-beta1-for-the-net-semantic-kernel-sdk/
- [11].NET 8 RC2 发行说明 https://github.com/dotnet/core/blob/main/release-notes/8.0/preview/8.0.0-rc.2.md
- [12].NET MAUI 发行说明 https://github.com/dotnet/maui/releases/tag/8.0.0-rc.2.9373
- [13]ASP.NET Core 8.0 新增功能: https://learn.microsoft.com/en-us/aspnet/core/release-notes/aspnetcore-8.0?view=aspnetcore-8.0
- [14]EF Core 8 中的新增功能: https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-8.0/whatsnew
- [15]EF Core 路线图: https://learn.microsoft.com/en-us/ef/core/what-is-new/
- [16]重新考虑在 .NET 8 中默认启用 HTTP/3: https://github.com/dotnet/aspnetcore/issues/50131
- [17]围绕 Blazor WebAssembly 的项目结构和 TFM 更改了整个计划: https://github.com/dotnet/aspnetcore/issues/49079
- [18]点亮更新的 ARM64 硬件功能:https://github.com/dotnet/runtime/issues/89937
- [19]更新 Marshal.QueryInterface: https://github.com/dotnet/runtime/issues/91981
- [20]改进了简化的输出路径: https://devblogs.microsoft.com/dotnet/announcing-dotnet-8-preview-4/#sdk-simplified-output-path-updates