C#类向后兼容性规则/避免中断更改

我正在研究C#3.5程序集,它被企业服务器环境中的许多不同应用程序使用。 我想在现有的C#类(不是抽象)中添加一些属性,并保持与当前客户端的向后兼容性,而无需重新编译。 这是一个强烈命名的3.5程序集。 现有的客户端应用程序不会被重新编译。 相反,我们使用发布者策略程序集将现有客户端重定向到更新版本。

维护此类类向后兼容性的规则是什么?

我正在寻找一些规则,我可以validation我的代码更改。

在我当前尝试更新类客户端之后,抛出“找到的程序集的清单定义与程序集引用不匹配”exception。

最好的参考是Justin的答案: .NET中API破坏性变化的明确指南

@Justin – 如果您发布此答案,我会给您支票。

您必须维护相同的程序集版本(即不要跨构建增加它) – 请参阅MSDN中的AssemblyVersionAttribute

此外,您可以利用程序集绑定重定向,但这涉及配置文件更改,我不希望在您的情况下。

您得到的错误与类之间的兼容性无关,而是与加载程序集有关的问题 – 请参阅如果有帮助,找到的程序集的清单定义与程序集引用不匹配 。

向exisitng类添加属性/方法应该可以向后兼容。 删除字段/方法/属性,将类更改为struct,更改基类绝对不是。 修改常量,枚举值是危险的。