Rules for C# class backward compatibility/avoiding breaking changes

后端 未结 3 1480
误落风尘
误落风尘 2021-02-02 10:34

I\'m working on a C# 3.5 assembly that is consumed by many different applications in an enterprise server environment. I would like to add some properties to an existing C# clas

相关标签:
3条回答
  • 2021-02-02 10:54

    You have to maintain the same assembly version (i.e. don't increment it across builds) — see the AssemblyVersionAttribute in MSDN.

    Also, you could leverage assembly binding redirects, but that involves config file changes which I don't expect to be desirable in your case.

    0 讨论(0)
  • 2021-02-02 11:04

    At his point error that you are getting is not related to compatibility between classes, but rather problem loading assembly - see The located assembly's manifest definition does not match the assembly reference if it helps.

    Adding properties/methods to exisitng class should be ok for backward compatibility. Removing fields/methods/properties, changing class to struct, changing base class is definitely not. Modifying constants, enum values is dangerous.

    0 讨论(0)
  • 2021-02-02 11:09

    The best reference is Justin's answer: A definite guide to API-breaking changes in .NET

    @Justin - if you ever post this as an answer, I'll give you the check.

    0 讨论(0)
提交回复
热议问题