为什么我的依赖包没有解决?

时间:2017-01-09 16:31:34

标签: .net visual-studio-2015 nuget nuget-package

我有一个包依赖情况如下: 错误:

尝试收集包裹的依赖性信息' PkgB.2.0.414'关于项目&测试Nuget Package Usage',目标' .NETFramework,Version = v4.5' 试图解决包裹的依赖关系' PkgB.2.0.414'与DependencyBehavior'最低' 无法解决依赖性' PkgC.1.0.0'。使用的来源:' nuget.org','公司包源','本地测试',' Microsoft和.NET', ' Microsoft Visual Studio脱机软件包'。

情况A: PkgA => PkgC

情况B: 则pkgB => PkgA => PkgC

当我安装情况A时,它有效。当我安装情况B时它起作用。但是,如果我安装了A然后B,它就无法找到Pkg C,即使它已经安装并正常工作。

请记住以下环境:

这些都是单独和单独安装的软件包。 此问题使用NuGet Feed服务器发生。 使用软件包共享作为安装源时,我不会遇到此问题。

来源: 我查看了NuGet文档的版本控制和最近的算法,但我不知道如何违反它。

https://docs.nuget.org/ndocs/consume-packages/dependency-resolution#dependency-resolution-in-nuget-3-x

而且我也不知道指定版本是如何重要的。 https://docs.nuget.org/ndocs/create-packages/dependency-versions#dependency-versions

我自己的结论:

似乎问题出现在Feed服务器中以及它如何找到依赖项。我在git上查看了NuGet.Server源代码,但还没有注意到任何内容。我可能最终会打倒源并搞清楚。

无论饲料来源类型如何,这种情况都不可行吗?

编辑:

这是一个私人nuget Feed和私人nugets,不在我可以公开分享的任何回购中。

我使用此处引用的版本> =表示法在整个情况下构建引用树。

<!-- Accepts any version 6.1 and above -->
<dependency id="ExamplePackage" version="6.1" />

2 个答案:

答案 0 :(得分:0)

我同意您的意见,“无论饲料来源类型如何,这种情况都有效”。

对于安装A然后B失败:请确认情况B中Pkg A,Pkg C的依赖版本的约束是否与情况A一致。如果情况A中的高版本依赖Pkg A,Pkg C安装首先,然后安装具有低版本依赖性的情境B,安装将失败。同样的问题:Is there an OData dependency graph somewhere?。

对于Feed源:请检查NuGet Feed服务器中Pkg A和Pkg B的软件包版本是否与Share package文件夹一致。

如果此问题仍然存在,请与我们分享NuGet包ID,我会在我身边重复:)

答案 1 :(得分:0)

看起来它是Nuget缓存在本地的组合。

我执行以下命令来清除它们。

VS2015一直在抱怨安装相同的软件包版本,因为我一直在搞乱1.0.0.0和1.0.0版本,这是有道理的。

https://docs.microsoft.com/en-us/nuget/consume-packages/managing-the-nuget-cache

我发出了每个命令,并且重启后能够完全清空缓存。它现在有效,我不再解决问题了。