Dav*_*New 5 nuget visual-studio-2015 .net-4.6 asp.net-core
当引用此 ASP.NET github wiki 页面时,它解释了如何使用“Nearest Win”场景丢弃同名(但不同版本)的包:
最近的获胜意味着依赖项解析器更喜欢与应用程序“更接近”的版本,但前提是它们是被拒绝的依赖项的祖先。
给出的示例解释了下图中如何因为“更接近”而Package B 1.0被丢弃:Package B 2.0
这是否意味着Package A现在会使用Package B 2.0?Package B 2.0当然,除非向后兼容,否则这没有任何意义Package B 1.0?
根据语义版本控制,上述包不一定向后兼容。
这意味着 MyApp 将使用 PackageB 2.0,也意味着 MyApp 上下文中的 packageA 将使用 PackageB 2.0。请注意,在包图中,任何单个包始终只有一个版本,这对于 package.config 世界来说是正确的,并且这里没有任何更改。在packages.config 世界中,该决定是由用户在包安装时做出的,而这里的决定是在恢复时做出的。
由于始终是 MyApp 的用户或作者在 project.json 或 nuspec 中编写依赖关系图(如果 MyApp 也是一个包),因此他有权选择要使用的版本。
您是对的,在这种情况下,根据语义版本控制规则,存在潜在的重大更改。在此示例中,作者认为它不会影响其应用程序,或者用您的话来说,它向后兼容足以供他使用。
要记住的另一个重要方面是,该规则适用是因为作者 MyApp 有权进行更改,而不是因为包 B2.0 任意接近图中的根。查看表兄弟依赖规则,以了解这种边缘情况。
最后问题引用的文档不是官方指南 - 可以在这里找到 - https://learn.microsoft.com/en-us/nuget/consume-packages/dependency-resolution
| 归档时间: |
|
| 查看次数: |
781 次 |
| 最近记录: |