2013-05-28 2 views
20

Я на Nuget 2.5.4. Функция «Управление пакетами для всего решения» для установки обновлений периодически показывает «ложные срабатывания».nuget менеджер пакетов не синхронизирован

По ложному утверждению я имею в виду указание на то, что что-то в решении нуждается в обновлении, НО каждый проект в решении уже находится на последнем обновлении. По крайней мере я думаю это то, что происходит.

Например, nuget предлагает помощь в установке NUnit, но каждый пакет имеет серый цвет. Испытательные проекты должны быть серыми, так как они уже находятся на последней версии.

Пакеты без NUnit также недоступны, и я думаю, что их не должно быть, поэтому диспетчер решений может их установить. Поэтому не уверен, что моя ложноположительная теория верна, но что-то не синхронизировано.

Какое исправление?

Приветствия,

enter image description here

enter image description here

+0

Мой источник управления иногда блокирует конфигурационные файлы, так что мои 'web.config' и' packages.config' иногда не синхронизируются после обновления NuGet. – Jasen

+0

@ Jasen. Как вы пересинхронизируете, когда это произойдет? – Berryl

+0

Окно 'output', которое обычно отображает события сборки, покажет, что обычно не так с обновлением/установкой NuGet. Большую часть времени, освобождая readonly в файлах конфигурации, затем выполнение другого обновления исправляет файлы конфигурации. В противном случае я должен удалить и переустановить некоторые пакеты. – Jasen

ответ

1

Мой исходный контроль иногда блокирует конфигурационные файлы таким образом, что мой web.config и packages.config иногда не синхронизированы после обновления NuGet.

Окно output, которое обычно отображает события сборки, покажет, что обычно не так с обновлением/установкой NuGet.

Большую часть времени, освобождая readonly в файлах конфигурации, затем выполнение другого обновления исправит файлы конфигурации. Если это не сработает, я должен удалить и переустановить некоторые пакеты.

Редактировать: В зависимости от типа вашего проекта у вас может не быть файла web.config, а не всех пакетов, которые записываются в настройки конфигурации приложения.

+0

Хммм, я не вижу web.config. У меня есть package.config в папке Nuget вместе с Nuget.targets и exe. Не уверен, что я знаю, что вы подразумеваете под выпуском readonly. Я использую svn здесь. – Berryl

+0

Я попытался удалить и переустановить NUnit в одном проекте, что я могу сделать на уровне решения. Однако он не очистил ситуацию обновления. – Berryl

+0

web.config и packages.config находятся под каждым узлом проекта. – Jasen

19

С выходом Process Monitor, кажется, что решением широких обновления определяются на основе содержимого Packages папки, которая находится под корнем решения:

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

Итак, чтобы синхронизировать это, вы должны очистить эту папку, а затем восстановить пакеты своего решения. После этого в следующий раз, когда вы откроете это диалоговое окно, он покажет правильные результаты.

12

Перейдите непосредственно к физическому каталогу пакетов для решения, что-то вроде C: \ projects \\ packages.

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

0

Много позже, но упоминание в случае, если кто-то еще приходит. Запустив NuGet 2.8.x, я столкнулся с такой же проблемой с графическим интерфейсом менеджера пакетов (перейдите в консоль для обновления, и в нем указывается каждый пакет последним).

Чтобы решить проблему, я очистил каталог пакетов проектов (за исключением, конечно, файла repositories.config), который, в свою очередь, показал, что конфликт версий NuGet: в корне моего решения каталог .nuget содержит устаревший NuGet.exe. Я удалил каталог .nuget, перестроил, и теперь мы снова готовы к работе (все пакеты загружены и в пакетах только пакеты с обновлениями отображаются).

0

Решение для меня заключалось в закрытии Visual Studio и удалении всего содержимого из папки /packages. Вы также можете удалить все подпапки с /packages, которые перечислены в списке обновлений NuGet, которые являются ложными срабатываниями.

Смежные вопросы