Пакет обновлений Nuget не распознает установленный пакет -> Обновление не удалось - PullRequest
41 голосов
/ 31 августа 2011

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

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 определен, и это так. Любые подсказки?

Ответы [ 5 ]

49 голосов
/ 06 марта 2012

Я работаю над тем же проектом, что и Томас, и я попытался выяснить, когда возникла эта проблема и почему. Кажется, это происходит, когда у нас есть одна или несколько старых версий пакета в папке пакетов и мы пытаемся выполнить команду «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>

Теперь при выдаче пакета обновления Common.WebApi мы получаем ошибку:
Пакет обновлений: «OPF.Common.WebApi» не был установлен ни в одном проекте. Обновление не удалось.

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

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

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

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

5 голосов
/ 02 октября 2011

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

3 голосов
/ 20 января 2012

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

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

2 голосов
/ 20 декабря 2011

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

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

Вуаля!

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

0 голосов
/ 15 октября 2016

Это может произойти и по-другому:

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...