指定的依赖关系是X但最终得到Y

时间:2016-10-12 13:28:27

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

我已将类库的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

如何诊断为何使用更高版本呢?

4 个答案:

答案 0 :(得分:6)

我在NuGet issue上跟进了这个,@ emgarten指出NETStandard.Library包只有1.6.0版本,但1.6.0版本包含{{1}的程序集}。

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

然而,诊断仍然可以提供更多信息。你可以vote on the issue,如果它也让你绊倒,你希望看到它更清楚。

答案 1 :(得分:1)

当你不处理NuGet时,但就我自己的项目而言,也可能发生此错误。

您要做的第一件事是确保您在Solution Items -> global.json中引用了正确的版本。

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

  1. 打开project.json并剪切提示警告的行
  2. 保存文件并等待“恢复包...”消息'消失
  3. 将该行重新粘贴到
  4. 再次保存文件
  5. 强制刷新的另一种方法是在解决方案或项目级别运行dotnet restore --no-cache

答案 2 :(得分:1)

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

<强>声明

虽然它对我有用,但我不确定这是否是一种深刻的做法,对每个人都有用。因此,请在删除此文件之前注意您的操作。

答案 3 :(得分:0)

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

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

另一方面,sln文件已更新为项目的新文件位置。但是,global.json没有。由于项目已移至更高的目录,旧的global.json文件引用的位置过于具体。