我有一个包依赖情况如下: 错误:
尝试收集包裹的依赖性信息' 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/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" />
答案 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
我发出了每个命令,并且重启后能够完全清空缓存。它现在有效,我不再解决问题了。