NuGet包管理器控制台:“update-package -project ...”不会更新所有已安装的包

时间:2011-07-22 14:31:12

标签: visual-studio-2010 nuget package-management

我在ProjectX中有一个包配置如下:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Castle.Core" version="2.5.2" />
  <package id="Castle.Windsor" version="2.5.3" />
  <package id="CommonServiceLocator" version="1.0" />
  <package id="MyCompany.Enum" version="1.1.0.11" />
  <package id="MyCompany.Common" version="1.1.0.9" />
  <package id="MyCompany.Castle.Installers" version="1.1.0.13" />
</packages>

当我在Package Manage Console中发出以下命令时:

update-package -project ProjectX

我看到以下输出:

No updates available for 'MyCompany.Castle.Installers'.
No updates available for 'CommonServiceLocator'.
No updates available for 'Castle.Windsor'.
No updates available for 'Castle.Core'.

我碰巧知道有一个更新的MyCompany.Enum,为什么不在输出中列出?我知道NuGet会在您安装时尝试使用最低版本,但在这种情况下,我希望update-package将其更新为最新版本。

我尝试使用以下命令强制它更新MyCompany.Enum

update-package -project MyCompany.Services.MyService MyCompany.Enum

这次有错误信息:

Update-Package : Unable to find package 'MyCompany.Enum' in 'MyCompany.Services.MyService'.
At line:1 char:15
+ update-package <<<<  -project MyCompany.Services.ProjectX MyCompany.enum
    + CategoryInfo          : NotSpecified: (:) [Update-Package], InvalidOperationException
    + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PowerShell.Commands.UpdatePackageCommand

这很奇怪,因为在MyCompany.Enum 中列出了packages.config,而ProjectX在解决方案资源管理器中引用了

这可能是什么原因?如果它是一个nuget bug,很好,但我希望我误解了它是如何工作的。我听说repositories.config有类似奇怪的事情,但无法将这些问题与我在这里看到的任何问题联系起来。

非常感谢提前。

更新
如果我使用此命令手动将MyCompany.Enum包安装到ProjectX:

install-package -project ProjectX MyCompany.Enum

然后我得到了这个输出:

'MyCompany.Enum 1.5.0.1' already installed.
Successfully added 'MyCompany.Enum 1.5.0.1' to MyCompany.Services.ProjectX.

但遗憾的是,现在我的MyCompany.Enum文件中有两个 packages.config个实例:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Castle.Core" version="2.5.2" />
  <package id="Castle.Windsor" version="2.5.3" />
  <package id="CommonServiceLocator" version="1.0" />
  <package id="MyCompany.Enum" version="1.1.0.11" />
  <package id="MyCompany.Common" version="1.1.0.9" />
  <package id="MyCompany.Castle.Installers" version="1.1.0.13" />
  <package id="MyCompany.Enum" version="1.5.0.1" />
</packages>

1 个答案:

答案 0 :(得分:2)

您的packages\repositories.config是否存在且正确?

因为大多数人都没有检查包文件夹,所以文件丢失了。一些NuGet命令首先查看,然后失败。某些操作(例如在项目中安装包)将导致它重新生成。

我有一个非常类似的问题,更新无效,但是一旦我添加了一个新项目,他们就开始正常工作了。