将 Nuget 从 packages.config 迁移到 PackageReference - 传递依赖关系被反转

Migrating Nuget from packages.config to PackageReference - transitive dependencies are reversed

我正准备将 C# class 库从使用 packages.config 格式迁移到 PackageReference 格式。然而,迁移对话框似乎对我的两个包有反向依赖,我不确定该怎么做(或者如果我误解了它)

具体来说,我的项目使用了 Prism.Wpf 包版本 6.3。这取决于包 Prism.Core (7.x)。然而,当我查看迁移对话框时,它将 Prism.Core 列为 "Top-level" 依赖项,将 Prism.Wpf 列为 "Transitive"。看起来像这样:

  1. 这是倒退的,不是吗?如果 Prism.Wpf 依赖于 Prism.Core,那么我希望将 Prism.Wpf 视为顶层,将 Prism.Core 视为传递依赖。
  2. 如果我是正确的并且它是倒退的,那么有人知道解决这个问题的最佳方法是什么,这样我就可以轻松迁移吗?我是否应该只单击复选框以将 Prism.Wpf 标记为顶级,进行迁移,并希望它扭转依赖关系?然后我是否需要绕过 .csproj 文件以某种方式自己修复该依赖项?还是我应该删除并重新添加包?还有别的吗?

Prism.Unity 6.3.0 references Prism.Wpf 6.3.0,所以Prism.Wpf不是顶级。 Prism.Core 7.0.0.396 not 直接被 Prism.Wpf 6.3.0 引用。 Prism.Wpf 6.3.0 引用 Prism.Core 6.3.0。

很可能您自己手动更新了 Prism.Core 7.0.0.396。

如果 NuGet 修剪 Prism.Core,那么由于依赖项解析 rules,它将解析为 6.3.0,这会破坏您的依赖关系图。