【问题标题】:Dependency specified was X but ended up with Y指定的依赖项是 X,但最终是 Y
【发布时间】:2017-02-21 07:57:47
【问题描述】:

我已将类库的 project.json 更新为目标 netstandard1.3net64

随着那个变化:

$ dotnet restore
log  : Restoring packages
warn : Dependency specified was NETStandard.Library (>= 1.3.0) but ended up with
       NETStandard.Library 1.6.0.

我正在发布一个库,并且确实需要定位 netstandard1.3/net46

我如何诊断为什么要使用更高版本?

【问题讨论】:

    标签: .net .net-core project.json dotnet-restore


    【解决方案1】:

    我在 NuGet issue 上对此进行了跟进,@emgarten 指出 NETStandard.Library 包只有 1.6.0 版本,但 1.6.0 版本包含 netstandard1.3 的程序集。

    所以在这种情况下,我请求的 1.3 版本在任何地方都不存在,并且警告是通知它正在使用更高版本。

    但是,诊断信息可能仍会提供更多信息。你可以vote on the issue如果它也让你绊倒并且你希望看到它更清楚。

    【讨论】:

      【解决方案2】:

      当您不处理 NuGet 时,就像在我的情况下您自己的项目一样,也会发生此错误。

      您要做的第一件事是确保您拥有Solution Items -> global.json 中提到的正确版本。

      那么你可能需要刷新每个引用这个项目的 project.json,因为 VS2015 并不总是正确刷新:

      1. 打开 project.json 并切断给出警告的行
      2. 保存文件并等待“正在恢复包...消息”消失
      3. 将该行粘贴回
      4. 再次保存文件

      另一种强制刷新的方法是在解决方案或项目级别运行dotnet restore --no-cache

      【讨论】:

        【解决方案3】:

        对我来说,只需删除锁定文件 (project.lock.json) 即可。删除这个文件后,Nuget自动恢复了所有的包,问题就消失了。

        免责声明

        虽然它对我有用,但我不确定这是否是一种适用于所有人的深刻的做事方式。所以在删除这个文件之前请注意你在做什么。

        【讨论】:

          【解决方案4】:

          当一个公共库项目在多个解决方案中时,我遇到了这个问题。

          库项目的目录位置已更改,并且在一个解决方案中更新了 global.json 文件。

          另一方面,sln 文件已针对项目的新文件位置进行了更新。但是,global.json 没有。由于项目已移动到更高的目录,旧的 global.json 文件引用的位置过于具体。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-11-01
            • 2013-04-07
            • 2014-10-30
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多