使用 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. 选择“浏览”选项卡,按当前所选来源的受欢迎程度显示包(请参阅包源)。

    • 若要搜索特定包,请使用左上角的搜索框。
    • 每个包 ID 旁边都会显示缩写信息,帮助你识别正确的包,内容根据所选的包源而有所不同。 示例中包含包下载计数、作者,或所有者个人资料超链接。

    注意

    在 Visual Studio 17.11 及更高版本中,当所选包源受支持时,包所有者显示为个人资料超链接。 包所有权由包源定义。 例如,请参阅在 nuget.org 上管理包所有者

    在 Visual Studio 17.10 及更早版本中,包作者元数据显示为纯文本。 有关详细信息,请参阅作者包元数据

    • 选择包可以查看详细的包信息。 右侧的“详细信息”窗格随即显示,可用于选择要安装的版本。 显示“NuGet 包管理器”窗口的屏幕截图,选中了“浏览”选项卡。
  3. 在右窗格中,从下拉列表中选择一个版本。 如果要在版本列表中包括预发行版版本,请选择“包括预发行版”。

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

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

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

卸载包

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

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

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

    显示 NuGet 包管理器的屏幕截图,其中选择了包,并突出显示了“卸载”按钮。

更新包

按照以下步骤更新 NuGet 包:

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

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

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

    显示 NuGet 包管理器的屏幕截图,其中选择了包,并突出显示了“更新”按钮。

  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

    显示 NuGet 包的屏幕截图,其中“更新”按钮已禁用。

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

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

管理解决方案的包

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

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

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

    显示“解决方案管理包”窗口的屏幕截图,其中选择了多个项目。

“合并”选项卡

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

显示“解决方案管理包”窗口的屏幕截图,其中选择了“合并”选项卡。

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

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

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

  3. 选择“安装” 。

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

包源

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

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

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

    突出显示“包”源选择器的屏幕截图。

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

    突出显示“包”源设置图标的屏幕截图。

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

    显示“选项”窗口的屏幕截图,其中选择了“包源”。

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

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

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

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

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

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

NuGet 包管理器管理选项控件

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

显示 NuGet 包管理器选项控件展开的屏幕截图。

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

安装与更新选项

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

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

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

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

卸载选项

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

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

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

另请参阅

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