我有以下问题。为了更改已编译的可执行文件的名称,我更改了程序集的名称。但之后我无法从文件中打开旧的二进制序列化对象。我有一个SerializationException:“无法找到程序集”OldAssembly“。
我知道可以通过创建自定义SerializationBinder以及在那里覆盖BindToType方法以某种方式解决它。但我不知道该怎么做。
任何提示或提示都表示赞赏。
答案 0 :(得分:1)
您是否使用[DataContract]或[Serializable]标记对象进行序列化?
如果您使用DataContract,您可以更改新对象的xml命名空间,以便它不会查找旧的程序集/类型:
[DataContract(Namespace =“http://schemas.datacontract.org/2004/07/Your.Old.Namespace.ClassName”)]
最近,当我将序列化类型从一个程序集移动到另一个程序集时,我做到了这一点。