重命名程序集后反序列化问题

时间:2011-02-08 15:52:56

标签: c# .net serialization executable .net-assembly

我有以下问题。为了更改已编译的可执行文件的名称,我更改了程序集的名称。但之后我无法从文件中打开旧的二进制序列化对象。我有一个SerializationException:“无法找到程序集”OldAssembly“。

我知道可以通过创建自定义SerializationBinder以及在那里覆盖BindToType方法以某种方式解决它。但我不知道该怎么做。

任何提示或提示都表示赞赏。

1 个答案:

答案 0 :(得分:1)

您是否使用[DataContract]或[Serializable]标记对象进行序列化?

如果您使用DataContract,您可以更改新对象的xml命名空间,以便它不会查找旧的程序集/类型:

[DataContract(Namespace =“http://schemas.datacontract.org/2004/07/Your.Old.Namespace.ClassName”)]

最近,当我将序列化类型从一个程序集移动到另一个程序集时,我做到了这一点。