我有一个项目使用BinaryFormatter序列化字符串和bool的结构集合?数据类型.
序列化/反序列化工作正常,但是如果我要更改执行工作的程序集,则无法反序列化,因为二进制文件中的标头指示它需要Assembly x而不是Assembly y处理数据.
是否可以将序列化/反序列化设置为与程序集无关?
如果我在名为"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?最后,如果这些选项都不可能,是否可以绕过尝试反序列化该类并继续反序列化其余数据?