4

我在 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>

当我在包管理控制台中发出以下命令时:

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 错误,很好,但我希望我误解了它的工作原理。我听说过类似的怪异事件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.Enumpackages.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>
4

1 回答 1

2

你的packages\repositories.config现在是正确的吗?

因为大多数人不检查包文件夹,所以文件会丢失。一些 NuGet 命令先在那里查找,然后失败。某些操作(例如在项目中安装包)会导致它重新生成。

我有一个非常相似的问题,更新不起作用,但是一旦我添加了一个新项目,它们就会开始正常工作。

于 2011-10-06T19:58:49.527 回答