我在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>
答案 0 :(得分:2)
您的packages\repositories.config
是否存在且正确?
因为大多数人都没有检查包文件夹,所以文件丢失了。一些NuGet命令首先查看,然后失败。某些操作(例如在项目中安装包)将导致它重新生成。
我有一个非常类似的问题,更新无效,但是一旦我添加了一个新项目,他们就开始正常工作了。