.NET 9 - BinaryFormatter移除

1.简单介绍

.NET 9 SDK正式版已经发布, 下载地址是.NET9

同时.NET Conf 2024 大会已经从2024-11-13开始了,感觉Aspire和AI的内容相对挺多的,主题分享演示时候打开的网站大部分都是Blazor制作的。

这次.NET Conf 2024老师也再次说明了一下,

BinarryFormatter is inherely insecure, stop using it

note, BinaryFormatter 存在remote code execution的安全问题

BinaryFormatter 从.NET8开始,已经被标记为Obsolete。.NET9开始已经把BinaryFormatter移除

这边简单记录一下BinaryFormatter在.NET8和.NET9运行的情况

2.具体说明

假定有一个Person类

2.1 .NET8中的BinaryFormatter

2.1.1 修改项目配置文件前

在Visual Studio中编写序列化的代码,发现BinaryFormatter有如下标记

表示BinaryFormatter已经Obsolete了

直接编译代码,是报错的。

2.1.2 修改项目配置文件

这时如果想让代码编译通过且运行正常,需要在项目文件中加上如下配置

复制代码
<EnableUnsafeBinaryFormatterSerialization>true</EnableUnsafeBinaryFormatterSerialization>

加上上述的配置后,BinaryFormatter的状态如下,并且编译不会报错,但是有Obsolete警告出现

note, 修改配置之后,项目能运行了,不过BinaryFormatter不建议使用

2.2 .NET 9 的中BinaryFormatter

2.2.1 修改项目配置文件前

未修改项目配置文件时候和.NET8一样的, 编译有报错

2.2.2 修改项目配置文件

如果要恢复正常运行,则需要修改项目配置文件,

1)需要加上配置

复制代码
<EnableUnsafeBinaryFormatterSerialization>true</EnableUnsafeBinaryFormatterSerialization>

2)并且安装nuget package(insecure) - System.Runtime.Serialization.Formatters

如果不安装package,运行项目会出现下错误,

修改后的配置如下图所示,

修改了上面两个配置之后,再次编译项目,发现能编译通过,

不过有BinaryFormatter Obsolete的警告出现

下面是代码编译之后的图片

note, 修改配置之后,项目能运行了,不过BinaryFormatter不建议使用

3.总结

本文简单尝试了一下BinaryFormatter在.NET8和.NET9中的状态。正常项目中,不建议使用。

本文如果哪里有错误的地方,麻烦告之,谢谢谢谢!

相关推荐
mudtools2 小时前
.NET驾驭Word之力:理解Word对象模型核心 (Application, Document, Range)
c#·.net
大飞pkz8 小时前
【设计模式】C#反射实现抽象工厂模式
设计模式·c#·抽象工厂模式·c#反射·c#反射实现抽象工厂模式
唐青枫9 小时前
从入门到进阶:C#.NET Stopwatch 计时与性能测量全攻略
c#·.net
私人珍藏库10 小时前
[Windows] 微软 .Net 运行库离线安装包 | Microsoft .Net Packages AIO_v09.09.25
microsoft·.net·运行库
未来之窗软件服务19 小时前
幽冥大陆(二)RDIFSDK 接口文档:布草洗涤厂高效运营的技术桥梁C#—东方仙盟
开发语言·c#·rdif·仙盟创梦ide·东方仙盟
1uther19 小时前
Unity核心概念⑨:Screen
开发语言·游戏·unity·c#·游戏引擎
追逐时光者20 小时前
C#/.NET/.NET Core技术前沿周刊 | 第 54 期(2025年9.8-9.14)
后端·.net
追逐时光者20 小时前
C#/.NET/.NET Core编程技巧练习集,配套详细的文章教程讲解!
后端·.net
阿幸软件杂货间20 小时前
Office转PDF转换器v1.0.py
开发语言·pdf·c#
sali-tec21 小时前
C# 基于halcon的视觉工作流-章34-环状测量
开发语言·图像处理·算法·计算机视觉·c#