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

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


person Tomas Jansson    schedule 31.08.2011    source источник
comment
У вас есть несколько решений в одной папке с общей папкой пакетов? Вы отправляете пакеты в систему контроля версий?   -  person davidfowl    schedule 01.09.2011
comment
Нет и нет. Мы не делим папку пакетов между решениями и не передаем рассматриваемый пакет в систему управления версиями. Впрочем, это уже не проблема. Я просто удалил все старые папки для рассматриваемых пакетов, и он снова начал работать.   -  person Tomas Jansson    schedule 01.09.2011
comment
Я думаю, что у меня могла быть установлена ​​другая версия в папке пакетов (поскольку мы их не проверяем) по сравнению с той, которая указана в package.config, может быть, это что-то говорит?   -  person Tomas Jansson    schedule 01.09.2011
comment
Похоже, это проблема. Как это случилось кстати?   -  person davidfowl    schedule 01.09.2011
comment
Мы настроили teamcity для создания собственных пакетов nuget и хранения их в общей папке. Когда мы устанавливаем наши собственные пакеты nuget, мы не передаем пакеты в систему управления версиями, поскольку мы контролируем эти пакеты. Я предполагаю, что я получил последний --› новый package.config, а затем попытался обновить, прежде чем я сделал сборку. Если бы я сделал сборку, это могло бы сработать, поскольку мы используем NuGetPowerTools для установки пакетов при сборке, как описано Дэвидом Эббо: blog.davidebbo.com/2011/08/. В любом случае сообщение об ошибке несколько неверно.   -  person Tomas Jansson    schedule 01.09.2011
comment
Это не. Если нет файлов пакета, он не может выполнить обновление, в этом суть.   -  person davidfowl    schedule 01.09.2011
comment
Но пакет установлен, но у меня было какое-то несоответствие версии. Но это может быть странным сценарием. Это может быть скорее ошибка пользователя, поскольку раньше у нас не было такой настройки, и к ней нужно привыкнуть.   -  person Tomas Jansson    schedule 01.09.2011
comment
Он устанавливается из POV nuget, устанавливается все, что находится на уровне решения.   -  person davidfowl    schedule 02.09.2011


Ответы (6)


Я работаю над тем же проектом, что и Томас, и я пытался выяснить, когда возникает эта проблема и почему. Кажется, это происходит, когда у нас есть одна или несколько старых версий пакета в папке пакетов и мы пытаемся выполнить команду «обновить пакет».

Перед выдачей команды наша папка пакетов и конфигурация выглядят так:

Папка с пакетами:

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. Разработчик Б получает последнюю версию из системы управления версиями и получает обновленный пакет. config
3. Разработчик Б создает проект, и новый пакет создается в его папке пакетов
4. Nuget не удаляет старый пакет разработчика Б из своей папки пакетов, поэтому у разработчика Б теперь есть и старый пакет, и новый package в своей папке пакетов, а только ссылку в package.config на новую версию.

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

person Mats Mortensen    schedule 06.03.2012
comment
Короче говоря: убедитесь, что в папке packages нет неиспользуемых версий вашего пакета. Их удаление решает проблему. - person jgauffin; 15.03.2012

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

person Danny Tuppeny    schedule 02.10.2011
comment
аналогичный вашему случаю - я 4 раза загружал файл vsix, и имена были добавлены (1), (2) и (3), как только я удалил и оставил один файл с именем NuGet.Tools.vsix, тогда это сработало. (Я считаю, что когда вы пытаетесь обновить самородок и выдает ошибку, вы больше не можете установить его из самородка. По крайней мере, это был мой опыт. - person ramnz; 13.09.2013
comment
Такой же. Слава Богу за контроль версий. - person Casey; 10.06.2014
comment
Я удалил содержимое папки \packages и запустил сборку. Затем команда работала нормально. - person Zymotik; 07.09.2015

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

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

person jgauffin    schedule 20.01.2012

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

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

Вуаля!

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

person Saksham    schedule 20.12.2011

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

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

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

person Thymine    schedule 14.10.2016

В моем /packages/repositories.config не было ссылки на package.config проекта, указанный в ошибке. Недавно я добавил в этот проект файл packages.config, а файл repositories.config не извлекался и был доступен только для чтения, поэтому не обновлялся, чтобы добавить ссылку.

Я вручную отредактировал файл repositories.config, чтобы добавить путь к новому файлу packages.config.

Чтобы избежать вышеупомянутых конфликтов версий, я также временно удалил все остальные записи в resposuitories.config. Я также сделал резервную копию / удалил все папки в /packages/, оставив только repositories.config. (Пока VS был закрыт, чтобы избежать конфликтов открытия/блокировки файлов)

Затем я снова открыл решение и запустил команду Update-Package -Reinstall для проекта, и это удалось. Затем я добавил путь packages.config каждого другого проекта обратно в repositories.config. Я также сравнил каждый package.config, чтобы убедиться, что используются одни и те же версии пакетов, если на них ссылаются несколько проектов.

person AaronLS    schedule 04.05.2021