Version: 2020.1
言語: 日本語
パッケージの状態とライフサイクル
グローバルキャッシュ

依存関係と競合の解決

Package Manager ウィンドウで作業するとき、複数のソース (レジストリ、ローカル フォルダー.tgz ファイルGit URL) からパッケージをインストールすることができます。しかし、Package Manager は、これらのソースからパッケージをシームレスにインストールします。ただし、Package Manager は、これらのソースからパッケージをシームレスにインストールしますが、最初に一連の計算を行って、どのバージョンをインストールするか、また、それをサポートするのにインストールが必要な他のパッケージやバージョンを決定する必要があります。

Package Manager ウィンドウでインストールするパッケージのバージョンを選択すると、 依存関係プロジェクトマニフェスト に加えることになります。これは、プロジェクトを動かすために、特定のパッケージの特定のバージョンが必要であるという宣言です。プロジェクトマニフェスト に示される依存関係は、“直接” 依存関係と呼ばれます。

Packages can also require other packages in order to work. These are called “indirect”, or transitive, dependencies. The package developer adds these dependencies to the package’s manifest during development. For example, there are several 2D packages that share functionality: both the 2D Animation and 2D Sprite Shape packages depend on the 2D Common package.

直接的な依存関係と間接的な依存関係を示す図。

パッケージのバージョンを依存関係として加える場合、そのバージョンは Package Manager がインストールするバージョンとは限りません。なぜならば、プロジェクトにあるすべての依存関係を、直接か間接かにかかわらず考慮しなければならないからです。どのパッケージをインストールするかを決定するために、Package Manager はすべての直接および間接的な依存関係のリストを作成します。

Package Manager は、一度に 1 つのバージョンのパッケージしかインストールできません。そのため、各パッケージのどのバージョンをインストールするかを決定するために、依存関係グラフ を構築する必要があります。Package Manager は、すべてのバージョンの競合の解決に成功すると、その解決を ロックファイル に保存し、決定性を確保し (毎回同じパッケージが確実にインストールされます)、依存関係グラフの再計算にかかる時間とリソースを減らすことができます。


パッケージの状態とライフサイクル
グローバルキャッシュ