.NET 10 中 Windows Forms 的新特性
.NET 10 中的 Windows Forms 引入了剪贴板序列化和反序列化方面的更改,这与逐步淘汰 BinaryFormatter 的整体工作相一致。此外,还引入了新的 API 来促进基于 JSON 的剪贴板操作,为数据交换提供了一种更安全、更现代的方法。
剪贴板序列化和反序列化的变化
在.NET 9 中,BinaryFormatter 已被弃用,这影响了某些依赖它的剪贴板操作。为了便于过渡,.NET 10 引入了以下内容:
- 1. 已弃用的剪贴板方法:一些依赖 BinaryFormatter 的剪贴板方法现在被标记为已弃用,不鼓励使用它们。
- 2. 新的基于 JSON 的剪贴板 API:为了替代已弃用的方法,.NET 10 引入了新的 API,这些 API 允许使用 JSON 对剪贴板数据进行序列化和反序列化,从而无需使用 BinaryFormatter。
这些变化增强了安全性和兼容性,同时鼓励开发人员在剪贴板操作中采用现代序列化技术。
.NET 10 中的 Windows Forms 为剪贴板处理带来了重要更新:
- • 已弃用的剪贴板方法不鼓励使用 BinaryFormatter。
- • 新的基于 JSON 的 API 为剪贴板序列化提供了现代且安全的方法。
这些改进使 Windows Forms 应用程序更加安全且面向未来,符合.NET 提高安全性和可维护性的长期目标。
.NET 10 中 WPF 的新特性
.NET 10 中的 Windows 演示基础(WPF)包含了一些小的补丁和错误修复,重点关注稳定性、测试改进以及清理旧有的安全属性。虽然此版本没有引入重大的新功能,但它提高了 WPF 应用程序的可维护性和可靠性。
测试和稳定性改进
- 1. 扩展的单元测试覆盖范围:为 System.Xaml 和 WindowsBase 添加了超过 4000 个新的单元测试,提高了测试覆盖率并确保了更高的可靠性。
- 2. Fluent 主题修复:解决了 Fluent 主题中的问题,包括影响可访问性和用户界面一致性的高对比度模式崩溃问题。
- 3. 代码访问安全(CAS)清理:.NET 10 继续移除过时的 CAS 相关代码的过程,简化了 WPF 的安全模型。
关键变化:
- • 从所有库中移除了未使用的 CAS 资源字符串及其翻译。
- • 从以下内容中移除了过时的 CAS 和 XBAP(XAML 浏览器应用程序)代码:
- • OleCmdHelper/ISecureCommand
- • FontSourceCollection/FontSource
这些变化有助于降低 WPF 代码库的复杂性并提高其可维护性。
.NET 10 中的不兼容变更
由于在.NET Core 库、全球化、密码学和 Windows Forms 等各个领域存在不兼容的变更,迁移到.NET 10 可能需要进行一些调整。
每个变更可归为以下类别之一:
- • 二进制不兼容:现有的二进制文件可能无法在新的运行时中加载或执行,需要重新编译。
- • 源代码不兼容:代码可能需要进行修改才能使用新的 SDK 或运行时进行编译。
- • 行为变更:应用程序在运行时的行为可能会有所不同,可能需要更新代码。
.NET Core 库
- 1. 使用非默认诊断 ID 的 API 弃用:
- • 类型:源代码不兼容
- • 引入版本:预览版 1
- • 一些 API 弃用现在使用非默认的诊断标识符,可能需要进行更新以以不同方式抑制或处理警告。
- 2. ActivitySource.CreateActivity 和 ActivitySource.StartActivity 的变更:
- • 类型:行为变更
- • 引入版本:预览版 1
- • 活动创建和启动的行为已进行调整,以提供更一致的跟踪行为。
- 3. C# 14 中带有 Span 参数的重载解析:
- • 类型:行为变更
- • 引入版本:预览版 1
- • C# 14 中的重载解析现在对 Span 和 ReadOnlySpan 参数的处理方式不同,这可能会导致现有代码中的方法解析发生变化。
- 4. 泛型数学中的一致移位行为:
- • 类型:行为变更
- • 引入版本:预览版 1
- • 泛型数学中的按位移位操作已更新,以确保在不同平台上的解释一致。
- 5. 更严格的 LDAP DirectoryControl 解析:
- • 类型:行为变更
- • 引入版本:预览版 1
- • 现在对 LDAP DirectoryControl 对象的解析更加严格,这可能会影响依赖不太结构化输入数据的应用程序。
- 6. MacCatalyst 版本规范化:
- • 类型:行为变更
- • 引入版本:预览版 1
- • MacCatalyst 版本现在已规范化,确保在针对该平台时具有一致的版本格式。
全球化
- 1. 环境变量重命名为 DOTNET_ICU_VERSION_OVERRIDE:
- • 类型:行为变更
- • 引入版本:预览版 1
- • 以前用于覆盖 ICU 版本的环境变量已重命名,依赖它的配置需要进行更新。
密码学
- 1. 对 X500DistinguishedName 更严格的验证:
- • 类型:行为变更
- • 引入版本:预览版 1
- • 现在对 X500DistinguishedName 的解析和验证遵循更严格的安全规则,可能会影响依赖更宽松验证的应用程序。
- 2. 环境变量重命名为 DOTNET_OPENSSL_VERSION_OVERRIDE:
- • 类型:行为变更
- • 引入版本:预览版 1
- • 用于覆盖 OpenSSL 版本的环境变量已重命名,系统配置需要进行更新。
Windows Forms
- 1. HtmlElement.InsertAdjacentElement 中重命名的参数:
- • 类型:源代码不兼容
- • 引入版本:预览版 1
- • HtmlElement 的 InsertAdjacentElement 方法中的一个参数已重命名,使用此方法的代码可能需要更新。
- 2. TreeView 中复选框图像的截断:
- • 类型:行为变更
- • 引入版本:预览版 1
- • TreeView 中复选框图像的渲染方式已更改,可能会影响用户界面布局。
总结:.NET 10 已来,未来可期!
有了.NET 10,我们拥有了一个更快、更智能、更高效的平台,能够应对现代开发挑战。无论是运行时性能的提升、C# 14 的新特性、ASP.NET Core 的增强功能,还是 SDK 中更好的工具,这个版本都为开发人员带来了改变游戏规则的更新。
作为一个长期支持(LTS)版本,.NET 10 是生产应用程序的安全可靠选择,在推动框架向前发展的同时确保了长期稳定性。如果你还没有尝试过,不妨体验一下,看看它如何提升你的工作流程并优化你的应用程序。
但是安全方面呢?🔐
有了所有这些新功能和改进,你如何在你的.NET 应用程序中处理安全问题呢?从代码保护到密钥管理、日志监控和安全存储,确保你的软件受到保护比以往任何时候都更加重要。
- • ByteHide Shield — 先进的混淆和运行时保护,让你的.NET 代码免受逆向工程的威胁。
- • ByteHide Secrets — 直接在你的.NET 应用程序中安全管理密钥。
- • ByteHide Logs — 实时日志记录和监控,检测威胁和漏洞。
- • ByteHide Storage — 为敏感应用程序数据提供加密存储解决方案。
.NET 10 带来了大量的改进,但归根结底,任何新版本最精彩的部分是开发人员用它构建出的成果。🛡️