Rules for C# class backward compatibility/avoiding breaking changes
我正在开发一个C 3.5程序集,它在企业服务器环境中被许多不同的应用程序使用。我想将一些属性添加到现有的C类(不是抽象类),并在不重新编译的情况下保持与当前客户机的向后兼容性。它是一个名为3.5的程序集。不会重新编译现有的客户端应用程序。相反,我们使用发布者策略程序集将现有客户端重新定向到更新的版本。
维护此类向后兼容性的规则是什么?
我正在寻找一些可以用来验证代码更改的规则集。
在我当前更新类的尝试之后,客户机将引发"定位的程序集的清单定义与程序集引用不匹配"异常。
最好的参考是Justin的答案:一个明确的指南,它将打破.NET中API的变化。
@贾斯汀-如果你把这个贴出来作为答案,我会给你支票的。
在他看来,您得到的错误与类之间的兼容性无关,而是与加载程序集的问题有关-请参阅所定位的程序集的清单定义与程序集引用不匹配(如果有帮助的话)。
将属性/方法添加到现有类应该可以实现向后兼容性。删除字段/方法/属性,将类更改为结构,更改基类绝对不是。修改常量、枚举值是危险的。
您必须维护相同的程序集版本(即不要在构建之间增加版本)-请参阅msdn中的
另外,您可以利用程序集绑定重定向,但这涉及到配置文件更改,我不希望在您的情况下进行更改。