We use BinaryFormatter in a C# game, to save user game progress, game levels, etc. We are running into the problem of backwards compatibility.
The aims:
We got the same problem in our application with storing user profile data (grid column arrangement, filter settings ...).
In our case the problem was the AssemblyVersion.
For this problem i create a SerializationBinder
which reads the actual assembly version of
the assemblies (all assemblies get a new version number on new deployment)
with Assembly.GetExecutingAssembly().GetName().Version
.
In the overriden method BindToType
the type info is created with the new assembly version.
The deserialization is implemented 'by hand', that means
Works with all our data and since three or four releases.