Восстановление пакетов NuGet до последней версии - PullRequest
0 голосов
/ 02 октября 2018

В проекте я использовал несколько собственных источников NuGet.Очевидно, некоторые из них больше не доступны, но у меня есть более новые (и только более новые) версии пакетов на другом (все еще работающем) сервере.Есть ли способ восстановить пакеты непосредственно до новейших версий, не заменяя вручную все ссылки в файлах .csproj и packages.config?

Я попытался запустить Updade-Package -Reinstall, но я получаю только следующую ошибкусообщение:

Some NuGet packages are missing from the solution. The packages need to be restored in order to build the dependency graph. Restore the packages before performing any operations.

1 Ответ

0 голосов
/ 12 октября 2018

Если некоторые пакеты, которые вы используете (и все еще хотите использовать), более недоступны, я предлагаю вам сделать их резервную копию.

Найдите кэш Nuget на вашем сервере.В Windows он находится по адресу

% userprofile% .nuget \ packages

Найдите пакеты (и версию), которые вы хотите сделать резервную копию, и скопируйте файлы .nupkg вих соответствующие папки.

Тогда у вас есть два варианта:

  1. Создать личный канал Nuget
  2. Создать локальный канал Nuget onваша машина разработки

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

Для 2-го варианта: просто создайте папку C:/Nuget и укажите любую .nupkg, какую вы хотите.Затем в Visual Studio перейдите к:

Инструменты -> Диспетчер пакетов Nuget -> Настройки диспетчера пакетов -> Источники пакетов

Нажмите зеленую кнопку +, чтобы добавитьновый источник, просто дайте ему имя Local и перейдите к C:/Nuget, чтобы установить источник.

С этого момента, когда вы захотите восстановить пакеты Nuget, Visual Studio будет сначала просматривать nuget.org feed, и если он не найдет указанные пакеты, он будет просматривать ваш локальный канал и кэшировать установленный пакет на %userprofile%.nuget\packages вашего компьютера.

Я надеюсь, что ответ на ваш вопрос, яЯ не совсем уверен в том, что вы спросили, и в ваших знаниях о Nuget.

ОБНОВЛЕНИЕ:

Мне кажется, теперь я понимаю ваш вопрос лучше.

Прежде всего, я думаю, вы неправильно поняли команду Update-Package -Reinstall.Он переустановит пакеты с той же версией, на которую уже ссылались, но просто переустановит их.Это полезная команда, например, когда вы меняете целевую структуру вашего проекта.Затем вы можете переустановить те же версии пакетов, и они перенастроят эту версию .NET Framework.

Так что, если nuget restore не работает, то Update-Package -Reinstall, очевидно, тоже потерпит неудачу.

В Nuget, когда что-то не работает, вы не должны настаивать, а вместо этого найти настройку, которая заставит его снова работать.Я не могу сосчитать, сколько раз я обращался к разным кэшам, чтобы удалить некоторые кэшированные пакеты.

Я думаю, вам следует попробовать использовать nuget restore и посмотреть, какие пакеты вызывают проблемы, а затем удалить эти пакеты (этопросто удалите ссылку из .csproj и packages.config, если они еще не установлены в проекте), тогда вы, наконец, сможете установить самую новую версию этих пакетов.

...