.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 性能改进 :优化可减少内存使用量,并提高模式和并行提取的性能ZipArchiveUpdate
  • OrderedDictionary 增强功能 :新的 TryAddTryGetValue 重载会返回用于快速访问的索引。
  • 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 中新增了对路由语法进行突出显示的支持。

有关详细信息,请参阅 .NET 10 中 ASP.NET Core 的新增功能

C# 14

C# 14 引入了多项新功能和增强功能,以提高开发人员的工作效率和代码质量。 关键更新包括:

  • 字段支持的属性 :提供从自动实现的属性到编写自定义 getset 访问器的更流畅的路径。 现在可以使用上下文关键字访问 field 编译器生成的后盾字段。
  • 未绑定泛型支持 nameof :表达式 nameof 现在支持未绑定泛型类型,例如 List<>,返回类型的名称而无需类型参数。
  • 隐式跨度转换 :为附带新的隐式转换的 Span<T>ReadOnlySpan<T> 引入了一流支持,以便让使用这些类型的编程更为自然。
  • 简单 lambda 参数的修饰符 :允许参数修饰符(例如 refin或在 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_0city)。
    • 添加了对使用 DatePart.MicrosecondDatePart.Nanosecond 的日期/时间函数的翻译。
    • 使 SQL Server 基架与 Azure 数据资源管理器兼容。

有关详细信息,请参阅 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 统一剪贴板代码来提高一致性和可靠性。
  • 移植的 UITypeEditors

    • 从 .NET Framework 移植了多个 UITypeEditors,其中包括与 DataGridView 控件相关的 ToolStripCollectionEditor 和编辑器。
  • 质量增强功能

    • 扩展了单元测试覆盖范围并解决了各种 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 中的新增功能

相关推荐
o0向阳而生0o5 小时前
28、.NET 中元数据是什么?
microsoft·c#·.net
冰茶_8 小时前
.NET MAUI 发展历程:从 Xamarin 到现代跨平台应用开发框架
学习·microsoft·微软·c#·.net·xamarin
醉酒的李白、9 小时前
.NET仓储层在 using 块中创建 SqlSugarClient 的风险
.net·仓储模式设计
Iotfsd16 小时前
.NET写的开源工业物联网网关(IoTGateway)
物联网·c#·.net·dotnet·边缘网关·雾计算·工业物联网智能网关
界面开发小八哥1 天前
界面开发框架DevExpress XAF实践:如何在Blazor项目中集成.NET Aspire?(二)
.net·界面控件·devexpress·ui开发·xaf
码观天工3 天前
C#高性能开发之类型系统:从C# 7.0 到C# 14的类型系统演进全景
性能优化·c#·.net·memory·高性能·record·c#14·类型系统
程序员秘密基地3 天前
基于c#,wpf,ef框架,sql server数据库,音乐播放器
sql·sqlserver·c#·.net·wpf
Zhen (Evan) Wang3 天前
.NET 6 WPF 利用CefSharp.Wpf.NETCore显示PDF文件
.net·wpf·.netcore