我正在研究C#3.5程序集,它被企业服务器环境中的许多不同应用程序使用。我想在现有的C#类(不是抽象)中添加一些属性,并保持与当前客户端的向后兼容性,而无需重新编译。这是一个强烈命名的3.5组装。现有的客户端应用程序不会被重新编译。相反,我们使用发布者策略程序集将现有客户端重定向到更新版本。
维护此类类向后兼容性的规则是什么?
我正在寻找一些规则,我可以验证我的代码更改。
在我当前尝试更新类客户端之后,抛出“找到的程序集的清单定义与程序集引用不匹配”异常。
答案 0 :(得分:3)
最好的参考是贾斯汀的答案:A definite guide to API-breaking changes in .NET
@Justin - 如果您发布此答案,我会给您支票。
答案 1 :(得分:2)
您必须维护相同的程序集版本(即不要跨构建增加它) - 请参阅AssemblyVersionAttribute
in MSDN。
此外,您可以利用程序集绑定重定向,但这涉及配置文件更改,在您的情况下我不希望这样做。
答案 2 :(得分:2)
他得到的错误与类之间的兼容性无关,而是与加载程序集有关 - 请参阅The located assembly's manifest definition does not match the assembly reference是否有帮助。
向exisitng类添加属性/方法应该可以向后兼容。删除字段/方法/属性,将类更改为struct,更改基类绝对不是。修改常量,枚举值是危险的。