NuGet包管理器不同步

20

我使用的是Nuget 2.5.4版本。安装更新的“管理整个解决方案的软件包”功能经常会出现“误报”。

所谓的“误报”,是指显示某些项目需要更新,但解决方案中的每个项目都已经安装了最新更新。至少我认为是这样的。

例如(见下图),nuget正在提供帮助安装NUnit,但每个软件包都是灰色的。测试项目应该是灰色的,因为它们已经是最新版本了。

没有NUnit的软件包也是灰色的,我认为它们不应该是灰色的,这样解决方案管理器就可以安装它们。所以我不确定我的误报理论是否正确,但是某些东西已经不同步了。

如何修复问题?

谢谢,

enter image description here

enter image description here


我的源代码控制有时会锁定配置文件,因此在使用NuGet更新后,我的 web.configpackages.config 有时会不同步。 - Jasen
@Jasen。当发生这种情况时,您如何重新同步? - Berryl
“output” 窗口通常会显示构建事件,它将显示 NuGet 更新/安装中出现的问题。大多数情况下,释放配置文件上的只读属性,然后进行另一个更新即可修复配置文件。否则,我必须删除并重新安装一些软件包。 - Jasen
5个回答

19
根据进程监视器的输出,看起来解决方案的全局更新是基于位于解决方案根目录下的Packages文件夹中内容确定的:
它会扫描该文件夹并检查已下载到该文件夹中所有包的更新情况,即使较新的包也在其中,它也会显示旧包有更新。
因此,为了进行同步,您应清除该文件夹,然后还原解决方案的包。之后,下次打开此对话框,它将显示正确的结果。

12
直接进入解决方案的包物理目录,例如C:\ projects \\ packages。
确保这个目录中的假阳性与当前版本不一致。

1
我的源代码控制有时会锁定配置文件,导致在NuGet更新后,我的web.configpackages.config有时不同步。

通常显示构建事件的输出窗口将显示NuGet更新/安装时通常出现的问题。

大多数情况下,释放配置文件上的只读属性,然后进行另一个更新即可修复配置文件。如果这样做不起作用,我必须删除并重新安装一些包。

编辑:根据您的项目类型,您可能没有web.config,而且并非所有包都写入应用程序配置设置。


嗯,我没有看到web.config文件。在Nuget文件夹中,我有packages.config、Nuget.targets和exe文件。不确定你所说的“release readonly”是什么意思。我在这里使用svn。 - Berryl
我尝试在一个项目上卸载并重新安装NUnit,这可以在解决方案级别上完成。然而,它并没有清理更新的情况。 - Berryl
web.config和packages.config位于每个项目节点下。 - Jasen
我的源代码控制应该释放只读文件锁,但有时候在 NuGet 更新时它并没有这样做,我需要手动检出配置文件。 - Jasen

0
对我来说,解决方案是关闭Visual Studio并删除/packages文件夹中的所有内容。您还可以删除NuGet更新列表中列出的所有/packages子文件夹,这些都是误报。

0
较晚但提及以便其他人参考。在运行NuGet 2.8.x时,我遇到了与包管理器GUI相同的问题(转到控制台进行更新,它会声明每个包都是最新的)。
为了解决这个问题,我清理了我的项目包目录(当然除了repositories.config文件),这反过来揭示了一个NuGet版本冲突:在我的解决方案根目录中,.nuget目录包含一个过时的NuGet.exe。我删除了.nuget目录,重新构建,现在我们又可以继续前进了(所有包都已下载,并且在包管理器中只显示有更新的包)。

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