Диспетчер пакетов nuget не синхронизирован
Я на Nuget 2.5.4. Функция "Управление пакетами для всего решения" для установки обновлений периодически показывает "ложные срабатывания".
По ложному утверждению я имею в виду указание на то, что что-то в решении нуждается в обновлении, но каждый проект в решении уже находится на последнем обновлении. По крайней мере, я думаю, это то, что происходит.
Например (см. ниже), nuget предлагает помочь установить NUnit, но каждый пакет неактивен. Тест-проекты должны быть серыми, так как они уже находятся на последней версии.
Пакеты без NUnit также недоступны, и я думаю, что их не должно быть, поэтому диспетчер решений может их установить. Поэтому не уверен, что моя ложноположительная теория верна, но что-то не синхронизировано.
Что такое исправление?
Приветствия,
![enter image description here]()
![enter image description here]()
Ответы
Ответ 1
Из вывода Process Monitor
кажется, что обновления для решения широко определяются на основе содержимого папки Packages
, которая находится под корнем решения:
Он сканирует папку и проверяет наличие обновлений для всех пакетов, которые были там загружены, и отобразит, что там есть обновление для старого пакета, даже если пакет с более новыми версиями также существует.
Итак, чтобы синхронизировать это, вы должны очистить эту папку, а затем восстановить пакеты своего решения. После этого в следующий раз, когда вы откроете это диалоговое окно, он покажет правильные результаты.
Ответ 2
Перейдите непосредственно в физический каталог пакетов для решения, например C:\projects\\packages.
Убедитесь, что ложные срабатывания не имеют более старых версий в этом каталоге вместе с текущими версиями.
Ответ 3
Мой исходный элемент управления иногда блокирует файлы конфигурации, так что мои web.config
и packages.config
иногда не синхронизируются после обновления NuGet.
Окно output
, которое обычно отображает события сборки, покажет, что обычно не так с обновлением/установкой NuGet.
Большую часть времени освобождая readonly в конфигурационных файлах, затем выполнение другого обновления исправляет файлы конфигурации. Если это не сработает, мне нужно удалить и переустановить некоторые пакеты.
Изменить: В зависимости от типа вашего проекта у вас может не быть файла web.config, а не все пакеты записывать в настройки конфигурации приложения.
Ответ 4
Много позже, но упоминание в случае, если кто-то еще приходит. Запуск NuGet 2.8.x, я столкнулся с такой же проблемой с графическим интерфейсом менеджера пакетов (перейдите в консоль для обновления, и в нем указывается каждый пакет последним).
Чтобы решить проблему, я очистил каталог пакетов проектов (за исключением, конечно, файла repositories.config), который, в свою очередь, показал, что существует конфликт версий NuGet: в корне моего решения каталог .nuget содержал устаревший NuGet.Exe. Я удалил каталог .nuget, перестроил его, и теперь мы снова рады (все пакеты загружены и в пакетах только пакеты с обновлениями отображаются).
Ответ 5
Решение для меня заключалось в закрытии Visual Studio и удалении всего содержимого из папки /packages
. Вы также можете удалить все подпапки из /packages
, которые перечислены в списке обновлений NuGet, которые являются ложными срабатываниями.