Файл блокировки содержит результаты разрешения зависимостей для проекта с помощью диспетчера пакетов. Менеджеры пакетов используют файлы блокировки, чтобы обеспечить детерминированный результат при разрешении график зависимостей пакетов. Когда диспетчер пакетов Unity вычисляет успешное разрешение, он сохраняет это разрешение в папке проекта Packages
в файле JSON с именем packages-lock.json
. Любое изменение манифеста проектаКаждый проект Unity имеет манифест проекта, который действует как точка входа. для менеджера пакетов. Этот файл должен находиться в каталоге
. Диспетчер пакетов использует его для настройки многих вещей, включая список зависимостей для этого проекта, а также любой репозиторий пакетов для запроса пакетов. Подробнее
См. в Словаре или в mutableВы можете изменить содержимое изменяемого пакета. Это противоположность неизменному. Изменяемыми являются только локальные пакеты и встроенные пакеты.
См. в Словарь манифеста пакета (либо встроенные или установленные из локальной папки) потенциально могут заставить диспетчер пакетов пересчитать разрешенные версии пакетов. Но если версия пакета в файле блокировки соответствует диапазону, подразумеваемому зависимостью
См. в версии Словарь и стратегия разрешения, пакет остается заблокированным в этой версии.
Например, вот типичная запись в файле блокировки:
"com.unity.textmeshpro": {
"version": "2.0.1",
"depth": 0,
"source": "registry",
"dependencies": {
"com.unity.ugui": "1.0.0"
},
"url": "https://packages.unity.com"
},
etc.
Когда диспетчер пакетов разрешает любые конфликтующие косвенные зависимости, он пытается повторно использовать как можно больше заблокированных пакетов. Это гарантирует, что последующее разрешение зависимостей даст те же результаты для того же набора зависимостей. Это также сводит к минимуму трудоемкие операции, такие как загрузка, извлечение или копирование пакетов.
Если решения, включающего только заблокированные пакеты, нет, диспетчер пакетов выбирает набор пакетов с наименее рискованными обновлениями, предпочитая обновления исправлений незначительным или основным обновлениям, а второстепенные обновления — крупным обновлениям. Фактически, вы можете настроить уровень риска для обновления. Дополнительную информацию см. в разделе Настройка стратегий разрешения.
Чтобы принудительно обновить версии косвенных зависимостей, удалите файл блокировки.
Не изменяйте файл блокировки вручную: диспетчер пакетов создает и поддерживает файл блокировки, поэтому он перезаписывает любые изменения, которые вы вносите в файл.
Поместите файл блокировки в систему управления исходным кодом, чтобы вы могли постоянно воспроизводить один и тот же набор пакетов, чтобы ваш проект оставался согласованным во времени и на разных компьютерах.
Отключение файла блокировки
По умолчанию диспетчер пакетов создает или обновляет файл блокировки после успешного вычисления графа зависимостей. Если вы видите неожиданные результаты, вы можете установить для свойства enableLockFile значение false
в манифесте проекта, чтобы отключить блокировку. Однако, если вы отключите файл блокировки, диспетчер пакетов снова клонирует пакеты Git URL, что приводит к снижению производительности и дополнительному использованию сети. Это также может привести к недетерминированным результатам, если вы отправляете новые коммиты в удаленный репозиторий Git между двумя разрешениями.
- В Unity добавлена функция решения SAT 2019.4 NewIn20194