包使用工作流

在 nuget.org 和组织可能会建立的私有包库之间,可以找到数以万计的非常有用的包,这些包可在应用和服务中使用。 无论源在哪里,使用包时都遵循相同的常规工作流。

Flow of going to a package source, finding a package, installing it in a project, then adding a using statement and calls to the package API

* 仅限 Visual Studio 和 dotnet.exenuget install 命令不会修改项目文件或 packages.config 文件;必须手动管理条目。

有关详细信息,请参阅查找和选择包安装包时会发生什么情况?

NuGet 会记住每个已安装包的标识和版本号,并将其记录到项目文件(使用 PackageReference)或 packages.config 中,具体取决于项目类型和 NuGet 版本。 若为 NuGet 4.0+,则 PackageReference 为首选方法,虽然这可在 Visual Studio 中通过包管理器 UI 进行配置。 在任何情况下,可以随时在相应文件中进行搜索,查看项目依赖项的完整列表。

提示

随时检查要在软件中使用的每个包的许可证是非常明智的做法。 在 nuget.org 中,可以在每个包的说明页右侧找到“许可信息”链接 。 如果包未指定许可条款,请直接通过包页面上的“联系所有者”链接与包所有者联系 。 Microsoft 不向用户授予任何第三方包提供程序的知识产权许可,同时不对第三方提供的信息承担任何责任。

安装包时,NuGet 通常会检查此包是否已存在于其缓存中。 可手动从命令行中清除此缓存,如管理全局包和缓存文件夹中所述。

NuGet 还可以确保包支持的目标框架与你的项目兼容。 如果包中不包含兼容的程序集,NuGet 将显示一个错误。 请参阅解决包不兼容错误

将项目代码添加到源存储库时,通常不需要包含 NuGet 包。 如果用户要在后期克隆存储库或获取项目(包括 Visual Studio Team Services 等系统上的生成代理),则必须在运行生成前还原必要的包:

Flow of restoring NuGet packages by cloning a repository and using either a restore command

程序包还原使用项目文件中的信息或 packages.config 重新安装所有依赖项。 请注意,此相关流程不尽相同,如依赖项解析中所述。 此外,上图并未显示包管理器控制台的还原命令,因为已经在 Visual Studio 的上下文中使用了该控制台,它通常会自动还原包并提供所示的解决方案级别命令。

有时需要重新安装项目中已包含的包,这可能导致重新安装依赖项。 使用 nuget reinstall 命令或使用 NuGet 包管理器控制台可轻松执行此操作。 有关详细信息,请参阅重新安装和更新包

最后一点,NuGet 的行为由 NuGet.Config 文件驱动。 有多个文件可用于集中处理不同级别的特定设置,如配置 NuGet 行为中所述。

安装 NuGet 包的方式

使用下表中的任何方法下载和安装 NuGet 包。

工具 平台 描述
dotnet CLI 全部 用于 .NET Core 和 .NET Standard 库,以及用于面向 .NET Framework 的 SDK 样式项目的 CLI 工具(请参阅 SDK 属性)。 检索由 <package_name> 标识的包,并添加对项目文件的引用。 同时还要检索和安装依赖项。
Visual Studio Windows 和 Mac 提供 UI,用户可以通过此 UI 浏览、选择包,并从指定包源将包及其依赖项安装到项目中。 将对已安装的程序包引用添加到项目文件。
包管理器控制台 (Visual Studio) 仅限 Windows 检索并将用 <package_name> 识别的包从所选源安装到解决方案的指定项目中,然后添加对项目文件的引用。 同时还要检索和安装依赖项。
nuget.exe CLI 全部 用于 .NET Framework 库和面向 .NET Standard 库的非 SDK 样式项目的 CLI 工具。 检索用 <package_name> 识别的包,将其内容展开到当前目录下的文件夹中;还可以检索 packages.config 文件中列出的所有包。 同时还要检索和安装依赖项,但对项目文件或 packages.config 不作任何更改。