无法找到程序集

问题描述:

我正在序列化一个ArrayList到一个二进制文件,以便通过TCP/IP发送它。序列化的文件是由服务器创建的,我希望能够用我正在写的客户端进行反序列化。无法找到程序集

但是,当客户端试图反序列化时,会抛出一个SerializationException,因为它无法找到程序集(可能是)将该文件序列化为开头。

我该如何解决这个问题?

+0

任何带有完整源代码的最终解决方案? – Kiquenet 2013-02-15 11:06:14

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

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

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

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

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

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