Консоль диспетчера пакетов NuGet: «update-package -project ...» не обновляет все установленные пакеты - PullRequest
4 голосов
/ 22 июля 2011

У меня есть конфигурация пакетов в 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 , так и *На 1024 * ссылается 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.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 Ответ

2 голосов
/ 06 октября 2011

Ваш packages\repositories.config присутствует и правильный?

Поскольку большинство людей не проверяют папку пакетов, файл теряется.Некоторые из команд NuGet заглядывают туда сначала и терпят неудачу.Некоторые действия (например, установка пакета в проекте) приведут к его повторной генерации.

У меня была очень похожая проблема с неработающими обновлениями, но как только я добавил новый проект, они затем начали работать правильно.

...