【问题标题】:Unable to find assembly找不到程序集
【发布时间】:2010-10-19 07:54:28
【问题描述】:

我正在将 ArrayList 序列化为二进制文件,以便通过 TCP/IP 发送它。序列化文件是由服务器创建的,我希望能够用我现在正在编写的客户端对其进行反序列化。

但是,当客户端尝试反序列化时,它会抛出 SerializationException,因为它找不到序列化文件开头的程序集(可能)。

我该如何解决这个问题?

【问题讨论】:

  • 有完整源代码的最终解决方案吗?

标签: c# .net serialization arraylist


【解决方案1】:

您要发送的数据是什么?你是如何序列化它的?如果您使用BinaryFormatter,则声明任何自定义类型的程序集必须在两端。

请注意,BinaryFormatter 在跨系统(包括同一系统的不同版本之间)的序列化方面存在一系列问题。您可能想查看其他序列化程序,例如 DataContractSerializerprotobuf-net(用于高效的跨平台二进制传输)。

【讨论】:

    【解决方案2】:

    如果您使用二进制序列化,客户端将需要访问包含您在 ArrayList 中序列化的类型的 DLL。我想我真的不知道你的设置来描述应该如何完成,但这就是它的要点。

    如果您使用 xml 序列化之类的东西(使用 XmlSerializaer 或 DataContractSerializer),您将能够生成 Xml。如果您确实无法共享程序集,您可以在服务器/客户端复制目标代码。

    【讨论】:

      【解决方案3】:

      您的数组列表是否包含自定义数据类型(即您自己的类)?

      除非运行反序列化的代码可以访问数组列表中包含的所有类,否则数组列表不会被反序列化。

      【讨论】:

        猜你喜欢
        • 2011-09-23
        • 2019-06-06
        • 2011-03-20
        • 2011-03-02
        • 2017-06-28
        • 1970-01-01
        • 1970-01-01
        • 2011-07-25
        相关资源
        最近更新 更多