У меня есть решение с несколькими проектами. Большинство сторонних ссылок отсутствуют, но packages.config
для каждого проекта есть файл. Как мне получить NuGet для установки / обновления всех необходимых пакетов? Нужно ли это делать через командную строку для каждого проекта?
674
Ответы:
Вы можете использовать nuget.exe для восстановления ваших пакетов или, установив NuGet 2.7 или выше, вы можете просто скомпилировать свое решение в Visual Studio, которая также восстановит отсутствующие пакеты.
Для NuGet.exe вы можете запустить следующую команду для каждого проекта.
Или с NuGet 2.7 вы можете восстановить все пакеты в решении с помощью командной строки.
Оба из них снесут пакеты. Однако файлы вашего проекта не будут изменены при выполнении этой команды, поэтому в проекте уже должна быть ссылка на пакеты NuGet. Если это не так, вы можете использовать Visual Studio для установки пакетов.
В NuGet 2.7 и более поздних версиях Visual Studio автоматически восстанавливает отсутствующие пакеты NuGet при создании решения, поэтому нет необходимости использовать NuGet.exe.
Чтобы обновить все пакеты в вашем решении, сначала восстановите их, а затем вы можете либо использовать NuGet.exe для обновления пакетов, либо из Visual Studio вы можете обновить пакеты из окна консоли диспетчера пакетов, или, наконец, вы можете использовать Управление Диалог пакетов.
Из командной строки вы можете обновить пакеты в решении до последней версии, доступной на nuget.org.
Обратите внимание, что это не будет запускать сценарии PowerShell ни в каких пакетах NuGet.
В Visual Studio вы можете использовать Консоль диспетчера пакетов для обновления пакетов. Преимущество этого заключается в том, что любые сценарии PowerShell будут запускаться как часть обновления, при этом использование NuGet.exe не будет их запускать. Следующая команда обновит все пакеты в каждом проекте до последней версии, доступной на nuget.org.
Вы также можете ограничить это одним проектом.
Если вы хотите переустановить пакеты на те же версии, которые были установлены ранее, вы можете использовать
-reinstall
аргумент сUpdate-Package
командой.Вы также можете ограничить это одним проектом.
-reinstall
Вариант будет первым удалить , а затем установить пакет обратно в проект.Или вы можете обновить пакеты, используя
Manage Packages
диалоговое окно.Обновления:
-reinstall
источник
Update-Package -reinstall -Project ProjectName
Переустановите все пакеты во ВСЕХ ПРОЕКТАХ текущего решения:
Переустановите все пакеты в СПЕЦИАЛЬНОМ ПРОЕКТЕ текущего решения ( благодаря unarity и ashes999 ):
источник
Существует другой, более новый и более быстрый способ сделать это из Visual Studio. Прочтите этот пост Дэвида Эббо и, если у вас возникнут проблемы, обратитесь к разделу комментариев. По сути, вы делаете следующее в приглашении диспетчера пакетов:
После этого, когда вы создаете свое решение, пакеты будут автоматически установлены, если они отсутствуют.
Обновить:
Эта функциональность встроена в Nuget 1.6 с интеграцией Visual Studio, поэтому вам даже не нужно устанавливать NuGetPowerTools или вводить команды. Все, что вам нужно сделать, это
Прочтите эту статью для более подробной информации.
источник
Вот еще одно решение, если вы используете проекты веб-сайтов или не хотите включать восстановление пакета NuGet.
Вы можете использовать консоль диспетчера пакетов, чтобы перечислить все пакеты в файле package.config и переустановить их.
источник
$packages.packages.package | % { Update-Package -reinstall -id $($_.id) }
Update-Package -Reinstall
.Это лучший и самый простой пример, который я нашел. Он переустановит все нюансы, перечисленные в packages.config, и сохранит текущие версии. Заменить
YourProjectNameGoesHere
на название проекта.источник
В последней версии NuGet 2.5 в диспетчере пакетов теперь есть кнопка «Обновить все»: http://docs.nuget.org/docs/release-notes/nuget-2.5#Update_All_button_to_allow_updating_all_packages_at_once
источник
Я использую Visual Studio 2015, и приведенные выше решения не помогли мне, поэтому я сделал следующее:
Удалите папку пакетов из моего решения, а также папки bin и obj из каждого проекта в решении и перестройте его.
Может быть, у вас будет следующая ошибка:
Чтобы решить эту проблему: измените эту строку в вашем файле NuGet.targets и установите для него значение true:
Ссылка: https://stackoverflow.com/a/30918648 и https://stackoverflow.com/a/20502049
источник
Если вы устанавливаете Nuget 2.8, установите флажок
в Visual Studio. Если этот флажок установлен, то просто перестройте проект, чтобы восстановить все ваши справочные библиотеки.
источник
Allow NuGet to download missing packages
флажок.После 3 часов поиска и расследования.
У меня были проблемы с этим, потому что у нас есть два члена в команде (используя контроль исходного кода GitHub), потому что мы не ограничивали файлы для пакетов для отправки в удаленный репозиторий, один из членов команды отправлял пакеты на сервер, и я получил эти изменения мой местный
После этого у меня возникла та же проблема, что и в ПО, также я не смог опубликовать свой API-проект на сервере.
На и я только что использовал
Update-Package -Reinstall - запустить эту команду в консоли диспетчера пакетов
Эта команда переустановит все ваши пакеты, которые вы использовали в своем решении. (Для каждого проекта)
Переустановите все пакеты во ВСЕХ ПРОЕКТАХ текущего решения:
Update-Package -ProjectName 'NameOfProject' -Reinstall - запустить эту команду в консоли диспетчера пакетов
Эта команда переустановит все ваши пакеты, относящиеся к проекту, который вы указали после "-ProjectName". И я думаю, что это лучше, потому что мне пришлось ждать полчаса, чтобы переустановить все пакеты в решении.
За это большое спасибо Родольфу Броку .
Также я бы порекомендовал вам при извлечении изменений с удаленного сервера нажать кнопку «Восстановить пакеты», которая будет отображаться в Visual Studio.
источник
Я считаю, что первое, что вам нужно сделать, это включить функцию восстановления пакетов . Смотрите также здесь . Это делается на уровне решения (не проекта).
Но это не поможет вам полностью - я столкнулся с подобной проблемой после включения функции восстановления. (VS2013, NuGet 2.8.)
Оказалось, что я (непреднамеренно) отправил пакеты в систему управления версиями, когда зафиксировал проект, но Visual Studio (и плагин управления версиями) услужливо проигнорировали двоичные файлы при выполнении регистрации.
Проблема возникла, когда я создал ветку релиза. Моя локальная копия ветки dev / main / trunk имела двоичные файлы, потому что именно там я изначально установил / загрузил пакеты.
Тем не менее, в новой ветке релиза,
.nupkg
файлами и файлы были там - так что NuGet не думала, что было что-то восстанавливать;Я удалил все папки с пакетами
$(SolutionDir)/packages
(в ветке релиза), а затем запустил полную перестройку, и на этот раз сборка прошла успешно.... и затем, конечно, я вернулся и удалил папки с пакетами из системы контроля версий (в стволе и в ветке релиза). Мне не ясно (пока),
repositories.config
следует ли удалять файл.Многие из компонентов, установленных для вас шаблонами проектов - по крайней мере, для веб-проектов - являются пакетами NuGet. То есть эта проблема не ограничивается добавленными вами пакетами.
Поэтому включите восстановление пакета сразу после создания проекта / решения, и перед выполнением начальной регистрации очистите
packages
папку (и убедитесь, что вы передаете.nuget
папку в систему контроля версий).Отказ от ответственности: я видел другой ответ здесь на SO, который указал, что очистка
packages
папки была частью резолюции. Это поставило меня на правильный путь, поэтому я хотел бы отдать должное автору, но больше не могу найти этот вопрос / ответ. Я опубликую правку, если наткнусь на нее.Я также хотел бы отметить, что
Update-Package -reinstall
будет изменять файлы.sln
и.csproj
/.vbproj
. По крайней мере, так оно и было в моем случае. Что ИМХО делает этот вариант гораздо менее привлекательным.источник
Я попытался,
Update-Package -reinstall
но это не удалось на пакете, и остановил обработку всех оставшихся пакетов проектов в моем решении.Я закончил со своим скриптом, который перечисляет все файлы package.config и запускается
Update-Package -Reinstall -ProjectName prj -Id pkg
для каждого проекта / пакета.Надеюсь, что это может быть полезно для кого-то:
Редактировать: это ошибка, которая у меня была: Update-Package: Невозможно найти пакет 'EntityFramework.BulkInsert-ef6'. Существующие пакеты должны быть восстановлены перед установкой или обновлением. Ручной запуск
Update-Package -Reinstall -ProjectName my_prj -Id EntityFramework.BulkInsert-ef6
работал очень хорошо.источник
Для тех, кто прибывает сюда из-за несоответствия сервера сборки, вы можете создать цель MSBuild, запустив команду exec для запуска команды восстановления nuget, как показано ниже (в этом случае nuget.exe находится в папке .nuget, а не в путь), который затем можно запустить на этапе сборки TeamCity непосредственно перед созданием решения.
источник
теперь консоль диспетчера пакетов Nuget в Visual Studio 2012 автоматически предоставляет кнопку «Восстановить», как только она находит любой пакет, не установленный, но находящийся в файле package.config. Потрясающая особенность!
источник
На VS2012 V11, если я использую «-Reinstall» в конце строки, это не работает.
Поэтому я просто использовал:
источник
Я знаю, что это старый пост, но подумал, что это может быть полезно. Если вам необходимо игнорировать определенные пакеты во время процесса обновления (например, любые пакеты, которые обновляют ссылки JavaScript), используйте следующий сценарий PowerShell (убедитесь, что для вашего источника пакетов установлено значение «Все» в консоли диспетчера пакетов):
РЕДАКТИРОВАТЬ 25.09.2014 10:55 EST - Исправлена ошибка в скрипте
источник
Не знаю с каких пор, но в VS2019 вы можете сделать это проще:
источник
В Visual Studio 2017 - при компиляции с использованием IDE - он загрузит все недостающие пакеты nuget и сохранит в папке «пакеты».
Но на сборочной машине компиляция выполнялась с использованием msbuild.exe. В этом случае я скачал nuget.exe.
Во время каждого процесса сборки перед выполнением msbuild.exe. Он выполнит -> nuget.exe restore NAME_OF_SLN_File (если есть только один файл .SLN, вы можете проигнорировать этот параметр).
источник
MSbuild -t:restore Xxxx.sln