title: Why is BinaryFormatter not supporting Version Tolerance?
body: <p>According the the .NET docs, Version Tolerance was added to BinaryFormatter in .NET 2.0: 
  <a href="https://msdn.microsoft.com/en-us/magazine/cc163902.aspx#S10" rel="nofollow">https://msdn.microsoft.com/en-us/magazine/cc163902.aspx#S10</a></p>
  
  <p>So in theory, I should be able to remove a field from a Serialized class, and not have things blow up. ie: </p>
  
  <pre><code>//Version 1
  SaveData {
      public int Num1;
      public int Num2;
  }
  
  //Version 2
  SaveData {
      public int Num1;
  }
  </code></pre>
  
  <p>Even though I removed Num2, the older versions of the class should still deserialize ok, due to Version Tolerance: <em>"In the case of removing an unused member variable, the binary formatter will simply ignore the additional information found in the stream. "</em>
  <a href="https://msdn.microsoft.com/en-us/magazine/cc163902.aspx#S10" rel="nofollow">https://msdn.microsoft.com/en-us/magazine/cc163902.aspx#S10</a></p>
  
  <p>Instead, Unity is throwing an Error: 
  System.Runtime.Serialization.SerializationException: Field "Num2" not found in class SaveData</p>
  
  <p>Is there a way to get this working in Unity?</p>
  
  <p>[Edit] Here's the code I'm using to Save/Load:</p>
  
  <pre><code>//Save
  BinaryFormatter bf = new BinaryFormatter();
  FileStream fs = File.Create(path);
  bf.Serialize(fs, data);
  fs.Close();
  
  //Load
  BinaryFormatter bf = new BinaryFormatter();
  FileStream fs = new FileStream(path, FileMode.Open);
  SaveData data = (SaveData)bf.Deserialize(fs);
  fs.Close();
  </code></pre>