NuGet 还原无法看到未安装包

NuGet Restore Failing to See that Packages are not Installed

我们的 CI 服务器在尝试构建项目时无法恢复我们的 NuGet 包。它认为它们已经安装。这是日志:

build 16-Apr-2015 12:56:38 C:\build-dir\IOP-IOL-JOB1>nuget restore IOHandlerLibrary.sln -NoCache build 16-Apr-2015 12:56:39 All packages listed in packages.config are already installed.

是什么导致 NuGet 认为包已安装?它是在解决方案中还是在项目文件中?

NuGet 将在恢复时检查解决方案的包目录。

它检查此包目录是否包含 NuGet 包的 .nupkg 和清单文件,如果是,它认为 NuGet 包已在本地安装。

该消息表明解决方案包目录中已提供这些包。可能是因为您的构建服务器在签出源代码时没有清理现有目录,而是每次都将源代码签出到同一目录。

我遇到了同样的问题。

当我 运行 为 sln 恢复 nuget 时:

> nuget restore MySolution.sln
MSBuild auto-detection: using msbuild version '14.0' from 'C:\Program Files 
(x86)\MSBuild.0\bin'.
All packages listed in packages.config are already installed.

当我 运行 为解决方案中的每个项目分别执行还原命令时:

> nuget restore MySolution.Common\packages.config -PackagesDirectory .\packages
Restoring NuGet package Microsoft.Azure.KeyVault.WebKey.3.0.0.
Restoring NuGet package Microsoft.Rest.ClientRuntime.2.3.13.
Restoring NuGet package Microsoft.Azure.KeyVault.3.0.0.
Restoring NuGet package Microsoft.Rest.ClientRuntime.Azure.3.3.15.
Restoring NuGet package NLog.4.5.9.
Restoring NuGet package Autofac.4.8.1.
Restoring NuGet package Microsoft.WindowsAzure.ConfigurationManager.3.2.3.
Restoring NuGet package System.IO.4.3.0.
....

所有引用都回来了,解决方案在此之后正确构建。 似乎是 Nuget 错误。

我也有同样的问题,但对我来说,即使删除 packages 目录也会导致 All packages listed in packages.config are already installed..

原来 packages.config 文件无效。好吧,有点:

<packages xmlns="urn:packages">
  ...
</packages>

我不知道哪个工具插入了 XML 命名空间,但这就是 nuget 没有尝试安装 任何 包的原因。

改回

<packages>
  ...
</packages>

帮我解决了。