Что такое project.lock.json?

Я выполнил команду , чтобы создать новый проект .NET Core и запускал это из cmd:

dotnet new
dotnet restore

Второй оператор создает project.lock.json, который содержит много мусора (на самом деле не мусор, а тонны зависимостей, конфигурации и т.д.). Я предполагаю, что эти зависимости - это .NET framework, который разбит на отдельные пакеты NuGet.

Мои вопросы:

  • Правильно ли мое предположение?
  • Могу ли я сделать приложение более легким, удалив ненужные пакеты/зависимости NuGet?
  • Как?

Ответ 1

Краткий ответ: project.lock.json генерируется инструментами .NET при восстановлении пакетов проекта. Вы не должны прикасаться к нему или проверять его на исходный контроль. Отредактируйте project.json напрямую.

Более длинный ответ: В процессе восстановления пакета (dotnet restore) NuGet должен анализировать зависимости в вашем проекте, просматривать графики зависимостей и определять, какие пакеты должны быть установлены для вашего проекта и ваши зависимости проекта.

Это нетривиальный объем работы, поэтому результаты кэшируются в project.lock.json, чтобы сделать последующие восстановления быстрее и эффективнее. Файл блокировки будет восстановлен, если project.json будет изменен, а dotnet restore будет выполнен снова.

Ответ 2

Каждый раз так часто в нашей команде, когда кто-то обновляет некоторый nuget, у нас та же проблема, файлы lock.json не обновляются, даже запуская восстановление dotnet, поэтому перед применением последний выбор (удаление их) Я предлагаю запустить grunt из командной строки. Если это не сработает, удалите все файлы lock.json и запустите восстановление dotnet, это мой любимый выбор;)