As it was mentioned in previous posts, when a List of objects (member of a bigger object) is marked with the AsReference attribute, its elements are indeed serialized/deserialized as reference. However the list itself isn't serialized as reference. This behavior breaks the integrity of the object graph. In particular, it is different from what the MS BinaryFormatter does. I wonder where does this limitation come from and what would it take to have it as an optional feature?
I evaluate migrating a huge ASP.NET app with an SQL state session from the BinaryFormatter to ProtoBuf-net serialization in order to improve performance. The application has a fairly complicated data model all saved in the Session, so the above seems to be a potential for bugs. By the way, can you recall other significant differences in behavior between the BinaryFormmater and ProtoBuf.net?