Suppose we have the class X in version 1 of the assembly A.dll:
class X {
    SomeType Property { set; get; }
}
and then in version 2 of the assembly A.dll:
class X {
    SomeType Property { set; get; }
    SomeType OtherProperty { set; get; }
}
Now suppose we have a second assembly B.dll that loads A.dll and uses X. Will the addition of the property OtherProperty break the ABI? Will B.dll fail to use A.dll/X? If not, would the order of the declarations make any difference? If the properties had been virtual, had it made any difference?
I guess I'm really asking: what are the general ABI rules? I know changing interfaces after they have been published is a bad thing, but I really would like to be able to add properties in some instances, without adding subclasses.
 
     
     
     
    