Version: Unity 6.0 (6000.0)
语言 : 中文
Dependencies
解析和冲突

依赖和解析

当在 Package Manager 窗口中工作时,可以从多个来源(注册表、本地文件夹tarballGit URL 以及通过名称)安装包。然而,虽然 Package Manager 可以从这些源无缝安装包,但它首先必须进行一系列计算来决定安装哪个版本。它还必须决定要安装哪些其他包和版本来为所选择的包提供支持。

直接依赖项

当您通过 Package Manager 窗口选择要安装的包版本时,您即是在向项目清单添加一个依赖项。这是一个声明,您需要特定包的特定版本才能使项目正常工作。要向项目添加依赖项,您需要在 <project-root>/Packages/manifest.json 文件的依赖项 (dependencies) 属性中以 package-name@package-version 的形式添加对包和版本的引用。这些被称为“直接”依赖项,因为项目直接依赖于它们。

间接依赖项

包也可能需要其他包才能进行工作。这些被称为“间接”(或传递性)依赖项。包开发人员在开发过程中将这些依赖项添加到包清单文件的依赖项 (dependencies) 属性中 (<package-root>/package.json)。例如,在下图中,alembic@1.0.7 包依赖于 timeline@1.0.0 包,因此 timeline 包是一个“间接”依赖项。相反,项目依赖于 cinemachine@2.6.0alembic@1.0.7 包,因此它们都是“直接”依赖项。

显示直接依赖项和间接依赖项的图
显示直接依赖项和间接依赖项的图

版本覆盖

当添加某个包版本作为依赖项时,该版本不一定是 Package Manager 安装的版本。原因是 Package Manager 必须考虑项目中的所有依赖项,无论是直接依赖项还是间接依赖项。在以下示例中,所请求的 XR 插件管理 (XR Plugin Management) 包是版本 4.0.3。但是,Package Manager 安装了版本 4.0.6,因为另一个包依赖于更高的版本,如信息消息 (B) 所示:

单击详细信息面板 (A) 中的信息按钮时,会出现一个文本框 (B),解释为什么安装的是此版本而非所请求的版本
单击详细信息面板 (A) 中的信息按钮时,会出现一个文本框 (B),解释为什么安装的是此版本而非所请求的版本

依赖图

Package Manager 一次只能安装一个包版本,因此必须构建一个依赖图。该图列出了项目的每个直接和间接依赖项。依赖图决定了要安装的每个包的版本。

锁定文件

当 Package Manager 解决所有版本冲突后,会将解析结果保存在锁定文件中,原因有二:

  • 确定性:确保每次都能可靠地安装相同的包。
  • 效率:减少再次计算依赖图所需的时间和资源。


Dependencies
解析和冲突