.NET 10 中的新增功能
.NET 运行时
.NET 10 运行时引入了新功能和性能改进。 关键更新包括:
- 数组接口方法反虚拟化:JIT 现在可以取消虚拟化和内联数组接口方法,从而提高数组枚举的性能。
- 数组枚举去抽象化:改进功能以通过枚举器减少数组迭代的抽象开销,从而实现更好的函数内联和栈分配。
- 后期非虚拟化方法的内联:JIT 现在可内联方法;而由于以前的内联功能,这些方法现在可实现非虚拟化。
- 基于内联观察的去虚拟化:JIT 使用内联中的精确类型信息使后续调用去虚拟化。
- 值类型的数组的堆栈分配:没有 GC 指针的小型固定大小的数组现在可以进行堆栈分配。
- AVX10.2 支持:为基于 x64 的处理器引入了对高级矢量扩展 (AVX) 10.2 的支持,但目前默认禁用。
- NativeAOT 增强功能:支持在 NativeAOT 的类型预初始化器中进行强制转换和求反。
有关详细信息,请参阅 .NET 10 运行时 中的新增功能。
.NET 库
.NET 10 库引入了多项新功能和改进,包括:
- 按 SHA-1 以外的指纹查找证书:新方法允许使用哈希算法(如 SHA-256)查找证书。
- 在 ASCII/UTF-8 中查找 PEM 编码数据:PEM 编码 API 现在支持直接从 ASCII/UTF-8 数据读取。
- 面向 DateOnly 的 ISOWeek 支持:ISOWeek 类中的新重载支持 DateOnly 类型。
- 用于跨度的字符串规范化 API:新的 API 允许 Unicode 字符串规范化处理字符跨度,从而减少内存分配。
- 字符串比较的数字顺序:新 CompareOptions.NumericOrdering 选项启用数值字符串比较。
- 新的 TimeSpan.FromMilliseconds 重载:单参数重载解决了 LINQ 表达式的问题。
- ZipArchive 性能改进:优化可减少内存使用量,并提高模式和并行提取的性能ZipArchive
Update
。 - OrderedDictionary 增强功能:新的
TryAdd
与TryGetValue
重载会返回用于快速访问的索引。 - JSON 序列化更新:源代码生成器现在允许在
ReferenceHandler
中指定JsonSourceGenerationOptionsAttribute。 - 左手系矩阵变换:用于创建左手系变换矩阵的新 API。
- PKCS#12 导出增强功能:新方法允许指定 PKCS#12/PFX 导出的加密和摘要算法。
有关详细信息,请参阅 .NET 10 库中的新增功能。
.NET SDK
.NET 10 SDK 引入了以下新功能和增强功能,包括:
- 删除框架提供的包引用:自动删除未使用的框架提供的包引用,减少生成时间和磁盘使用率。
- 更一致的命令顺序:CLI 命令的新名词优先别名
dotnet
可提高可读性和一致性。
有关详细信息,请参阅 SDK for .NET 10 中的新增功能。
.NET Aspire
.NET Aspire 发布 9.1 版本,重点在于优化用户体验。
有关详细信息,请参阅 .NET Aspire 9.1中的新增功能。
ASP.NET Core
ASP.NET Core 10.0 版本引入了多项新功能和增强功能,包括:
-
Blazor 增强功能:
- 将
ReconnectModal
组件添加到 Blazor Web App 项目模板,改进了重新连接 UI 控件。 NavigateTo
方法在同页导航时不再自动滚动到顶部。- 组件
NavLink
现在在使用NavLinkMatch.All
时忽略查询字符串和片段。 - 向
QuickGrid
添加了RowClass
参数,以根据行数据将样式应用于行。 - 向
QuickGrid
添加了CloseColumnOptionsAsync
方法,以便以编程方式关闭列选项。 - Blazor 框架脚本现在作为启用了预压缩和指纹的静态 Web 资源提供。
- 将
-
OpenAPI 改进:
- 添加了对生成 OpenAPI 版本 3.1 文档的支持。
- 添加了对以 YAML 格式提供 OpenAPI 文档的支持。
- 将 XML 文档注释填充到 OpenAPI 文档中。
-
最小 API:
- 改进了使用顶级语句的应用的集成测试。
- 表单提交中的空字符串现在会被视为可为 Null 的值类型的
null
。
-
身份验证和授权:
- 添加了用于身份验证和授权事件的新指标。
-
杂项:
- 添加了用于检测本地 URL 的
RedirectHttpResult.IsLocalUrl
辅助方法。 - 在 RouteAttribute 中新增了对路由语法进行突出显示的支持。
- 添加了用于检测本地 URL 的
有关详细信息,请参阅 .NET 10 中 ASP.NET Core 的新增功能。
C# 14
C# 14 引入了多项新功能和增强功能,以提高开发人员的工作效率和代码质量。 关键更新包括:
- 字段支持的属性:提供从自动实现的属性到编写自定义
get
和set
访问器的更流畅的路径。 现在可以使用上下文关键字访问field
编译器生成的后盾字段。 - 未绑定泛型支持
nameof
:表达式nameof
现在支持未绑定泛型类型,例如List<>
,返回类型的名称而无需类型参数。 - 隐式跨度转换:为附带新的隐式转换的
Span<T>
和ReadOnlySpan<T>
引入了一流支持,以便让使用这些类型的编程更为自然。 - 简单 lambda 参数的修饰符:允许参数修饰符(例如
ref
,in
或在out
lambda 表达式中)不指定参数类型。 - 实验功能 - 数据部分中的字符串文本:允许将字符串文本作为 UTF-8 数据发出到 PE 文件的单独部分,从而提高某些方案的效率。
- 部分事件和构造函数:添加了对部分实例构造函数和部分事件的支持,并补充了 C# 13 中引入的部分方法和属性。
有关详细信息,请参阅 C# 14中的新增功能。
.NET MAUI
.NET 10 中的 .NET MAUI 更新包括适用于 .NET MAUI、适用于 Android 的 .NET 以及适用于 iOS、Mac Catalyst、macOS 和 tvOS 的 .NET 的多项新功能和质量改进。 关键更新包括:
-
常规改进:
- 用于在
VisualElement
上将格式化后的字符串转换为Shadow
的新ShadowTypeConverter
。 - 添加了
SpeechOptions.Rate
用于控制文本转语音中的播放速率。 - 支持在 iOS 和 Mac Catalyst 上将模态窗口样式设为弹出样式。
- 添加了
Switch.OffColor
用于在关闭时自定义控件颜色Switch
。 - 添加了
SearchBar.SearchIconColor
用于自定义搜索图标的颜色。 - 无需泛型参数即可调用 JavaScript 的新
HybridWebView.InvokeJavascriptAsync
方法。
- 用于在
-
弃用功能:
FontImageExtension
XAML 标记扩展已弃用。 请改用FontImageSource
。MessagingCenter
现在为内部功能。 将其替换为CommunityToolkit.Mvvm
包中的WeakReferenceMessenger
。
-
适用于 Android 的 .NET:
- 支持 Android 16 (API-36) Beta 1。
- 已将建议的最低支持 Android API 更新为 24 (Nougat)。
- 支持使用 JDK-21 进行构建。
- 添加了对 Android 项目中
dotnet run
的支持。 - 默认启用封送方法以提高启动性能。
- 设计时生成不再调用
aapt2
,从而缩短生成时间。
-
适用于 iOS、Mac Catalyst、macOS、tvOS 的 .NET:
- 剪裁器警告现在默认处于启用状态。
- 库中的原始资源捆绑功能现在可选择不使用。
有关详细信息,请参阅 .NET 10 中 .NET MAUI 的新增功能。
EF Core
EF Core 10 版本引入了多项新功能和改进,包括:
-
LINQ 增强功能:
- 添加了对
LeftJoin
运算符的支持,简化了需要LEFT JOIN
操作的 LINQ 查询。 - 添加了对
RightJoin
运算符的支持,启用需要RIGHT JOIN
操作的 LINQ 查询。
- 添加了对
-
ExecuteUpdateAsync 改进:
ExecuteUpdateAsync
现在接受常规的非表达式 lambda,从而在更新实体时降低冗长度。
-
性能优化:
- 改进了
DateOnly.ToDateTime(timeOnly)
的翻译。 - 优化了多个连续的
LIMIT
操作。 - 增强了
ICollection<T>
上Count
操作的性能。 - 优化了
DISTINCT
上的MIN
/MAX
操作。
- 改进了
-
杂项:
- SQL 查询中的参数名称简化(例如,从
@__city_0
到city
)。 - 添加了对使用
DatePart.Microsecond
和DatePart.Nanosecond
的日期/时间函数的翻译。 - 使 SQL Server 基架与 Azure 数据资源管理器兼容。
- SQL 查询中的参数名称简化(例如,从
有关详细信息,请参阅 EF Core for .NET 10中的新增功能。
F#
.NET 10 中的 F# 更新包括语言、标准库和编译器服务的多项新功能和改进。 关键更新包括:
-
F# 语言:
- 新的语言功能需要在文件中启用
<LangVersion>preview</LangVersion>
项目属性.fsproj
。 这些功能成为 .NET 10 版本的默认功能。
- 新的语言功能需要在文件中启用
-
FSharp.Core 标准库:
FSharp.Core
标准库的更改会自动应用于使用新 SDK 编译的项目,除非显式了固定较低的FSharp.Core
版本。
-
FSharp.Compiler.Service:
- 编译器实现中的常规改进和 bug 修复。
有关详细信息,请参阅 F# 发行说明。
Visual Basic
.NET 10 中的 Visual Basic 更新包括以下功能和增强功能:
unmanaged
约束支持:Visual Basic 编译器现在解释并强制实施unmanaged
泛型约束,从而更好地与运行时 API 兼容。- 遵循重载解析优先级:Visual Basic 编译器依照此 OverloadResolutionPriorityAttribute,优先选择性能更好的基于 Span 的重载,并解决方法重载间的歧义。
这些更新可确保 Visual Basic 可以在 C# 和运行时中使用更新的功能,从而提高兼容性和性能。
有关详细信息,请参阅 Visual Basic 中的新增功能。
Windows 窗体
适用于 .NET 10 的 Windows 窗体中的更改包括:
-
与剪贴板相关的更新:
- 引入了新的 API,用于从剪贴板进行 JSON 序列化和类型安全的数据检索,例如
SetDataAsJson<T>
和TryGetData<T>
。 - 将多个与剪贴板相关的 API 标记为已过时,以警告开发人员潜在的
BinaryFormatter
使用情况。 - 添加了配置开关 (
Windows.ClipboardDragDrop.EnableUnsafeBinaryFormatterSerialization
) 以为剪贴板场景显式启用BinaryFormatter
。 - 使用 WPF 统一剪贴板代码来提高一致性和可靠性。
- 引入了新的 API,用于从剪贴板进行 JSON 序列化和类型安全的数据检索,例如
-
移植的 UITypeEditors:
- 从 .NET Framework 移植了多个
UITypeEditors
,其中包括与DataGridView
控件相关的ToolStripCollectionEditor
和编辑器。
- 从 .NET Framework 移植了多个
-
质量增强功能:
- 扩展了单元测试覆盖范围并解决了各种 bug 修复,以提高稳定性和性能。
有关详细信息,请参阅 .NET 10 的 Windows 窗体中的新增功能。
WPF(Windows Presentation Foundation)
.NET 10 中的 WPF 更新包括多项性能改进、Fluent 样式更改、bug 修复和工程运行状况更新:
-
性能改进:
- 将数据结构从
PartialList
替换为ReadOnlyCollection
以提升性能。 - 优化 UI 自动化和文件对话框操作,以最大程度地减少资源分配。
- 改进了像素格式转换性能。
- 将数据结构从
-
Fluent 样式更改:
- 更新了
Label
的默认样式。 - 通过调整
KeyTime
值修复了Expander
的动画问题。
- 更新了
-
Bug 修复:
- 解决了 UI 元素游标类型的问题以及当位图流为 null 时导致的崩溃问题。
- 修复了
ScrollViewer
和 . 的ContextMenu
本地化问题。 - 解决了
BitmapMetadata
和本地依赖项中的次要 bug。
-
工程运行状况:
- 跨 WPF 组件更新并同步了 MilCodeGen。
- 删除了弃用的 .NET 运行时引用和不必要的包依赖项。
- 对生成的代码进行样式清理并禁用了代码分析,以简化构建过程。
有关详细信息,请参阅 .NET 10 中的 WPF 中的新增功能。