Hi, How are people dealing with changes in serialization format between .NET 1.0 and 1.1? For example, the IPAddress class is now represented internally as a Byte[] instead of an Int64 (why it was ever an Int64 is beyond me). This means that when it is serialized by the SoapFormatter or BinaryFormatter (and probably the XmlSerializer), it can't be deserialized by a different version of .NET.
I'm working on a distributed .NET computing platform (see http://www.kinitos.com/), and we can't allways control the version of .NET that is installed on a node, but we need to be able to continue to communicate with it. The problem is made worse by the fact that AppDomains hosted in IE always run under the latest version of .NET that's installed - so requiring .NET 1.0 to be installed doesn't solve the problem. I had expected that Microsoft would keep the serialization format compatible by implementing ISerializable for any class whose structure changes. This is what we have to do with our Serializable classes so that we're backwards and forwards compatible. I would imagine this is also a problem for people who are using serialization for object persistence. How can you upgrade your application to .NET 1.1 while preserving application data? I'm currently trying to work around the problem by using assembly rebinding (to prevent .NET 1.0 from trying to load 1.1 assemblies if they are present) and SerializationSurrogates to provide a common serialization format for classes whose internal representation has changed. I have no idea how many such classes there are, so this could end up being a huge task. I'm amazed that this issue doesn't appear to have been discussed before. Are we unique in our serialization compatibility requirements? Thanks, Rick
