Unity 6.3
0 онлайн 53 гостей 3 в системе
Вход

Зависимость пакета и разрешение

Когда вы работаете в Package Manager окно, вы можете установить пакет из нескольких источников (а регистры, местный папка или архив, a Гит URL, и имяОднако, хотя Package Manager Чтобы установить пакеты из этих источников беспрепятственно, ему сначала нужно выполнить ряд расчетов, чтобы решить, какую версию установить. Он также должен решить, какие другие пакеты и версии установить для поддержки выбранного пакета.

Прямые зависимости

При выборе версии пакета для установки с помощью Package Manager окно, вы добавляете “зависимость” к вашему манифест проекта. Это заявление о том, что вам нужна определенная версия конкретного пакета для того, чтобы проект работал. Чтобы добавить зависимость в свой проект, вы добавляете ссылку на пакет и версию в форме package-name@package-version к Генеральной Ассамблее зависимости свойства <project-root>/Packages/manifest.json файл. Они называются «прямыми» зависимостями, потому что ваш проект напрямую зависит от них.

Косвенные зависимости

Для работы пакетов могут также требоваться другие пакеты. Они называются «косвенными» (или транзитивными) зависимостями. Разработчик пакета добавляет их к зависимостям свойства файла манифеста пакета во время разработки (<package-root>/package.json). Например, на диаграмме ниже пакет alembic@1.0.7 зависит от пакета timeline@1.0.0, так что пакет временной шкалы является «косвенной» зависимостью. И наоборот, проект зависит от пакетов cinemachine@2.6.0 и alembic@1.0.7, так что оба являются «прямыми» зависимостями.

Диаграмма, показывающая прямые и косвенные зависимости
Диаграмма, показывающая прямые и косвенные зависимости

Переопределение версии

Когда вы добавляете версию пакета в качестве зависимости, эта версия не обязательно является версией, которую устанавливает Package Manager. Причина в том, что Package Manager должен учитывать все зависимости в вашем проекте, как прямые, так и косвенные. В следующем примере пакет XR Управление плагинами был запрошен в версии 4.0.3. Однако Package Manager установил версию 4.0.6, потому что другой пакет зависел от более высокой версии, как указано в информационном сообщении (B):

Когда вы нажимаете кнопку информации в панели сведений (A), появляется текстовое поле (B), объясняющее, почему эта версия была установлена вместо той, которую вы запросили
Когда вы нажимаете кнопку информации в панели сведений (A), появляется текстовое поле (B), объясняющее, почему эта версия была установлена вместо той, которую вы запросили

Для того, чтобы заставить Package Manager чтобы использовать определенную версию пакета прямой зависимости, вы можете установить pinnedPackages свойства в файл манифеста проекта.

График зависимости

Package Manager может установить одновременно только одну версию пакета, поэтому ему необходимо построить граф зависимостей. Этот граф содержит все прямые и косвенные зависимости проекта и определяет, какую версию каждого пакета следует установить.

файл блокировки

Когда Package Manager разрешает все конфликты версий, сохраняет решение в файле блокировка файла по двум причинам:

  • Детерминизм, чтобы убедиться, что одинаковые пакеты надежно устанавливаются каждый раз.
  • Эффективность, чтобы уменьшить количество времени и ресурсов, необходимых для повторного вычисления графа зависимостей.

Дополнительные ресурсы