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

时间:2018-06-20 15:57:16

标签: visual-studio-2017 nuget nuget-package

我即将将C#类库从使用packages.config格式迁移到PackageReference格式。但是,迁移对话框似乎已经颠倒了我两个软件包的依赖性,因此我不确定该怎么做(或者如果我误解了)

具体来说,我的项目使用的是Prism.Wpf软件包版本6.3。这取决于软件包Prism.Core(7.x)。但是,当我查看迁移对话框时,它会将Prism.Core列为“顶级”依赖项,并将Prism.Wpf列为“传递性”。看起来像这样:

enter image description here

  1. 这是倒退,不是吗?如果Prism.Wpf依赖于Prism.Core,那么我希望将Prism.Wpf作为顶层,并将Prism.Core作为传递依赖项。
  2. 如果我是正确的,但它倒退了,谁能知道解决此问题的最佳方法是什么,以便我可以轻松地迁移?我是否应该仅单击复选框以将Prism.Wpf标记为顶级,进行迁移,并希望它可以逆转依赖关系?然后,我是否需要对.csproj文件进行修改以自己解决该依赖性?还是应该删除并重新添加软件包?还有吗?

1 个答案:

答案 0 :(得分:1)

Prism.Unity 6.3.0 references Prism.Wpf 6.3.0,这就是为什么Prism.Wpf不是顶级的原因。 Prism.Wpf 6.3.0直接引用not Prism.Core 7.0.0.396。 Prism.Wpf 6.3.0参考Prism.Core 6.3.0。

很有可能您已经手动更新了Prism.Core 7.0.0.396。

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