Источник недоступен при использовании консоли диспетчера пакетов NuGet


153

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

Почему-то Install-Packageпродолжает говорить мне, что галерея nuget недоступна.

Источник на nuget.org [ https://www.nuget.org/api/v2/] недоступен. Откат к NuGet Local Cache

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

Что может вызвать это? Есть ли способ переопределить источники пакетов для каждого решения / проекта?


3
У меня такая же проблема. Я установил VS 2013 Update 2 вчера, возможно, это новая ошибка ...? Кстати, я могу установить любой пакет через диалоговое окно «Управление пакетами NuGet» без проблем, эта проблема возникает только в консоли диспетчера пакетов.
rsenna

2
У меня такая же проблема. Всегда работает в диалоговом окне «Управление пакетами» - никогда не работает в консоли диспетчера пакетов.
Дэвид Тэнси

10
Перезапуск Visual Studio исправил это для меня ಠ_ಠ
Крис Марисик

Ответы:


338

Несмотря на то, что мой источник пакета был установлен на nuget.org в консоли диспетчера пакетов, явное добавление -Source nuget.orgаргумента исправило это для меня.

Таким образом, пример использования будет:

Install-Package Akka.net -Source nuget.org

Akka.net - это ваш пакет, который вы хотите установить, это просто пример здесь.


1
Я перезапустил свой компьютер и Visual Studio. но .. добавление -Source nuget.org действительно помогло моему новому экземпляру .vbproj в моем существующем мультипроекте .sln
bkwdesign

Куда добавить этот аргумент и как? Можете ли вы дать больше информации.
Раденко Зец

Это также сработало для меня (прямо сейчас, на самом деле!). Я пытался установить более старую версию jQuery, но она продолжала вызывать ошибку: «Источник на nuget.org [ nuget.org/api/v2/] ». Я не знаю, как это исправить, хотя.
Loudenvier

спасибо, я сделал так:Install-Package jQuery.UI.Combined -Source nuget.org
Shaijut

7
Ты хоть представляешь, как это работает? Мне просто любопытно, потому что это не имеет никакого смысла для меня, даже если это работает. Итак, ошибка говорит, что источник на nuget.org [ nuget.org/api/v2/] недоступен, а затем я указываю тот же источник, -Source nuget.orgи он работает?
Владимиров

10

Мне пришлось скопировать исходный код NuGet в настройках Visual Studio. С помощью скопированного источника я изменил URL с httpsна http. Это решило проблему для меня.

Кредит на это предложение принадлежит здесь: https://nuget.codeplex.com/discussions/561075#PostDetailsCell_1354351 , «jpharris4».


Это очень хороший момент. NuGet может быть чувствителен к проверке сертификата.
Этьен Махе

6

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

Как только решение активирует NuGet Package Restore, в него добавляется папка с именем .nuget. Под этим будет файл с именем «NuGet.targets», который имеет ItemGroup с условием «$ (PackageSources) '==», как тот, который вы увидите на прикрепленном изображении.

Если ItemGroup пуста (или полностью закомментирована, как на рисунке), тогда решение будет использовать определенный файл, который должен совпадать с источниками, перечисленными в разделе ИНСТРУМЕНТЫ >> ОПЦИИ. Но если вы раскомментируете или добавляете элементы PackageSource в эту ItemGroup, решение будет искать источники пакетов, перечисленные и ТОЛЬКО те, которые перечислены.

Содержимое файла Nuget.targets


2
Источники пакетов, определенные в файле NuGet.targets, влияют только на источники, используемые во время сборки, когда восстанавливается пакет. Источники пакетов в файле NuGet.config в каталоге .nuget будут влиять на источники пакетов, доступные для проекта в Visual Studio.
Мэтт Уорд

У меня действительно включено восстановление пакета для этого решения. ItemGroup настроена так же, как на скриншоте, который, как я полагаю, является настройкой по умолчанию, поэтому я не думаю, что это проблема. Однако восстановление пакета было включено значительно давно, и с тех пор целевой файл изменился. Я попытался обновить эти файлы до последней версии, удалив их и снова включив восстановление пакета, и похоже, что это решило проблему.
Этьен Махе

Или не. Сначала это сработало, но после восстановления пакетов для решения и перезапуска Visual Studio проблема вернулась.
Этьен Махе

Несколько уточняющих вопросов: 1) Есть ли у вас правильные версии, на которые есть ссылки в packages.config? 2) Подтвердили ли вы, что искомая версия все еще существует на сервере NuGet ? 3) Вы очистили раствор и затем восстановили его после завершения 1) и 2)?
Омнидисциплинар

1
Если это утешит - я получаю эту проблему, но только на моем рабочем компьютере, и это происходит с большинством проектов. Странно то, что это прерывисто, что сводит меня с ума!
Мэтт

6

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

введите описание изображения здесь

Похоже, в VS 2015 еще есть несколько ошибок, связанных с api.nuget.org (v3).


2

В моей консоли диспетчера пакетов я не мог видеть источники

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

Я нашел источники. Сняв их, а затем вернув их, я снова появился в консоли диспетчера пакетов.


2

Я должен был предоставить командира вместе с полным URL-адресом, как Install-Package MySql.Data.Entity -Version 6.9.8 -Source http://www.nuget.org/api/v2


1

В моем случае причина была в том, что у пакета было соглашение. Через интерфейс «Управление пакетами NuGet» вы можете принять и продолжить.

Консоль диспетчера пакетов в VS 2013, похоже, имеет проблему с этим. Как уже говорили другие, перезапуск VS 2013 может решить его для консоли.


1

Это работает для меня в VS 2015 prof: Инструменты -> Параметры -> Диспетчер пакетов Nuget -> Источники пакетов

  1. Нажмите кнопку Добавить
  2. Редактировать в имени метки: nuget.org
  3. Изменить в ярлыке источника: https://www.nuget.org/api/v2/
  4. Нажмите ОК

Надеюсь, поможет ;)


Для VS 2015 вы должны использовать v3 их списка ... не v2! Взято с домашней страницы канала NuGet v3 (VS 2015 / NuGet v3.x ): api.nuget.org/v3/index.json Канал NuGet v2 (VS 2013 и более ранние версии
Пол Захра

0

У меня была та же проблема с тем же сообщением. Но причиной моей проблемы была потеря связи с TFS. Мой TFS-сервер был размещен в другой сети, и я использовал VPN для доступа к нему. Когда я попытался установить пакет без установленного соединения с TFS (VPN был отключен), я получил ту же проблему.

Помните об этом поведении TFS.


0

Происходит потому, что вы работаете в автономном режиме, при повторном подключении к сети необходимо будет выйти и снова войти в систему. Диспетчер пакетов будет плавно переинициализирован.


0

Я столкнулся с этой проблемой VS2013 и потратил впустую 3 часа времени.

Не уверен, что послужило причиной проблемы. Но ни одно из вышеперечисленных решений не помогло мне.

Переустановка консоли диспетчера пакетов Nuget работала для меня.

Сервис -> Расширения и обновления -> В разделе «Все» найдите диспетчер пакетов Nuget для Visual Studio и нажмите «Удалить».

Перейдите на страницу https://marketplace.visualstudio.com/items?itemName=NuGetTeam.NuGetPackageManagerforVisualStudio2013 и загрузите расширение.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.