【问题标题】:Unable to deserialize object in 64bit [closed]无法反序列化 64 位对象 [关闭]
【发布时间】:2012-07-31 08:13:26
【问题描述】:

如果我以 64 位运行应用程序,当我尝试使用 BinaryFormatter 反序列化对象时出现以下异常

异常找不到反序列化类型对象的构造函数

如果我强制应用程序在 32 位模式下运行,它会完美运行。 我正在反序列化的对象实现了 ISerializable 接口。

【问题讨论】:

    标签: c# .net serialization


    【解决方案1】:

    这不太可能与 64 位有关。一个例子可能会有很长的路要走,但是:在BinaryFormatterISerializable 的情况下,您还需要提供一个采用(作为参数)SerializationInfoStreamingContext 的构造函数。这听起来像是一种或另一种方式,你的类型缺少这个。所以:确保它在那里。

    【讨论】:

    • 我肯定有一个带有参数 SerializationInfo 和 StreamingContext 的构造函数。这对我来说很奇怪。
    • @Alvin 不幸的是,没有东西可看,我们无话可说
    • 经过一些测试,我认为它失败的原因与我正在使用的这个第 3 方库有关。我相信它是使用 32 位构建的。所有的dll都必须是64位的吗?谢谢
    • @Alvin 它可以在 AnyCpu 或 AnyCpuPrefer32Bit 中 - 然后它可以在任何一个中工作,但老实说这通常不会影响这一点。
    • 我认为第 3 方库是使用 x86 模式而不是 AnyCpu 构建的,因为我收到异常 System.BadImageFormatException。无法加载文件或程序集。有没有办法知道它是内置在哪种模式下的?
    猜你喜欢
    • 2014-07-24
    • 2021-09-28
    • 2018-10-03
    • 2016-12-30
    • 1970-01-01
    • 2014-08-04
    • 2015-05-29
    • 1970-01-01
    相关资源
    最近更新 更多