Установка пакетов и управление ими с помощью консоли диспетчера пакетов в Visual Studio (PowerShell)
Консоль диспетчера пакетов NuGet позволяет использовать команды PowerShell NuGet для поиска, установки, удаления и обновления пакетов NuGet. Это удобно, когда пользовательский интерфейс диспетчера пакетов не позволяет выполнять операции. См. подробнее об использовании CLI nuget.exe в консоли.
Консоль встроена в Visual Studio для Windows. Она не включена в Visual Studio для Mac и Visual Studio Code.
Важно!
Перечисленные здесь команды относятся только к консоли диспетчера пакетов в Visual Studio и отличаются от команд модуля "Управление пакетами", доступных в общей среде PowerShell. В частности, в каждой среде есть команды, недоступные в другой среде, а в командах с тем же именем могут отличаться некоторые аргументы. При использовании консоли "Управление пакетами" в Visual Studio применяются команды и аргументы, описанные в этой статье.
Поиск и установка пакета
Для поиска и установки пакета необходимо выполнить три простых шага:
Откройте проект или решение в Visual Studio, а затем откройте консоль с помощью команды Средства > Диспетчер пакетов NuGet > Консоль диспетчера пакетов.
Найдите пакет, который требуется установить. Если вы уже знакомы с этим процессом, перейдите к шагу 3.
# Find packages containing the keyword "elmah" Find-Package elmahВыполните команду установки:
# Install the Elmah package to the project named MyProject. Install-Package Elmah -ProjectName MyProject
Важно!
Все операции, доступные в консоли, также можно выполнить с помощью CLI NuGet. Но команды консоли работают в контексте Visual Studio и сохраненного проекта или решения, и область их применения часто шире, чем у их эквивалентов в CLI. Например, при установке пакета с помощью консоли добавляется ссылка на проект, а при использовании команды CLI этого не происходит. По этой причине разработчики, работающие в Visual Studio, обычно предпочитают использовать консоль вместо CLI.
Совет
Многие операции консоли зависят от наличия решения, открытого в Visual Studio с использованием известного имени пути. Если у вас нет решения или оно не сохранено, отобразится сообщение об ошибке "Решение не открыто или не сохранено. Убедитесь, что вы открыли и сохранили решение". Это означает, что консоль не может определить папку решения. Эту ошибку можно исправить, сохранив несохраненное решение или создав и сохранив решение, если оно не открыто.
Открытие консоли и элементов управления консоли
Откройте консоль в Visual Studio с помощью команды Средства > Диспетчер пакетов NuGet > Консоль диспетчера пакетов. Консоль — это окно Visual Studio, которое может быть упорядочено и размещено по вашему усмотрению (см. руководство по настройке макетов окон в Visual Studio).
По умолчанию команды консоли работают с конкретным источником пакета и проектом, как указано в элементе управления в верхней части окна.

Выбор другого источника пакета или проекта изменяет эти значения по умолчанию для последующих команд. Чтобы переопределить эти настройки, не меняя значения по умолчанию, большинство команд поддерживают параметры
-Sourceи-ProjectName.Чтобы управлять источниками пакетов, щелкните значок шестеренки. Это ярлык для диалогового окна Средства > Параметры > Диспетчер пакетов NuGet > Источники пакетов, как описано на странице Пользовательский интерфейс диспетчера пакетов. Кроме того, элемент управления справа от средства выбора проектов очищает содержимое консоли.

Крайняя правая кнопка прерывает команду, которая выполняется в течение долгого периода времени. Например, выполнение
Get-Package -ListAvailable -PageSize 500перечисляет первые 500 пакетов в источнике по умолчанию (например, nuget.org), что может занять несколько минут.
Установка пакета
# Add the Elmah package to the default project as specified in the console's project selector
Install-Package Elmah
# Add the Elmah package to a project named UtilitiesLib that is not the default
Install-Package Elmah -ProjectName UtilitiesLib
См. подробнее об Install-Package.
При установке пакета в консоли выполняются те же действия, которые описаны в руководстве по установке пакета NuGet, со следующими дополнениями:
- Консоль отображает применимые условия лицензии в окне с соответствующим соглашением. Если вы не согласны с условиями, следует сразу же удалить пакет.
- Кроме того, ссылка на пакет добавляется в файл проекта и отображается в обозревателе решений в узле Ссылки. Сохраните проект, чтобы просмотреть изменения непосредственно в файле проекта.
Удаление пакета
# Uninstalls the Elmah package from the default project
Uninstall-Package Elmah
# Uninstalls the Elmah package and all its unused dependencies
Uninstall-Package Elmah -RemoveDependencies
# Uninstalls the Elmah package even if another package depends on it
Uninstall-Package Elmah -Force
См. подробнее об Uninstall-Package. Если необходимо найти идентификатор, чтобы просмотреть все пакеты, установленные в проекте по умолчанию, используйте команду Get-Package.
При удалении пакета выполняются следующие действия:
- Удаляются ссылки на пакет из проекта (и любого используемого формата управления). Ссылки больше не отображаются в обозревателе решений (возможно, потребуется перестроить проект, чтобы он был удален из папки Bin).
- Отменяются все изменения, внесенные в
app.configилиweb.configпри установке пакета. - Удаляются ранее установленные зависимости, если остальные пакеты не используют эти зависимости.
Обновление пакета
# Checks if there are newer versions available for any installed packages
Get-Package -updates
# Updates a specific package using its identifier, in this case jQuery
Update-Package jQuery
# Update all packages in the project named MyProject (as it appears in Solution Explorer)
Update-Package -ProjectName MyProject
# Update all packages in the solution
Update-Package
См. подробнее о Get-Package и Update-Package.
Поиск пакета
# Find packages containing keywords
Find-Package elmah
Find-Package logging
# List packages whose ID begins with Elmah
Find-Package Elmah -StartWith
# By default, Get-Package returns a list of 20 packages; use -First to show more
Find-Package logging -First 100
# List all versions of the package with the ID of "jquery"
Find-Package jquery -AllVersions -ExactMatch
См. подробнее о Find-Package. В Visual Studio 2013 и более ранних версиях используйте команду Get-Package.
Доступность консоли
Начиная с Visual Studio 2017, NuGet и диспетчер пакетов NuGet автоматически устанавливаются при выборе рабочей нагрузки, связанной с .NET. Вы также можете установить эти компоненты отдельно, щелкнув Отдельные компоненты > Средства для работы с кодом > Диспетчер пакетов NuGet в установщике Visual Studio.
Кроме того, если у вас нет диспетчера пакетов NuGet в Visual Studio 2015 и более ранних версиях, щелкните Сервис > Расширения и обновления и найдите расширение "Диспетчер пакетов NuGet". Если вы не можете использовать установщик расширений в Visual Studio, скачайте расширение отсюда: https://dist.nuget.org/index.html.
Консоль диспетчера пакетов сейчас недоступна в Visual Studio для Mac. Но аналогичные команды доступны через CLI NuGet. В Visual Studio для Mac есть пользовательский интерфейс для управления пакетами NuGet. См. подробнее о включении пакета NuGet в проект.
Консоль диспетчера пакетов не входит в Visual Studio Code.
Расширение консоли диспетчера пакетов
Некоторые пакеты устанавливают новые команды для консоли. Например, MvcScaffolding создает команды, например команду Scaffold (см. ниже), которая, в свою очередь, создает контроллеры и представления ASP.NET MVC.

Настройка профиля PowerShell NuGet
Профиль PowerShell позволяет сделать часто используемые команды доступными при использовании PowerShell. NuGet поддерживает профиль NuGet, который обычно находится в следующем расположении:
%UserProfile%\Documents\WindowsPowerShell\NuGet_profile.ps1
Чтобы найти профиль, в консоли введите $profile.
$profile
C:\Users\<user>\Documents\WindowsPowerShell\NuGet_profile.ps1
См. подробнее о профилях Windows PowerShell.
Использование CLI nuget.exe в консоли
Чтобы добавить CLInuget.exe в консоль диспетчера пакетов, установите пакет NuGet.CommandLine из консоли.
# Other versions are available, see https://www.nuget.org/packages/NuGet.CommandLine/
Install-Package NuGet.CommandLine -Version 4.4.1