【问题标题】:Problem with deserialization after renaming assembly重命名程序集后的反序列化问题
【发布时间】:2011-02-08 15:52:55
【问题描述】:

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

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

感谢任何提示或提示。

【问题讨论】:

  • 你不能只改回程序集的名称,而是更改生成的可执行文件的名称吗?
  • 我不完全确定更改程序集的名称将如何影响 exe 文件的名称...您的意思是您更改了应用程序项目的名称吗?

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


【解决方案1】:

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

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

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

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

【讨论】:

  • 感谢您的回复,但我正在使用 [Serializable] 属性。
猜你喜欢
  • 2011-03-09
  • 2017-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-03
相关资源
最近更新 更多