- 主要观点:从.NET 9 开始,运行时不再包含
BinaryFormatter
的实现,其 API 仍存在但实现总是抛出异常,不再设置现有向后兼容性标志就能使用BinaryFormatter
,需迁移或选择其他序列化方式。 关键信息:
.NET Framework
不受此变化影响仍包含BinaryFormatter
实现,但仍建议停止使用。BinaryFormatter
存在安全风险,如 CWE-502“反序列化不受信任数据”。- 移除
BinaryFormatter
的原因是为让客户易做正确之事,避免使用不安全技术,同时提供迁移计划和临时选项。 - 有两种处理
BinaryFormatter
移除的选项:迁移远离它或使用兼容包继续使用,但兼容包不被支持且不安全。
重要细节:
- 从.NET Core 1.0 就排除
BinaryFormatter
,后因客户需求在.NET Core 2.0 又包含,之后逐步在多个项目类型中默认关闭并提供向后兼容选项。 - 迁移选项包括使用基于文本的 JSON 或 XML 序列化格式,以及基于二进制的 MessagePack 或 Protocol Buffers 等;还可使用
NrbfDecoder
读取BinaryFormatter
负载而不进行反序列化;若无法迁移可安装不支持的兼容包但需注意风险。
- 从.NET Core 1.0 就排除
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。