当前位置: 首页 > news >正文

.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 增强功能:新的 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 中新增了对路由语法进行突出显示的支持。

有关详细信息,请参阅 .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_0city)。
    • 添加了对使用 DatePart.Microsecond 和 DatePart.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 中的新增功能。

相关文章:

  • 微信小程序直传阿里云 OSS 实践指南(V4 签名 · 秒传支持 · 高性能封装)
  • FlinkSql入门与实践
  • Virtuoso ADE采用Spectre仿真中出现MOS管最小长宽比满足要求依然报错的情况解决方法
  • https详解
  • mac brew 无法找到php7.2 如何安装php7.2
  • 深度解析:从12306看混合云架构下的高并发系统设计
  • 二十一、SQL Server数据库的备份(手动定时)和还原
  • Docker Macvlan网络配置实战:解决“network already exists“错误
  • IPv6 技术细节 | 源 IP 地址选择 / Anycast / 地址自动配置 / 地址聚类分配
  • 如何使用SeedProd创建无缝的WordPress维护页面
  • 某地农产品交易中心钢网架自动化监测项目
  • 附1:深度解读:《金融数据安全 数据安全分级指南》——数据分类的艺术专栏系列
  • 【EDA】Floorplanning(布局规划)
  • Properties配置文件
  • .NET写的开源工业物联网网关(IoTGateway)
  • 《Pinia实战》8.核心概念 更真实的示例
  • 光谱相机如何提升目标检测与识别精度
  • Babylon.js 材质统一转换指南:将 AssetContainer 中的所有材质转换为 PBRMetallicRoughnessMaterial
  • 【Go语言】RPC 使用指南(初学者版)
  • Python-Agent调用多个Server-FastAPI版本
  • 珠海市香洲区原区长刘齐英落马,此前已被终止省人大代表资格
  • 远程控制、窃密、挖矿!我国境内捕获“银狐”木马病毒变种
  • 美联储官员:若特朗普高额关税致失业率飙升,将支持降息
  • 海关总署牵头部署开展跨境贸易便利化专项行动
  • 为博流量编造上海车展谣言,造谣者被公安机关依法行政处罚
  • 央行上海总部答澎湃:上海辖内金融机构已审批通过股票回购增持贷款项目117个