Nuget包...在项目中不存在...包...已经存在于文件夹中。

30

我已经为此错误奋斗了数小时,但找不到有效的解决方案。

我有一个ASP.Net API在多项目解决方案中,其引用/依赖项配置不正确,我已经尝试修复了两天。

问题是( 我认为 )API缺少System.Web.Http / System.Web.Http.WebHost,这显然包含在Microsoft.AspNet.WebApi.Core中(根据多个其他Stack Overflow问题)。 尝试通过Nuget安装它时,当尝试解析依赖项时出现以下错误。 此外,每次我都会遇到此错误(请参见本问题后面的故障排除):

Package Manager Console截图

我以无特定顺序执行了以下步骤(每个步骤多次以不同组合方式执行):

  • 运行 'Update-package Microsoft.AspNet.WebApi.Core -reinstall'
  • 删除解决方案范围内的“Packages”文件夹并删除项目的packages.config,然后尝试还原包
  • 从物理驱动器和TFS中删除整个项目,并从头开始创建它(它带着错误的引用创建)
  • 通过命令行和Nuget GUI安装包
  • 将解决方案检出到硬盘上的不同位置,以尽可能新鲜的方式开始
  • 重新启动计算机/重新启动Visual Studio

目前,我可以接受非清洁修复,只要它能解决问题。 API曾经工作过,但是然后我将其检入TFS,创建了一个分支,现在正在该分支上工作。 可能没有包含某些依赖项(?),但即使是这种情况,我所采取的步骤也应该解决问题。


1
在TFS中,'Packages'文件夹是否已经被检入? - vendettamit
2
你尝试过运行 update-package -reinstall 吗?该命令会重新安装所有项目中的所有包。 - nazarevic
2
我曾经看到过这个问题发生,因为这些包文件夹被检入了,而重新安装失败,因为正在执行检出操作以更新包文件。从 TFS 中删除包文件夹是有效的解决方法。无论如何,不建议将包保留在源代码控制中。 - vendettamit
1
@vendettamit 您的建议与nazarevic的建议合作得很好。非常感谢。如果你们中任何一个想把它写成一个正式的答案,我将高兴地接受并投赞成票。 - Ranger
1
我在VS2015中遇到了这个问题。同时我也在运行VS2013,在那里执行相同的命令没有问题:S - RuudvK
显示剩余4条评论
5个回答

12
关闭解决方案,然后进入你硬盘上的packages文件夹并删除其所有内容。再次在Visual Studio中打开应用程序,它将自动尝试还原packages。清理解决方案并构建它。

1
在我的情况下,我认为是因为我刚刚以非调试(Ctrl + F5)模式运行了Web应用程序。重新启动Visual Studio解决了这个问题。 - NickBeaugié
1
在我们的情况下,这发生在我们的构建服务器上,因此必须在构建服务器使用的用户上执行此操作,而本地开发则没有问题。 - Alan Macdonald

8
清除缓存解决了我的问题。在“工具 > 选项 > NuGet 包管理器 > 通用”菜单下有一个名为“清除所有 NuGet 缓存”的选项,可以清除缓存。

3

首先,通过包管理器控制台卸载特定的NuGet包。

然后,请卸载参考了此Nugget包的项目,右键单击 -> 卸载项目。

卸载后,在项目中右键单击并选择“编辑{项目名称}.csproj”

在之前卸载NuGet包的XML中查找NuGet包条目并删除它。

从包管理器控制台重新安装该软件包...


卸载是我遗漏的关键步骤。 - HackSlash
我卸载了项目,它对我起作用了。感谢您的回答。尽管如此,人们会认为微软不会让你处于这样的境地,即必须安装已卸载但无法卸载或安装的内容!哇! - JosephDoggie

2

其他答案都对我没用,它一直在无限循环中安装、还原、重启VS,毫无进展。

最终我不得不这样做:

  1. 关闭VS。
  2. 从packages文件夹中删除有问题的包。
  3. 手动编辑packages.config文件,添加我需要安装的包名称和版本。
  4. 当我再次打开解决方案时,右键单击项目并说“管理NuGet包”,然后点击出现在横幅上的“还原”按钮。这将安装拒绝安装的包。

天哪!微软需要向yarn学习如何正确进行包管理。


注意:参考文献仍未正确添加,因此我想安装它们没有任何好处。 - NH.

0

我发现我安装的软件包是错误/过时的。当我试图删除它们时,我遇到了这个错误。这里提供的解决方案都无法解决我的问题。我进入了项目文件并删除了有问题的软件包,然后刷新了 NuGet,它们就消失了。然后我就能够下载替代的 NuGet 软件包了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接