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

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

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

先决条件

  • 安装包含任何 .NET 相关工作负荷的 Windows 版 Visual Studio 2022。

    你可以从 visualstudio.microsoft.com免费安装 2022 社区版,也可以使用专业版或企业版。

    Visual Studio 2017 及更高版本在安装与 .NET 相关的工作负荷时会自动包含 NuGet 包管理器。 若要在 Visual Studio 安装程序中单独安装它,请选择“单个组件”选项卡,然后在 Code 工具 下选择 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 包管理器窗口的屏幕截图,其中选择了“浏览”选项卡、详细信息窗格和“包详细信息”选项卡。 你可以在“包详细信息”选项卡和包自述文件(如果包作者提供)的“自述文件”选项卡中看到包元数据、有关所有者、作者、许可证等的信息。显示 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 sources 命令删除文件中的包源。

NuGet 包管理器选项控件

选择包时,NuGet 包管理器会显示 版本 选择器下方的可展开 选项 控件。 对于大多数项目类型,仅提供了 “显示预览”窗口 选项。

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

以下部分介绍了可用选项。

安装和更新选项

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

  • 依赖项行为:此选项配置 NuGet 如何决定要安装的依赖包的版本。 它具有以下设置:

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

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

卸载选项

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

  • 删除依赖项:选中后,如果未在项目中其他位置引用依赖包,则删除任何依赖包。

  • 即使存在依赖项,也强制卸载:选择此选项后,即使包仍在项目中被引用,也将卸载该包。 此选项通常与删除依赖项结合使用,以删除包及其安装的任何依赖项。 但是,使用此选项可能会导致项目中的引用中断。 在这种情况下,可能需要 重新安装这些其他包

另请参阅

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