I would hazard a guess that the binary compatible location you are using is the executable itself and not a bincompat version stored.
By changing any exposed com interface within the code, binary compatability would be broken (you can get away with extending interfaces, but not changing existing ones / types), which prevented the build.
By setting it to build with no compatability, the checks are discarded and the executable built.
You then changed it back to binary, and this is where / why I think you are pointing binary compat version to the built exe itself and not a seperate copy - so the executable was automatically compatible to itself and allowed it to build.