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

借助 NuGet 包管理器控制台,可以使用 NuGet PowerShell 命令查找、安装、卸载和更新 NuGet 包。 如果包管理器 UI 未提供执行操作的方法,则必须使用控制台。 若要在控制台中使用 nuget.exe CLI 命令,请参阅在控制台中使用 nuget.exe CLI

Windows 版 Visual Studio 中内置了该控制台。 Visual Studio for Mac 或 Visual Studio Code 中未提供该控制台。

重要

此处列出的命令特定于 Visual Studio 中的包管理器控制台,它不同于常规 PowerShell 环境中提供的包管理模块命令。 具体而言,每个环境都有一些命令,这些命令在其他环境中不可用,而具有相同名称的命令在其特定参数中也可能不同。 使用 Visual Studio 中的包管理控制台时,本主题中所述的命令和参数适用。

查找和安装包

例如,通过三个简单的步骤查找和安装包:

  1. 在 Visual Studio 中打开项目/解决方案,然后使用“工具”>“NuGet 包管理器”>“包管理器控制台”命令打开控制台。

  2. 找到要安装的包。 如果你已经知道此操作步骤,请跳至步骤 3。

    # Find packages containing the keyword "elmah"
    Find-Package elmah
    
  3. 运行安装命令:

    # Install the Elmah package to the project named MyProject.
    Install-Package Elmah -ProjectName MyProject
    

重要

控制台中可用的全部操作也可以通过 NuGet CLI 完成。 但是,控制台命令在 Visual Studio 和已保存的项目/解决方案的上下文中运行,并且通常比其等效的 CLI 命令完成更多操作。 例如,通过控制台安装包会添加对项目的引用,而 CLI 命令则不会执行此操作。 因此,在 Visual Studio 中工作的开发人员通常更愿意使用控制台而不是 CLI。

提示

许多控制台操作依赖于在 Visual Studio 中通过已知路径名打开解决方案。 如果你有未保存的解决方案或没有解决方案,可以看到错误:“解决方案未打开或未保存。 请确保已打开并保存解决方案。”这表明控制台无法确定解决方案文件夹。 保存未保存的解决方案,或者如果没有打开解决方案,则创建并保存解决方案,这些操作应该可以纠正错误。

打开控制台和控制台控件

  1. 在 Visual Studio 中使用“工具”>“NuGet 包管理器”>“包管理器控制台”命令打开控制台。 控制台是一个 Visual Studio 窗口,可以根据需要进行排列和放置(请参阅在 Visual Studio 中自定义窗口布局)。

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

    Package Manager Console controls for package source and project

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

  4. 若要管理包源,请选择齿轮图标。 这是“工具”>“选项”>“NuGet 包管理器”>“包源”对话框的快捷方式,如包管理器 UI 页中所述。 此外,项目选择器右侧的控件可清除控制台的内容:

    Package Manager Console settings and clear controls

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

    Package Manager Console stop control

安装包

# 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

在控制台中安装包执行的步骤与安装包时会发生什么情况相同,只不过它添加了以下内容:

  • 控制台在其窗口中显示适用的许可条款,并附带隐含协议。 如果你不同意这些条款,应立即卸载包。
  • 此外,对包的引用也会添加到项目文件中,并显示在“引用”节点下的“解决方案资源管理器”中,需要保存项目才能直接查看项目文件中的更改

卸载包

# 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.configweb.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-PackageUpdate-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 开始,当你选择任何与 .NET 相关的工作负载时,会自动安装 NuGet 和 NuGet 包管理器;不过,也可以通过在 Visual Studio 安装程序中选中“单个组件”>“代码工具”>“NuGet 包管理器”选项来单独安装它。

另外,如果你在 Visual Studio 2015 及更早版本中缺少 NuGet 包管理器,请选中“工具”>“扩展和更新...”并搜索“NuGet 包管理器”扩展。 如果无法在 Visual Studio 中使用扩展安装程序,可以直接从 https://dist.nuget.org/index.html 下载扩展。

Visual Studio for Mac 目前不提供包管理器控制台。 但是,可以通过 NuGet CLI 获取等效命令。 Visual Studio for Mac 确实有一个用于管理 NuGet 包的 UI。 请参阅在项目中包括 NuGet 包

Visual Studio Code 中不包含包管理器控制台。

扩展包管理器控制台

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

Installing and using MvcScaffold

设置 NuGet PowerShell 配置文件

通过 PowerShell 配置文件,可以在每次使用 PowerShell 时使用常用命令。 NuGet 支持通常位于以下位置的 NuGet 特定配置文件:

%UserProfile%\Documents\WindowsPowerShell\NuGet_profile.ps1

要查找配置文件,请在控制台中键入 $profile

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

有关更多详细信息,请参阅 Windows PowerShell 配置文件

在控制台中使用 nuget.exe CLI

若要在包管理器控制台中使用 nuget.exe CLI,请从控制台安装 NuGet.CommandLine 包:

# Other versions are available, see https://www.nuget.org/packages/NuGet.CommandLine/
Install-Package NuGet.CommandLine -Version 4.4.1