C# 4.0 NETFramework 4.6.1和2.0的结果不同

C# 4.0 NETFramework 4.6.1和2.0的结果不同,c#-4.0,c#-2.0,.net-framework-version,binaryformatter,C# 4.0,C# 2.0,.net Framework Version,Binaryformatter,以前的项目是.NET2.0,现在希望是4.6.1,但BinaryFormatter的结果不同。 请帮我修复它。一开始不要使用BinaryFormatter。除了每次运行时更改都会中断之外,它是不安全的,被认为已经过时至少十年,并且被标记为可移除的。在本例中,由于无法修复的中断,.NET 2.0和.NET 4.0运行时是完全不同的。BinaryFormatter保存类型中的所有内容,包括类型名称和字段,因此不可能重新加载从一个运行时版本更改为下一个版本的类型。这也正是它成为安全噩梦的原因——它可以

以前的项目是.NET2.0,现在希望是4.6.1,但BinaryFormatter的结果不同。
请帮我修复它。

一开始不要使用BinaryFormatter。除了每次运行时更改都会中断之外,它是不安全的,被认为已经过时至少十年,并且被标记为可移除的。在本例中,由于无法修复的中断,.NET 2.0和.NET 4.0运行时是完全不同的。BinaryFormatter保存类型中的所有内容,包括类型名称和字段,因此不可能重新加载从一个运行时版本更改为下一个版本的类型。这也正是它成为安全噩梦的原因——它可以从二进制文件加载任意类型,允许从中注入代码,文档顶部的黄色大警告说,
二进制格式化程序类型是危险的,不建议用于数据处理。应用程序应该尽快停止使用BinaryFormatter,即使它们认为正在处理的数据是可信的。BinaryFormatter不安全,无法使其安全。
使用BinaryFormatter(版本2.0)序列化的文件可能无法被BinaryFormatter(版本4.6.1)读取。这样的文件处理起来非常麻烦和危险。使用它们的代码往往很容易被破坏。请阅读:-也许您可以迁移到更好的替代方案,例如System.Text.json这不是
也许您应该迁移
。这是一个你必须迁移的过程。.NET4.0问世已经10年了。