使用 NuGet 包管理器在 Visual Studio 中安装和管理包

通过 Microsoft Visual Studio for Windows 中的 NuGet 包管理器 UI,可轻松安装、卸载和更新项目和解决方案中的 NuGet 包。

本文仅适用于 Windows 用户。 如果使用的是 Visual Studio for Mac,请参阅在项目中包括 NuGet 包

先决条件

  • 使用任意安装 Visual Studio 2022 for Windows。与 NET 相关的工作负荷。

    可以从 visualstudio.microsoft.com 免费安装 2022 Community 版,或者使用 Professional 或 Enterprise 版。

    安装 .NET 相关工作负载时,Visual Studio 2017 及更高版本会自动包含 NuGet 包管理器功能。 若要单独在 Visual Studio 安装程序中安装,请选择“单个组件”选项卡,然后选择“代码工具”下的“NuGet 包管理器”。

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

  • 如果你还没有帐户,请在 nuget.org 上注册一个免费帐户。 必须先注册并确认帐户,才能上传 NuGet 包。

查找和安装包

若要使用 Visual Studio 查找并安装 NuGet 包,请执行以下步骤:

  1. 解决方案资源管理器中加载项目,然后选择“项目>”“管理 NuGet 包”。

    系统会打开“NuGet 包管理器”窗口

  2. 选择“浏览”选项卡,按当前所选来源的受欢迎程度显示包(请参阅包源)。 若要搜索特定包,请使用左上角的搜索框。 从列表中选择一个包,右窗格中就会显示该包的信息,这样就可以选择要安装的版本。

    Screenshot showing the NuGet Package Manager window with the Browse tab selected.

  3. 在右窗格中,从下拉列表中选择一个版本。 如果要在版本列表中包括预发行版版本,请选择“包括预发行版”。

  4. 若要安装 NuGet 包,请选择“安装”。 系统可能会要求你接受许可条款或提示你验证安装。

    Visual Studio 随即将包及其依赖项安装到项目中。 安装完成后,添加的包将显示在“已安装”选项卡上。还可以在项目解决方案资源管理器的“依赖项>”“”节点中找到包。 安装包后,可以使用 using 语句在项目中引用它。

  5. (可选)NuGet 具有两种格式,项目可以使用包:PackageReferencepackages.config。若要设置默认格式,请选择“工具>选项”,展开“NuGet 程序包管理器”,选择“常规”,然后选择“默认包管理格式”。 有关详细信息,请参阅选择默认包管理格式

卸载包

若要卸载 NuGet 包,请执行以下步骤:

  1. 解决方案资源管理器中加载项目,选择“项目>”“管理 NuGet 包”,然后选择“已安装”选项卡。

  2. 选择要在左窗格中卸载的包(如有必要,请使用“搜索”框查找),然后从右窗格中选择“卸载”。

    Screenshot showing the NuGet Package Manager with a package selected and its Uninstall button highlighted.

更新包

按照以下步骤更新 NuGet 包:

  1. 解决方案资源管理器中加载项目,然后选择“项目>”“管理 NuGet 包”。 对于网站项目,请首先选择 Bin 文件夹。

  2. 选择“更新”选项卡,查看所选包源中包含可用更新的包。 选中“包含预发布版本”,以便在更新列表中包含预发布版本的包。

  3. 选择包进行更新。 在右窗格中,从下拉列表中选择所需的版本,然后选择“更新”。

    Screenshot showing the NuGet Package Manager with a package selected and its Update button highlighted.

  4. 对于某些包,“更新”按钮处于禁用状态,并显示以下消息:SDK 隐式引用。若要更新包,请更新其所属的 SDK。 此消息指示包是较大框架或 SDK 的一部分,无法独立更新。 此类包在内部标有 <IsImplicitlyDefined>True</IsImplicitlyDefined>。 例如,Microsoft.NETCore.App 是 .NET Core SDK 的一部分,并且包版本与应用程序使用的运行时框架版本不同。 若要下载新版本的 .NET Core,请更新 .NET Core 安装。 有关详细信息,请参阅 .NET Core 元包和版本控制。 此方案适用于以下常用包:

    • Microsoft.AspNetCore.All
    • Microsoft.AspNetCore.App
    • Microsoft.NETCore.App
    • NETStandard.Library

    Screenshot showing a NuGet package with the Update button disabled.

  5. 若要将多个包更新到其最新版本,请在 NuGet 包列表中选择这些包,然后选择“更新”。

  6. 你还可以从“已安装”选项卡更新单个包。对于这种情况,您还可以选择“版本”和“包括预发行版”选项。

管理解决方案的包

管理解决方案的包是同时处理多个项目的便捷方式:

  1. 解决方案管理器中选择解决方案,然后选择“工具>”“NuGet 管理器>”“管理解决方案的 NuGet 包”。

  2. 在“管理解决方案的 NuGet 包”窗口中,选择受操作影响的项目。

    Screenshot showing the Manage Packages for Solution window with multiple projects selected.

“合并”选项卡

开发人员通常认为,在同一解决方案的不同项目中使用相同 NuGet 包的不同版本的做法不好。 Visual Studio 允许对 NuGet 包使用通用版本。 为此,请使用 NuGet 包管理器窗口的“合并”选项卡,发现解决方案中不同项目使用不同版本号的包的位置。

Screenshot showing the Manage Packages for Solution window with the Consolidate tab selected.

在本例中,ClassLibrary1 项目使用的是 EntityFramework 6.2.0,而 ConsoleApp1 使用的是 EntityFramework 6.1.0。 要合并包版本,请执行以下步骤:

  1. 从“合并”选项卡中,在项目列表中选择要更新的项目。

  2. 选择要用于“版本”列表中的所有这些项目版本。

  3. 选择“安装” 。

    NuGet 包管理器将选定的包版本安装到所有选定的项目中,之后包不再显示在“合并”选项卡上。

包源

Visual Studio 会忽略包源的顺序,并使用来自任何首先响应请求的源的包。 有关详细信息,请参阅还原包。 有关如何从特定源加载包的信息,请参阅包源映射

若要管理 NuGet 包源,请执行以下步骤:

  1. 若要更改 Visual Studio 从中加载包元数据的源,请从包源选择器中选择一个源。

    Screenshot showing the Package source selector highlighted.

  2. 若要管理包源,请选择“设置”图标或选择“工具>”“选项”。

    Screenshot showing the Package source settings icon highlighted.

  3. 在“选项”窗口中,展开 NuGet 包管理器节点,然后选择“包源”。

    Screenshot showing the Options window with Package Sources selected.

  4. 要添加源,请选择 +,编辑“名称”,在“”控件中输入 URL 或路径,然后选择“更新”。

    源现在显示在“包源”下拉列表中。

  5. 若要更改包源,请选中它,在“名称”和“源”框中进行编辑,然后选择“更新”

  6. 若要禁用包源,请清除列表中名称左侧的框。

  7. 若要删除包源,请选中它,然后选择“X”按钮。

    如果在删除某个包源后,该包源重新出现,则它可能会列在计算机级或用户级 NuGet.config 文件中。 有关这些文件的位置,请参阅通用 NuGet 配置。 通过手动编辑包源或使用 nuget 源命令删除文件中的包源。

NuGet 包管理器管理选项控件

选择包时,NuGet 包管理器在“版本”选择器下方显示一个可展开的“选项”控件。 对于某些项目类型,仅提供“显示预览窗口”选项。

Screenshot showing the NuGet Package manager Options control expanded.

以下各部分将对可用选项进行说明。

安装与更新选项

这些选项仅适用于某些项目类型:

  • 依赖项行为:此选项用于配置 NuGet 如何决定要安装哪些版本的依赖包。 其设置如下:

    • 忽略依赖项会跳过安装依赖项,这通常会破坏正在安装的软件包。
    • 如果选择“最低”[默认选项],则安装具有可满足主要选定包要求的最小版本号的依赖项。
    • 如果选择“最高版本的修补程序”,则安装的版本的主要版本号和次要版本号相同,但修补程序版本号最高。 例如,如果指定版本 1.2.2,则会安装以 1.2 开头的最高版本
    • 如果选择“最高次要版本”,则安装的版本的主要版本号相同,但次要版本号和修补程序版本号最高。 如果指定版本 1.2.2,则会安装以 1 开头的最高版本
    • 选择“最高”可安装包的最高可用版本。
  • 文件冲突操作:此选项指定 NuGet 应如何处理项目或本地计算机中已存在的包。 其设置如下:

    • “提示”指示 NuGet 询问是保留还是覆盖现有包。
    • “全部忽略”指示 NuGet 跳过覆盖任何现有包。
    • “全部覆盖”指示 NuGet 覆盖任何现有包。

卸载选项

这些选项仅适用于某些项目类型:

  • 删除依赖项:如果选中此选项,则删除任何依赖包(如果它们未在项目中的其他位置引用)。

  • 在存在依赖项时仍强制卸载:选中后,即使在项目中仍然引用了该包,也会卸载。 此选项通常与“删除依赖项”一起选中,用于删除包及其安装的任何依赖项。 不过,使用此选项可能会导致项目中的引用中断。 在这种情况下,你可能需要重新安装其他包

另请参阅

有关 NuGet 应用的详细信息,请参阅以下文章: