Восстановление Пакета NuGet Не Работает
Я проверил проект на одном компьютере, проверил на другом и обнаружил, что двоичные файлы, установленные NuGet, отсутствуют. Я мог бы проверить их в системе управления версиями, но похоже, что есть лучшее решение:
http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages
я следовал этим инструкциям, теперь есть .nuget папка, где он должен быть, есть следующие записи в моем .csproj файл файл:
<RestorePackages>true</RestorePackages>
<Import Project="$(SolutionDir).nugetnuget.targets" />
и все же, когда я перестраиваю свое решение, недостающие пакеты не восстанавливаются.
чего мне не хватает? Как я могу диагностировать эту проблему?
19 ответов:
Примечание Вы можете принудительно выполнить восстановление пакета, выполнив следующие команды в консоли диспетчера пакетов nuget
Update-Package-Reinstall
заставляет переустановить все в решении.
Update-Package-Reinstall-ProjectName myProj
принудительная переустановка всего в проекте myProj.
Примечание: это ядерные выбор. При использовании этой команды вы можете не получить те же версии пакетов, которые вы установили, и это может привести к проблемам. Это менее вероятно на уровне проекта, чем на уровне решения.
можно использовать
-safeпараметр командной строки для ограничения обновлений до более новых версий с тем же основным и дополнительным компонентом версии. Эта опция была добавлена позже и решает некоторые проблемы, упомянутые в комментариях.Update-Package-Reinstall-Safe
для тех, кто наткнется на этот пост, прочтите это.
NuGet для 2.7+ познакомил нас с Автоматическое Восстановление Пакета. Это считается гораздо лучшим подходом для большинства приложений, поскольку он не вмешивается в процесс MSBuild. Меньше головных болей.
некоторые ссылки, чтобы вы начали:
вы включили режим восстановления пакетов в проекте, в котором отсутствуют пакеты / двоичные файлы ? Существует известная проблема, которая требует правильной установки пакетов при включении режима восстановления:
вы должны выбрать один из способов следующий :
переустановка пакета по его имени во всех проектах решения:
Update-Package –reinstall <packageName>переустановка пакета по его имени и игнорирование его зависимостей во всех проектах решения:
Update-Package –reinstall <packageName> -ignoreDependenciesпереустановка пакета по его имени в проекте:
Update-Package –reinstall <packageName> <projectName>переустановка всех пакетов в конкретном проекте:
Update-Package -reinstall -ProjectName <projectName>переустановка всех пакетов в a решение:
Update-Package -reinstall
я столкнулся с этой проблемой в двух сценариях.
во-первых, когда я пытаюсь построить свое решение из командной строки с помощью msbuild.исполняемый. Во-вторых, когда я пытаюсь построить sln и содержащие проекты на моем сервере сборки с помощью TFS и CI.
Я получаю ошибки, утверждая, что ссылки отсутствуют. При проверке как моего локального каталога сборки, так и сервера TFS я вижу, что папка /packages не создана, а пакеты nuget не копируются. Следуя инструкциям, перечисленным в ответе Александра http://nuget.codeplex.com/workitem/1879 у меня тоже не получилось.
Я включил пакеты восстановления через VS2010, и я видел, что сборки работают только из VS2010. Опять же, с помощью msbuild fails.My обходной путь, вероятно, полностью недействителен, но для моей среды это заставило все работать из командной строки локально, а также из сборки CI в TFS.
Я вошел .\nuget и изменил это линии .nuget\NuGet.целевой файл:
от:
<RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" -o "$(PackagesDir)"</RestoreCommand>to: (обратите внимание, без кавычек вокруг переменных)
<RestoreCommand>$(NuGetCommand) install $(PackagesConfig) -source $(PackageSources) -o $(PackagesDir)</RestoreCommand>Я понимаю, что если мои каталоги имеют пробелы в них, это не удастся, но у меня нет пробелов в моих каталогах, и поэтому этот обходной путь получил мои сборки для успешного завершения...на данный момент.
Я скажу, что включение регистрации уровня диагностики в вашей сборке поможет показать, какие команды выполняются выполняется msbuild. Это то, что привело меня к взлому целевого файла временно.
VS 2017
Сервис>Диспетчер Пакетов NuGet > Настройки Диспетчера Пакетов>Общие Нажмите на кнопку " Очистить все NuGet кэш(Ы)"
только для других, которые могут столкнуться с этой проблемой, я смог решить эту проблему, закрыв Visual Studio и снова открыв проект. Когда проект был загружен, пакеты были восстановлены на этапе инициализации.
если ни один из других ответов не работает для вас, попробуйте следующее, что было единственным, что сработало для меня:
найти
.csprojфайл и редактировать его в текстовом редакторе.найти
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">тег в.csprojфайл и удалить весь блок.переустановите все пакеты в решении:
Update-Package -reinstallпосле этого ваши пакеты nuget должны быть восстановлены, я думаю, что это может быть крайний случай, который возникает только при перемещении вашего проекта другое местоположение.
Если что-то не работает, попробуйте:
- Закрыть Проект.
- удалить папку пакетов в папке решения.
- снова откройте проект и снова восстановите пакеты самородка.
работал на меня, и это легко попробовать.
иногда происходит что-то странное, и использование Visual Studio для автоматического восстановления не работает. В этом случае вы можете использовать консоль диспетчера пакетов NuGet. Это открывается в Visual Studio из Сервис - > Диспетчер Пакетов NuGet - > Консоль Диспетчера Пакетов. Команды в консоли просты. И чтобы получить контекстную справку при вводе команды, просто нажмите кнопку, и она даст вам все параметры, которые начинаются с букв, которые вы вводите. Так что если пакет не установлен, например log4net, введите следующую команду:
Install-Package log4net
вы можете сделать намного больше, например, указать версию для установки, обновить пакет, удалить пакет и т. д.
Я должен был использовать консоль, чтобы помочь мне, когда Visual Studio действовал как чудак.
автоматическое восстановление пакета завершится неудачей по любой из следующих причин:
- вы не удалили NuGet.exe и NuGet.целевые файлы из решения .папка nuget (которую можно найти в корневой папке решения)
- вы не включили автоматическое восстановление пакета из меню Сервис > > Параметры > > Диспетчер пакетов Nuget > > Общие настройки.
- вы забыли вручную удалить ссылки во всех ваших проектах на Nuget.цели файл
- необходимо перезапустить Visual Studio (убедитесь, что процесс убит из Диспетчера задач перед запуском снова).
в следующей статье Более подробно описывается, как перейти к пунктам 1-3: https://docs.nuget.org/consume/package-restore/migrating-to-automatic-package-restore
У меня были пакеты NuGet, ломающиеся после того, как я сделал Восстановление системы в своей системе, резервное копирование около двух дней. (Тем временем были установлены пакеты NuGet.) Чтобы исправить это, я должен был пойти на.папка nuget\packages в моем профиле пользователя найдите пакеты и удалите их. Только тогда Visual Studio вытащит пакеты вниз свежими и правильно добавит их в качестве ссылок.
лучший обходной путь, который я нашел, создавая новый проект с нуля, затем импортируйте все исходные файлы с кодом. Мой проект был не так сложен, поэтому у меня не было проблем оттуда.
для меня у меня был пустой тег NuGetPackageImportStamp .csproj
<NuGetPackageImportStamp> </NuGetPackageImportStamp>в идеале он должен содержать допустимый идентификатор GUID.
удаление вышеуказанного тега, а затем "восстановление Nugets" работал для меня.
vs2015 нет проблемы с восстановлением nuget. Мое решение:
добавить папку .nuget, добавьте файл NuGet.Config и NuGet.цели в каталоге .nuget
каждый файл проекта добавить: строй
<RestorePackages>true</RestorePackages> <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" /> <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> <PropertyGroup> <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText> </PropertyGroup> <Error Condition="!Exists('$(SolutionDir)\.nuget\NuGet.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\.nuget\NuGet.targets'))" /> </Target>
Если ошибка, с которой вы столкнулись, "не может подключиться к удаленному серверу", как это было у меня, то вам было бы полезно иметь эту проверку, а также В дополнение к проверкам, приведенным в приведенных выше комментариях.
Я увидел, что есть 2 источника пакетов NUGET, из которых можно загрузить пакеты (в инструментах->Диспетчер пакетов Nuget->настройки диспетчера пакетов). Один из источников пакета не работал, и Nuget пытался загрузить из этого источника только.
все встало на свои места, как только я изменил источник пакета для загрузки с: https://www.nuget.org/api/v2/ явно в настройках
в моем случае прерванная попытка восстановления Nuget повредила один из
packages.configфайлы в растворе. Я не обнаружил этого, прежде чем проверить мое рабочее дерево git. После возврата изменений в файле NuGet restore снова работал.
есть ярлык, чтобы сделать Nuget восстановить работу, 1. Убедитесь, что подключение к интернету или NuGet URL-адреса являются правильными в меню VS Tools options 2. Смотреть.nuget или папка nuget в решении, иначе-скопируйте из любого, чтобы получить nuget.exe
удалить папки пакетов, если существует
Откройте консоль диспетчера пакетов выполните следующую команду
- вставить полный путь nuget.exe восстановить полный путь .sln файл!
- используйте команду Install-pacakge, если сборка не прошла для каких-либо отсутствующих ссылок. Надеюсь, это поможет (привет)
ни одно из других решений не сработало в моей ситуации:
зависимости AspNetCore были установлены / удалены и кэшировались. - Аспнеткор.Все " откажется правильно обновить / переустановить / удалить. И независимо от того, что я сделал, он будет использовать кэшированные зависимости (с которыми он был несовместим), потому что они были более высокой версией.
- Резервное Копирование Всего. Обратите внимание на список зависимостей, которые вам нужно переустановить, выйдите из VisualStudio
- открыть все .proj файлы в текстовом редакторе и удалить все
PackageReference- в каждом проекте, удалить
bin,objпапки- удалите все папки "пакеты", которые вы найдете в решении.
- откройте решение, войдите в
Tools > Nuget Package Manager > Package Manager SettingsиClear all Nuget caches. Проверьте консоль, потому что она может не удается удалить некоторые элементы-скопируйте путь к папке и выйдите из visual студия.- удалить что-либо из этой папки снова открыть решение и начать установки NuGet для пакеты снова с нуля.
если это все еще не работает, повторите, но также найдите свой диск в проводнике windows для
nugetи удалить все cachey глядя.
Comments