gpt4 book ai didi

nuget - "Nearest-Wins"依赖解析和向后兼容性

转载 作者:行者123 更新时间:2023-12-01 09:05:59 25 4
gpt4 key购买 nike

当提到 this ASP.NET github wiki page ,它解释了如何使用“Nearest Win”方案丢弃同名(但不同版本)的包:

Nearest wins means that the dependency resolver prefers versions that are "closer" to the application, but only if they are an ancestor of the dependency being rejected.



给出的例子解释了下图中如何, Package B 1.0将被丢弃,因为 Package B 2.0是“更接近”:

Nearest-Wins dependency resolution

这是否意味着Package A现在将使用 Package B 2.0 ?这当然没有意义,除非 Package B 2.0向后兼容 Package B 1.0 ?

据此 semantic versioning上述软件包不一定向后兼容。

最佳答案

这意味着 MyApp 将使用 PackageB 2.0,这也意味着 MyApp 上下文中的 packageA 将使用 PackageB 2.0。请注意,在包图中,任何单个包始终只有一个版本,这对于 package.config 世界来说是正确的,这里没有任何变化。在packages.config 世界中,该决定是由用户在安装包时做出的,这里的决定是在恢复时做出的。

由于始终是 MyApp 的用户或作者在 project.json 或 nuspec 中创建依赖关系图(如果 MyApp 也是一个包),他有权选择要使用的版本。

您是对的,在这种情况下,根据语义版本控制规则存在潜在的重大更改。在这个示例中,作者认为它不会影响它的应用程序,或者用你的话来说它的向后兼容足以供他使用。

要记住的另一个重要方面是,该规则适用是因为作者 MyApp 有权进行更改,而不是因为 Package B2.0 任意靠近图中的根。查看表亲依赖规则,了解这种边缘情况。

最后,问题引用的文档不是官方指南 - 可以在这里找到 - https://docs.microsoft.com/en-us/nuget/consume-packages/dependency-resolution

关于nuget - "Nearest-Wins"依赖解析和向后兼容性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31668284/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com