Я зарегистрировался в проекте на одном компьютере, проверил на другом и обнаружил, что двоичные файлы, установленные NuGet, отсутствуют. Я мог бы также проверить их в системе контроля версий, но, похоже, есть лучшее решение:
http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages
Я следовал этим инструкциям, теперь у меня есть .nuget
папка, в которой нужно находиться, и в моем файле .csproj есть следующие записи:
<RestorePackages>true</RestorePackages>
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />
и все же, когда я перестраиваю свое решение, отсутствующие пакеты не восстанавливаются.
Чего мне не хватает? Как я могу диагностировать эту проблему?
Ответы:
Обратите внимание, что вы можете принудительно выполнить восстановление пакета, выполнив следующие команды в консоли диспетчера пакетов nuget
Принудительно переустанавливает все в решении.
Принудительно переустанавливает все в проекте myProj.
Примечание : это ядерный вариант. При использовании этой команды вы можете не получить те же версии установленных пакетов, что может привести к проблемам. Это реже происходит на уровне проекта, чем на уровне решения.
Вы можете использовать
-safe
параметр параметра командной строки, чтобы ограничить обновления до более новых версий с одним и тем же компонентом Major и Minor версии. Эта опция была добавлена позже и решает некоторые проблемы, упомянутые в комментариях.источник
Для тех, кто наткнулся на этот пост, прочитайте это.
NuGet 2.7+ познакомил нас с автоматическим восстановлением пакетов . Это считается гораздо лучшим подходом для большинства приложений, поскольку он не вмешивается в процесс MSBuild. Меньше головных болей.
Некоторые ссылки для начала:
источник
Вы должны выбрать один из следующих способов:
Переустановка пакета по его имени во всех проектах решения:
Переустановка пакета по имени и игнорирование его зависимостей во всех проектах решения:
Переустановка пакета по его имени в проекте:
Переустановка всех пакетов в конкретном проекте:
Переустановка всех пакетов в решении:
источник
Вы включили режим восстановления пакетов в проекте, в котором отсутствуют недостающие пакеты / двоичные файлы? Существует известная проблема, которая требует правильной установки пакетов при включении режима восстановления:
http://nuget.codeplex.com/workitem/1879
Исходная ссылка не работает; это может быть заменой: https://github.com/NuGet/Home/issues/1968
источник
VS 2017
Инструменты> Диспетчер пакетов NuGet> Настройки диспетчера пакетов> Общие Нажмите «Очистить все кэш-память NuGet»
источник
Я столкнулся с этой проблемой в двух сценариях.
Во-первых, когда я пытаюсь построить свое решение из командной строки, используя msbuild.exe. Во-вторых, когда я пытаюсь собрать sln и содержащие проекты на моем сервере сборки, используя TFS и CI.
Я получаю ошибки, утверждая, что ссылки отсутствуют. При проверке моего локального каталога сборки и сервера TFS я вижу, что папка / packages не создается, а пакеты nuget не копируются. Следование инструкциям, приведенным в ответе Александра, http://nuget.codeplex.com/workitem/1879 также не сработало для меня.
Я включил восстановление пакетов через VS2010, и я видел, что сборки работают только из VS2010. Опять же, использование msbuild fails. Мой обходной путь, вероятно, совершенно недопустим, но для моей среды это все работает как из локальной командной строки, так и из сборки CI в TFS.
Я вошел в. \ Nuget и изменил эту строку в файле .nuget \ NuGet.targets:
из:
to: (обратите внимание, без кавычек вокруг переменных)
Я понимаю, что если в моих каталогах есть пробелы, это не получится, но у меня нет пробелов в моих каталогах, и поэтому этот обходной путь заставил мои сборки завершиться успешно ... на данный момент.
Я скажу, что включение регистрации уровня диагностики в вашей сборке поможет показать, какие команды выполняет msbuild. Это то, что заставило меня временно взломать файл целей.
источник
Если что-то еще не работает, попробуйте:
Работал на меня, и это легко попробовать.
источник
Если ни один из других ответов не работает для вас, попробуйте следующее, которое было единственным, что сработало для меня:
Найдите свой
.csproj
файл и отредактируйте его в текстовом редакторе.Найдите
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
тег в вашем.csproj
файле и удалите весь блок.Переустановите все пакеты в решении:
После этого ваши пакеты nuget должны быть восстановлены, я думаю, что это может быть незначительный случай, который происходит только тогда, когда вы перемещаете свой проект в другое место.
источник
Просто для других, которые могут столкнуться с этой проблемой, я смог решить проблему, закрыв Visual Studio и снова открыв проект. Когда проект был загружен, пакеты были восстановлены на этапе инициализации.
источник
Для меня у меня был пустой тег NuGetPackageImportStamp в .csproj
В идеале он должен содержать некоторый действительный идентификатор GUID.
Удаление вышеупомянутого тега и затем «Восстановление Nugets» работало для меня.
источник
Иногда происходит что-то странное, и использование Visual Studio для автоматического восстановления не работает. В этом случае вы можете использовать консоль диспетчера пакетов NuGet. Это открывается в Visual Studio из Сервис -> Диспетчер пакетов NuGet -> Консоль диспетчера пакетов . Команды в консоли просты. А чтобы получить контекстную помощь при вводе команды, просто нажмите кнопку, и она предоставит вам все опции, которые начинаются с букв, которые вы вводите. Поэтому, если пакет не установлен, например, log4net, введите следующую команду:
Инсталляционный пакет log4net
Вы можете сделать намного больше, например указать версию для установки, обновить пакет, удалить пакет и т. Д.
Я должен был использовать консоль, чтобы помочь мне, когда Visual Studio вел себя как чудак.
источник
Автоматическое восстановление пакета не будет выполнено по одной из следующих причин:
В следующей статье более подробно рассказывается, как работать с пунктами 1-3: https://docs.nuget.org/consume/package-restore/migrating-to-automatic-package-restore
источник
После того, как я восстановил систему в моей системе, у меня сломались пакеты NuGet, и я делал резервные копии примерно два дня. (Тем временем пакеты NuGet были установлены.) Чтобы исправить это, мне пришлось перейти в папку .nuget \ packages в моем профиле пользователя, найти пакеты и удалить их. Только в этом случае Visual Studio будет обновлять пакеты и добавлять их как ссылки.
источник
Лучший обходной путь, который я нашел, - создать новый проект с нуля, а затем импортировать все исходные файлы с кодом. Мой проект не был таким сложным, поэтому у меня не было никаких проблем.
источник
Ни одно из других решений не сработало в моей ситуации:
Зависимости AspNetCore были установлены / удалены и кэшировались. «AspNetCore.All» откажется корректно обновить / переустановить / удалить. И независимо от того, что я делал, он использовал кэшированные зависимости (с которыми он не был совместим), потому что они были более высокой версией.
PackageReference
bin
,obj
папкиTools > Nuget Package Manager > Package Manager Settings
иClear all Nuget caches
. Проверьте консоль, поскольку она может не удалить некоторые элементы - скопируйте путь к папке и выйдите из Visual Studio.Если это все еще не работает, повторите, но также найдите ваш диск в проводнике Windows
nuget
и удалите все, что выглядит кэшированным.источник
vs2015 no enable проблема восстановления nuget. Мое решение:
добавить папку .nuget, добавить файл NuGet.Config и NuGet.targets в каталог .nuget
каждый файл проекта добавить: построить
источник
Если ошибка, с которой вы столкнулись, это «невозможно подключиться к удаленному серверу», как это было у меня, было бы полезно иметь эту проверку в дополнение к проверкам, приведенным в комментариях выше.
Я увидел, что есть 2 источника пакетов NUGET, из которых можно было загрузить пакеты (в меню «Инструменты» -> «Диспетчер пакетов Nuget» -> «Настройки диспетчера пакетов»). Один из источников пакетов не работал, и Nuget пытался загрузить только из этого источника.
Все стало на свои места после того, как я изменил исходный код пакета для загрузки с: https://www.nuget.org/api/v2/ ЯСНО в настройках
источник
В моем случае прерванная попытка восстановления Nuget повредила один из
packages.config
файлов в решении. Я не обнаружил это до проверки моего рабочего дерева git. После отмены изменений в файле восстановление Nuget снова заработало.источник
Существует ярлык для восстановления Nuget: 1. Убедитесь, что интернет-соединение или URL-адреса Nuget указаны в меню параметров VS Tools. 2. Посмотрите на папку .nuget или nuget в решении, иначе - скопируйте из любого файла, чтобы получить nuget.exe.
УДАЛИТЬ пакеты папок, если существует
Откройте консоль диспетчера пакетов и выполните эту команду
источник
В VS2017 щелкните правой кнопкой мыши решение => Открыть CommandLine => Командная строка разработчика.
Как только это откроется, введите (и нажмите ввод после)
Это восстановит все / все пакеты, и вы получите хороший консольный вывод о том, что было сделано ...
источник