Восстановление пакета NuGet не работает - PullRequest
151 голосов
/ 26 января 2012

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

http://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages

Я следовал этим инструкциям, теперь у меня есть папка .nuget, в которой нужнобыть, есть следующие записи в моем файле .csproj:

<RestorePackages>true</RestorePackages>
<Import Project="$(SolutionDir)\.nuget\nuget.targets" />

и все же, когда я перестраиваю свое решение, отсутствующие пакеты не восстанавливаются.

Чего мне не хватает?Как я могу диагностировать эту проблему?

Ответы [ 20 ]

1 голос
/ 27 мая 2015

Автоматическое восстановление пакета завершится неудачно по любой из следующих причин:

  1. Вы не удалили файлы NuGet.exe и NuGet.targets из папки решения .nuget (который можно найти в корневой папке вашего решения)
  2. Вы не включили автоматическое восстановление пакета в меню Инструменты >> Параметры >> Диспетчер пакетов Nuget >> Общие параметры.
  3. Вы забыли удалить вручнуюссылки во всех ваших проектах на файл Nuget.targets
  4. Вам необходимо перезапустить Visual Studio (убедитесь, что процесс завершен из диспетчера задач перед повторным запуском).

В следующей статье более подробно рассказывается, как поступить с пунктами 1-3: https://docs.nuget.org/consume/package-restore/migrating-to-automatic-package-restore

1 голос
/ 25 июня 2014

Иногда происходит что-то странное, и использование Visual Studio для автоматического восстановления не работает. В этом случае вы можете использовать консоль диспетчера пакетов NuGet. Он открывается в Visual Studio из Инструменты -> Диспетчер пакетов NuGet -> Консоль диспетчера пакетов . Команды в консоли просты. А чтобы получить контекстную помощь при вводе команды, просто нажмите кнопку, и она предоставит вам все опции, которые начинаются с букв, которые вы вводите. Поэтому, если пакет не установлен, например, log4net, введите следующую команду:

Install-Package log4net

Вы можете сделать гораздо больше, например указать версию для установки, обновить пакет, удалить пакет и т. Д.

Мне пришлось использовать консоль, чтобы помочь мне, когда Visual Studio вел себя как чудак.

1 голос
/ 23 марта 2017

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

1 голос
/ 31 августа 2016

У меня разорвались пакеты NuGet после того, как я восстановил систему в моей системе, создав резервную копию примерно через два дня.(Тем временем пакеты NuGet были установлены.) Чтобы исправить это, мне пришлось перейти в папку .nuget \ packages в моем профиле пользователя, найти пакеты и удалить их.Только в этом случае Visual Studio обновит пакеты и добавит их в качестве ссылок.

0 голосов
/ 30 января 2019

В VS2017 щелкните правой кнопкой мыши решение => Открыть CommandLine => Командная строка разработчика.

Когда откроется окно, введите (и нажмите клавишу ввода после)восстановит все / все пакеты, и вы получите хороший вывод из консоли того, что было сделано ...

0 голосов
/ 11 апреля 2016

vs2015 no enable проблема восстановления nuget. Мое решение:

  1. добавить папку .nuget, добавить файл NuGet.Config и NuGet.targets в каталог .nuget

  2. каждый файл проекта добавляет: строить

  <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>
0 голосов
/ 12 марта 2018

Ни одно из других решений не работало в моей ситуации:

Зависимости AspNetCore были установлены / удалены и кэшировались. «AspNetCore.All» откажется корректно обновить / переустановить / удалить. И независимо от того, что я делал, он использовал кэшированные зависимости (с которыми он не был совместим), потому что они были более высокой версией.

  1. Резервное копирование всего. Обратите внимание на список зависимостей, которые необходимо переустановить, выйдите из VisualStudio
  2. Откройте все файлы .proj в текстовом редакторе и удалите все PackageReference
  3. В каждом проекте удалите папки bin, obj
  4. Удалите все папки «пакетов», которые вы найдете в решении.
  5. Раскройте решение, перейдите в Tools > Nuget Package Manager > Package Manager Settings и Clear all Nuget caches. Проверьте консоль, потому что она может не удается удалить некоторые элементы - скопируйте путь к папке и выйдите из визуального студия.
  6. Удалите что-нибудь из этой папки. Откройте решение и запустите повторная установка пакетов nuget с нуля.

Если это по-прежнему не работает, повторите, но также найдите на вашем диске в проводнике Windows nuget и удалите все, что выглядит кэшированно.

0 голосов
/ 15 апреля 2016

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

Я увидел, что существует 2 источника пакетов NUGET, из которых можно было загрузить пакеты (в меню «Инструменты» -> «Диспетчер пакетов Nuget» -> «Настройки диспетчера пакетов»).Один из источников пакетов не работал, и Nuget пытался загрузить только из этого источника.

Все изменилось после того, как я изменил источник пакета для загрузки из: https://www.nuget.org/api/v2/ ЯВНО внастройки

0 голосов
/ 06 декабря 2016

В моем случае прерванная попытка восстановления Nuget повредила один из packages.config файлов в решении. Я не обнаружил этого до проверки моего рабочего дерева git. После отмены изменений в файле восстановление Nuget снова заработало.

0 голосов
/ 24 января 2017

Существует ярлык для восстановления Nuget, 1. Убедитесь, что интернет-соединение или URL-адреса Nuget указаны в меню параметров VS Tools 2. Посмотрите на папку .nuget или nuget в решении, иначе - скопируйте из любого, чтобы получить nuget.exe

УДАЛИТЬ папки с пакетами, если существует

Откройте консоль диспетчера пакетов и выполните эту команду

  • вставьте полный путь к nuget.exe ВОССТАНОВИТЬ полныйпуть к файлу .sln!
используйте команду Install-pacakge, если сборка не прошла для каких-либо пропущенных ссылок.Надеюсь, что это поможет (HIH)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...