使用 Visual Studio 包管理器控制台安装 (PowerShell) 管理包
Visual Studio 中的包管理器控制台使用 PowerShell 命令与 NuGet 包进行交互。 当无法通过包管理器 UI执行操作时,可以使用控制台。 还可以在控制台中使用 dotnet CLI 或 NuGet 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 包。
快速查找和安装包
若要使用包管理器控制台快速查找并安装包:
在 Visual Studio 中打开项目或解决方案,并选择“工具>NuGet 包管理器>包管理器控制台”打开包管理器控制台窗口。
在控制台中,输入
Find-Package
关键字以查找要安装的包。 例如,若要查找包含关键字的elmah
包,请运行以下命令。 如果已知道所需的包名称,请跳过此步骤。Find-Package elmah
找到名称后,使用
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
会列出默认源(例如 nuget.org)上的前 500 个可用包,这可能需要几分钟才能运行完毕。
查找包
若要在默认源中查找包,请使用 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.config 或 web.config 的包所做的任何更改。
- 如果没有其余包使用这些依赖项,则删除以前安装的依赖项。
若要卸载包及其所有未使用的依赖项,请运行:
Uninstall-Package <PackageName> -RemoveDependencies
若要卸载包,即使其他包依赖于此包,请运行:
Uninstall-Package <PackageName> -Force
更新包
若要更新包,请使用 Get-Package 和 Update-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 控制器和视图:
设置 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 配置文件。