前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SYSLIB0011:BinaryFormatter 序列化已过时

SYSLIB0011:BinaryFormatter 序列化已过时

作者头像
用户4268038
发布2022-01-06 16:45:59
1.3K0
发布2022-01-06 16:45:59
举报
文章被收录于专栏:stcnbstcnb

由于 BinaryFormatter 存在安全漏洞,从 .NET 5.开始,以下 API 标记为已过时。 在代码中使用这些 API 会在编译时生成警告 SYSLIB0011。

System.Exception.SerializeObjectState

BinaryFormatter.Serialize

BinaryFormatter.Deserialize

Formatter.Serialize(Stream, Object)

Formatter.Deserialize(Stream)

IFormatter.Serialize(Stream, Object)

IFormatter.Deserialize(Stream)

解决方法

请考虑使用 JsonSerializer 或 XmlSerializer,而不是 BinaryFormatter。

若要详细了解建议的操作,请参阅修复 BinaryFormatter 过时和禁用错误。

禁止显示警告

建议尽可能使用可用的解决方法。 但是,如果无法更改代码,可以通过 #pragma 指令或 <NoWarn> 项目设置来禁止显示警告。 如果必须使用过时 API,并且 SYSLIB0XXX 诊断没有显示为错误,则可以在代码或项目文件中取消该警告。

若要禁止显示代码中的警告,请执行以下操作:

代码语言:javascript
复制
// Disable the warning.
#pragma warning disable SYSLIB0001
// Code that uses obsolete API.
//...
// Re-enable the warning.
#pragma warning restore SYSLIB0001

若要禁止显示项目文件中的警告,请执行以下操作:

代码语言:javascript
复制
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
   <TargetFramework>net5.0</TargetFramework>
   <!-- NoWarn below suppresses SYSLIB0001 project-wide -->
   <NoWarn> 

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档