相关疑难解决方法(0)

具有不同汇编版本的二进制反序列化

我有一个项目使用BinaryFormatter序列化字符串和bool的结构集合?数据类型.

序列化/反序列化工作正常,但是如果我要更改执行工作的程序集,则无法反序列化,因为二进制文件中的标头指示它需要Assembly x而不是Assembly y处理数据.

是否可以将序列化/反序列化设置为与程序集无关?

.net serialization binaryformatter assemblyversions

26
推荐指数
3
解决办法
2万
查看次数

C#反序列化已移动或已重命名的类

如果我在名为"AssemblyA"的程序集中有一个名为"MyClass"的类,并使用.NET的BinaryFormatter将其序列化为一个文件.然后将"MyClass"的代码移动到名为"AssemblyB"的程序集中,并尝试反序列化该文件,我得到以下"System.TypeLoadException"异常:

无法从程序集'AssemblyA,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'加载类型'AssemblyA.MyClass'.

有没有办法让我表明该课程已被移至AssemblyB?通过某种属性?或者是否可以将序列化文件修改为预处理步骤,以将AssemblyA.MyClass中的所有引用更改为AssemblyB.MyClass?最后,如果这些选项都不可能,是否可以绕过尝试反序列化该类并继续反序列化其余数据?

c# binary serialization

7
推荐指数
1
解决办法
2356
查看次数