Подтвердить что ты не робот

Nuget Update-Package не распознает установленный пакет → Ошибка обновления

Я установил пакет NuGet (который мы разработали в проекте) в VS-проекте. Когда я запускаю Update-Package в проекте nuget я Get:

Update-Package : 'Project name' was not installed in any project. Update failed.
At line:1 char:15
+ Update-Package <<<<  Project name
    + CategoryInfo          : NotSpecified: (:) [Update-Package], InvalidOperationException
    + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PowerShell.Commands.UpdatePackageCommand

Я проверил файл package.config, чтобы убедиться, что пакет NuGet определен, и это так. Любые подсказки?

4b9b3361

Ответ 1

Я работаю над тем же проектом, что и Tomas, и я попытался выяснить, когда эта проблема возникает и почему. Кажется, это происходит, когда у нас есть одна или несколько старых версий пакета в папке пакетов и пытаемся выдать команду "update-package".

Перед выдачей команды наша папка и конфиг пакетов выглядит следующим образом:

Папка пакетов:

Common.WebApi.1.0.0.109
Common.WebApi.1.0.0.110

Конфигурация пакетов:

<packages>
    <package id="Common.WebApi" version="1.0.0.110" />
    <package id="System.Json" version="4.0.20126.16343" />
    <package id="System.Net.Http" version="2.0.20126.16343" />
</packages>

Теперь при выпуске "update-package Common.WebApi" мы получаем ошибку: Обновление пакета: "OPF.Common.WebApi" не был установлен ни в одном проекте. Не удалось выполнить обновление.

Чтобы исправить это, я удаляю старый пакет "Common.WebApi.1.0.0.109" из папки пакетов и повторно запускаю команду, которая затем работает.

Очевидный вопрос: почему у меня есть старый пакет в папке с папками? Это происходит с нами, потому что мы не используем наши собственные пакеты для контроля источника. Вместо этого мы используем описанный здесь подход: http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages

В этой ситуации возникает "проблема старого пакета":
1. Разработчик A обновляет пакет и фиксирует файл package.config для управления исходным кодом
2. Разработчик B получает последнюю версию от исходного элемента управления и получает обновленный файл package.config 3. Разработчик B создает проект, и новый пакет создается в его папке пакетов
4. Nuget не удаляет старый пакет разработчика B из своей папки с папками, поэтому у разработчика B теперь есть и старый пакет, и новый пакет в его папке пакетов, но только ссылка в пакете .config на новую версию.

Мне кажется, что Nuget не ожидает, что в папке пакетов будет более одной версии пакета и будет запутано, если вы попытаетесь обновить пакет с несколькими версиями [в папке пакетов], хотя вы ссылаетесь только на один пакет из package.config.

Ответ 2

Недавно у меня была очень похожая проблема - оказалось, что пакетов /repositories.config не было (потому что мы не фиксируем папку пакетов). Я сделал что-то в VS (возможно, добавив новый пакет в проект), который заставил VS регенерировать файл repositories.config, в котором перечислены все пакеты из всех проектов. После этого обновление отлично работало.

Ответ 3

У меня была та же проблема. Мы не проверяем папку пакетов (задача сборки nuget загружает все пакеты).

Единственный способ решить проблему - удалить папку пакетов, а затем перестроить проект.

Ответ 4

Вот как мне удалось получить последнюю версию менеджера пакетов:

  • Запустите VS2010 в режиме администратора (запустите как администратор)
  • Инструменты > Добавить в Менеджере > Удалить NuGet
  • Перезапустить Visual Studio
  • Установить NuGet

Voila!

Надеюсь, что это поможет.

Ответ 5

Другой способ:

  • НЕ восстанавливаются пакеты (например, с использованием ReSharper 2016.2 Build)
  • Попробуйте обновить, пока версия пакета не существует в /packages/

Чтобы исправить, как-то запустить пакеты восстановления