使用 Visual Studio 包管理器控制台管理包(PowerShell)

Visual Studio 中的包管理器控制台使用 PowerShell 命令与 NuGet 包进行交互。 当无法通过 包管理器 UI 执行作时,可以使用控制台。 还可以在控制台中使用 dotnet CLINuGet CLI 命令。

本文介绍如何使用包管理器控制台中的 PowerShell 命令查找、安装、更新和卸载 NuGet 包。 有关完整的包管理器控制台 PowerShell 命令参考信息,请参阅 PowerShell 参考

重要

本文中的 PowerShell 命令和参数特定于 Visual Studio 包管理器控制台。 这些命令不同于可以在常规 PowerShell 环境中使用的 PackageManagement 模块命令 。 每个环境都有在其他环境中不可用的命令,具有相同名称的命令可能与其特定参数不同。

控制台可用性

从 Visual Studio 2017 开始,在 Visual Studio 中创建任何与 .NET 相关的工作负载时,NuGet 和 NuGet 包管理器会自动安装。 还可以通过在 Visual Studio 安装程序中选择 单个组件>代码工具>NuGet 包管理器来安装包管理器

还可以在“工具>”或“扩展菜单下搜索 NuGet 包管理器扩展。 如果无法在 Visual Studio 中使用扩展安装程序,可以直接从 https://dist.nuget.org/index.html中下载扩展。

包管理器控制台内置于 Windows 上的 Visual Studio 包管理器中。 Visual Studio Code 和 Visual Studio for Mac 不包含控制台。 Visual Studio for Mac 具有用于管理 NuGet 包的 UI,并且通过 NuGet CLI 提供等效的控制台命令。 有关详细信息,请参阅 在 Visual Studio for Mac 中安装和管理 NuGet 包

快速查找并安装包

若要使用包管理器控制台快速查找并安装包,请执行以下作:

  1. 在 Visual Studio 中打开项目或解决方案,然后选择 “工具>NuGet 包管理器>包管理器控制台 ”以打开“包管理器控制台”窗口。

  2. 在控制台中,输入 Find-Package 关键字以查找要安装的包。 例如,若要查找包含关键字 elmah的包,请运行以下命令。 如果已知道所需的包名称,请跳过此步骤。

    Find-Package elmah
    
  3. 找到名称后,使用 Install-Package 命令安装包。 例如,若要安装 Elmah.MVC 包,请输入:

    Install-Package Elmah.MVC
    

有关这些命令的更多详细信息,请参阅 “查找包安装包 ”部分。

小窍门

许多控制台操作依赖于在 Visual Studio 中打开一个具有已知路径名称的解决方案。 如果你有未保存的解决方案,或者没有解决方案,则会看到错误 “解决方案”未打开或未保存。请确保已打开并保存解决方案。 若要更正错误,请创建和保存解决方案,或保存未保存的解决方案。

控制台控件

若要在 Visual Studio 中打开包管理器控制台,请从顶部菜单中选择 “工具>NuGet 包管理器>包管理器控制台 ”。 控制台是一个 Visual Studio 窗口,你可以根据需要排列和定位。 有关详细信息,请参阅 Visual Studio 中的自定义窗口布局

默认情况下,控制台命令针对窗口顶部控件中显示的特定包源和项目进行作:

显示包源和项目的包管理器控制台控件的屏幕截图。

选择其他包源或项目会更改后续命令的默认值。 若要在不更改默认值的情况下覆盖单个命令的这些设置,大多数控制台命令都支持 -Source-ProjectName 选项。

若要管理包源,请选择齿轮图标,这将打开 “工具>选项>NuGet 包管理器>包源 ”对话框。 项目选择器旁边的控件清除控制台的内容。

显示包管理器控制台设置和清除控件的屏幕截图。

最右侧的按钮用于中断一个正在运行的长时间命令。 例如,运行 Get-Package -ListAvailable -PageSize 500 列出了默认源上的前 500 个可用包,例如 nuget.org,这可能需要几分钟时间。

显示包管理器控制台停止控件的屏幕截图。

查找包

若要在默认源中查找包,请使用 Find-Package

  • 查找并列出包含特定关键字的包:

    Find-Package <keyword1>
    Find-Package <keyword2>
    
  • 若要查找并列出名称以字符串开头的包:

    Find-Package <string> -StartWith
    
  • 默认情况下, Find-Package 返回 20 个包的列表。 使用 -First 显示更多软件包。 例如,若要显示前 100 个包,请使用:

    Find-Package <keyword> -First 100
    
  • 列出特定包的所有版本:

    Find-Package <PackageName> -AllVersions -ExactMatch
    

安装一个软件包

若要将包安装到默认项目中,请使用 Install-Package <PackageName>Install-Package 控制台命令执行以下作:

  • 执行 安装 NuGet 包时发生的情况中的步骤。
  • 在控制台窗口中显示适用的许可条款,其中包含默示协议。 如果不同意条款,应卸载包。
  • 在项目文件和 解决方案资源管理器“引用 ”节点下添加对包的引用。 必须先保存项目,然后才能查看项目文件中的更改。

默认情况下, Install-Package 将包添加到控制台窗口指定的默认项目。 若要将包添加到不是默认值的项目,请使用 -ProjectName 该选项。 例如,若要将 Elmah.MVC 包添加到非默认 UtilitiesLib 项目,请运行以下命令:

Install-Package Elmah.MVC -ProjectName UtilitiesLib

卸载软件包

若要从默认项目中卸载包,请使用 Uninstall-Package <PackageName>。 如果需要查找包名称,请使用 Get-Package 查看默认项目中安装的所有包。

Uninstall-Package 执行以下作:

  • 从项目中删除对包的引用以及任何管理格式。 引用不再显示在 解决方案资源管理器中。 可能需要重新生成项目才能删除 bin 文件夹中的引用。
  • 恢复安装包对 app.configweb.config 所做的任何更改。
  • 如果没有剩余的包使用这些依赖项,则删除以前安装的依赖项。

若要卸载包及其所有未使用的依赖项,请运行:

Uninstall-Package <PackageName> -RemoveDependencies

若要卸载包,即使其他包依赖于它,请运行:

Uninstall-Package <PackageName> -Force

更新一个包

若要更新包,请使用 Get-PackageUpdate-Package。 可以运行以下命令:

  • 若要检查是否有适用于任何已安装包的较新版本:

    Get-Package -updates
    
  • 若要更新特定包,请:

    Update-Package <PackageName>
    
  • 若要更新项目中的所有包,请执行以下作:

    Update-Package -ProjectName <ProjectName>
    
  • 若要更新解决方案中的所有包,请执行以下作:

    Update-Package
    

在控制台中使用 NuGet CLI

还可以使用 NuGet CLI 执行大多数控制台作。 但是,PowerShell 控制台命令在 Visual Studio 保存的项目和解决方案的上下文中运行,通常能执行比其等效的 NuGet CLI 命令更多的功能。 例如,通过 Install-Package 安装程序包时会向项目文件添加一个引用,但使用 NuGet 命令行工具的命令则不会添加引用。 因此,在 Visual Studio 中工作的开发人员通常更喜欢使用控制台命令,而不是 NuGet CLI。

若要在包管理器控制台中使用 NuGet CLI 命令,请安装 NuGet.CommandLine 包。

Install-Package NuGet.CommandLine

上述命令安装最新版本的 NuGet CLI。 若要安装特定版本,请使用 -Version 此选项。 例如,若要安装版本 4.4.1,请输入:

Install-Package NuGet.CommandLine -Version 4.4.1

安装 NuGet.CommandLine 包后,可以通过包管理器控制台运行所有 NuGet CLI 命令。

扩展包管理器控制台

某些包为控制台安装新命令。 例如, MvcScaffolding 创建类似于 Scaffold生成 ASP.NET MVC 控制器和视图的命令:

显示安装 NuGet.CommandLine 包后可用的 NuGet CLI 命令的屏幕截图。

配置 NuGet PowerShell 配置文件

可以创建 PowerShell 配置文件,使常用命令在所有 PowerShell 上下文中可用,因此不会丢失会话之间的 PowerShell 设置。 NuGet 支持特定于 NuGet 的配置文件,通常位于 %UserProfile%\Documents\WindowsPowerShell\NuGet_profile.ps1

若要查找用户配置文件位置,请在控制台中输入 $profile

$profile
C:\Users\<user>\Documents\WindowsPowerShell\NuGet_profile.ps1

若要确定在该位置是否存在个人资料,请输入test-path $profile。 如果命令返回 False,则需要在该位置创建具有指定名称的配置文件。 有关详细信息,请参阅 Windows PowerShell 配置文件

后续步骤