Deserialization exception: Unable to find assembly-Collection of common programming errors

NOTE 2: I have this same class in both assemblies

No you don’t. At least, not as far as the runtime is concerned. You have two different types that happen to have the same name. A type is defined by its assembly. Thus “SomeType in AssemblyA” is completely different to “SomeType in AssemblyB”, even if they happen to have been compiled from the same source file.

BinaryFormatter works with type information, so this won’t work. One option would be to move the type to a library dll that both the other projects reference – then it is only defined once, and it will be happy.

Another option is to work with a contract-based serializer (rather than a type-based serializer). This means that “classes that look similar enough” are fine, even if they are in different assemblies (and perhaps have different source, as long as it is “similar enough”). Examples of suitable serializers for this would include (plus a few others) XmlSerializer, DataContractSerializer (but not NetDataContractSerializer), JavaScriptSerializer, or protobuf-net if you want dense raw binary.