What are the most important guidelines to follow if you need to break an interface in a .NET application? How do these guidelines change before and after your application has been deployed?
I know there are other questions that debate when/where interfaces should be used, however I don't want to get into that. I just want to know some effective approaches to mitigating effects on the rest of your application when you need to do this.
If I am just adding new method/s to an interface, will only implementors need modification/recompile, while all clients continue to operate happily with no change required?
What about renaming methods and variables, is this ever going to break an interface?
One strong recommendation I've come across in the past is "never break an interface". But doesn't this produce a messy design such as IDocument, IDocument2, IDocument3, IDocument4, IDocument5, IDocument6 etc, as seen in the mshtml COM library?