当两个nuget包交互时,我如何知道两个包之间的API是兼容的?
当两个包交互时,可能会出现API更改,导致两个包之间不兼容。如何检测两个包之间的 API 更改或不兼容?
When two packages interact, there may be API changes, resulting in incompatibility between the two packages. How can I detect API changes or incompatibilities between two packages?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
因此,假设库 A(我们假设)依赖于库 B 版本 Y。如果您发布 Y,那么:没问题。发布低于 Y 的版本是禁忌,但如果发布高于 Y 的版本,事情就会变得有趣。没有硬性规定;通常它会工作得很好。通常,硬中断的 semver 为“主要”,因此如果 Y 为 3.2,则运送 3.5 可能没问题,但 4.2 可能会中断。但这两者都是软“力量”:两者都没有保证。唯一知道的方法就是尝试,最好添加单元测试,以便您将来可以快速检查。
更有趣的是,当您还需要一个依赖于 B 版本 Z 的包 C 时,其中 Y 和 Z 不同。再说一次,知道答案的唯一方法就是尝试。
So let's say library A (which we'll assume) depends on library B version Y. If you ship Y, then: no problem. Shipping a version lower than Y is a no-no, but things get interesting if you ship higher than Y. There is no hard and fast rule; often it will work fine. Usually, hard-breaks get a semver "major", so if Y is 3.2, shipping 3.5 might be fine, but 4.2 might break. But both of those are soft "might": neither is guaranteed. The only way to know is to try, ideally adding unit tests so you can check it quickly in the future.
What gets even more interesting is when you also need a package C that depends on B version Z, where Y and Z are different. Again, the only way to know the answer is to try.