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

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

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

重要

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

控制台可用性

从 Visual Studio 2017 开始,NuGet 和 NuGet 包管理器会在 Visual Studio 中创建任何 .NET 相关工作负载时一起自动安装。 你还可以通过在 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 中自定义窗口布局

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

Screenshot that shows the Package Manager Console controls for package source and project.

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

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

Screenshot that shows the Package Manager Console settings and clear controls.

最右边的按钮可中断长时间运行的命令。 例如,运行 Get-Package -ListAvailable -PageSize 500 会列出默认源(例如 nuget.org)上的前 500 个可用包,这可能需要几分钟才能运行完毕。

Screenshot that shows the Package Manager Console stop control.

查找包

若要在默认源中查找包,请使用 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 CLI 命令则不会执行此操作。 因此,在 Visual Studio 中工作的开发人员通常更愿意使用控制台命令而不是 NuGet CLI。

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

Install-Package NuGet.CommandLine

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

Install-Package NuGet.CommandLine -Version 4.4.1

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

扩展包管理器控制台

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

Screenshot that shows NuGet CLI commands available after installing the NuGet.CommandLine package.

设置 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 配置文件

后续步骤