Version: 2020.3
包状态和生命周期
全局缓存

依赖和解析

当您在 Package Manager 窗口中工作时,可以安装来自多个来源的包(注册表,本地文件夹或者 tarball 以及 Git URL)。然而,虽然 Package Manager 从这些源无缝安装包,但它首先必须进行一系列计算来决定安装哪个版本,以及安装其他哪些包和版本来支持它。

当您通过 Package Manager 窗口选择要安装的包版本时,请向您的项目清单添加一个__依赖项__。这是一个声明,您需要特定包的特定版本才能使项目正常工作。出现在您的依赖项中项目清单称为“直接”依赖项。

包也可能需要其他包才能工作。这些被称为“间接”或传递性依赖项。包开发人员在开发过程中将这些依赖项添加到包的清单中。例如,在下图中,alembic@1.0.7 包依赖于 timeline@1.0.0 包,因此 timeline 包是一个“间接”依赖项。另一方面,该项目依赖于 cinemachine@2.6.0alembic@1.0.7 包,所以它们都是“直接”依赖项。

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

当您将包版本添加为依赖项时,该版本不一定是 Package Manager 安装的版本,因为它必须考虑项目中的所有依赖项,无论是直接的还是间接的。为了决定安装哪些包,Package Manager 构建了一个列表,列出每个直接和间接依赖项。

Package Manager 一次只能安装一个包版本,因此它必须构建一个依赖图以确定要安装每个软件包的哪个版本。当 Package Manager 成功解析所有版本冲突时,它会将解析结果保存在一个锁定文件中以保证确定性(以便每次都可靠地安装相同的包),并节省再次计算依赖图所需的时间和资源。


包状态和生命周期
全局缓存