I'm confused - when should I be using XML Serialization and when should I be using Binary Serialization in the .NET framework?
Both of the existing answers focus on "cross platform", but that is an unrelated issue. The point they are making there is "don't use BinaryFormatter
if you are doing cross-platform" - which I entirely support. However there are a range of binary serialization formats that are very much cross-platform - protobuf / ASN.1 being prime examples.
So, let's look instead at what each has to offer;
Notice how interoperability is neither a strength nor weakness of either, as long as you choose an appropriate binary format!
Here's an answer that compares the serialization time, deserialization and space metrics of most of the .NET serializers, for your reference.