dotnet restore
Эта статья относится к: ✔️ пакету SDK для .NET Core 3.1 и более поздних версий
Имя.
dotnet restore
— восстанавливает зависимости и средства проекта.
Краткие сведения
dotnet restore [<ROOT>] [--configfile <FILE>] [--disable-build-servers]
[--disable-parallel]
[-f|--force] [--force-evaluate] [--ignore-failed-sources]
[--interactive] [--lock-file-path <LOCK_FILE_PATH>] [--locked-mode]
[--no-cache] [--no-dependencies] [--packages <PACKAGES_DIRECTORY>]
[-r|--runtime <RUNTIME_IDENTIFIER>] [-s|--source <SOURCE>]
[--tl:[auto|on|off]] [--use-current-runtime, --ucr [true|false]]
[--use-lock-file] [-v|--verbosity <LEVEL>]
dotnet restore -h|--help
Description
Проект .NET обычно ссылается на внешние библиотеки в пакетах NuGet , которые предоставляют дополнительные функциональные возможности. Эти внешние зависимости ссылаются в файле проекта (CSPROJ или VBPROJ). При выполнении dotnet restore
команды интерфейс командной строки .NET использует NuGet для поиска этих зависимостей и скачивания их при необходимости. Он также гарантирует, что все зависимости, необходимые проекту, совместимы друг с другом, и что между ними нет конфликтов. После завершения команды все зависимости, необходимые проекту, доступны в локальном кэше и могут использоваться интерфейсом командной строки .NET для сборки и запуска приложения.
В большинстве случаев вам не нужно явно использовать dotnet restore
команду, так как если требуется восстановление NuGet, выполните следующие команды неявно:
В некоторых случаях выполнять неявное восстановление NuGet с помощью этих команд неудобно. Например, некоторые автоматизированные системы, такие как системы сборки, должны явно вызывать dotnet restore
, чтобы контролировать процесс восстановления и, следовательно, отслеживать использование сетевых ресурсов. Чтобы предотвратить неявное восстановление NuGet, можно использовать --no-restore
флаг с любой из этих команд.
Примечание.
Для проверки подписанного пакета во время операций восстановления требуется корневое хранилище сертификатов, допустимое как для подписывания кода, так и метки времени. Дополнительные сведения см. в статье о проверке подписанного пакета NuGet.
Указание каналов
Для восстановления зависимостей NuGet требуются каналы, где находятся пакеты. Каналы обычно предоставляются посредством файла конфигурации nuget.config. Файл конфигурации по умолчанию предоставляется при установке пакета SDK для .NET. Чтобы указать дополнительные каналы, выполните одно из следующих действий.
- Создайте собственный файл nuget.config в каталоге проекта. Дополнительные сведения см. в статье Распространенные конфигурации NuGet и разделе Различия nuget.config далее в этой статье.
- Используйте команды
dotnet nuget
, такие какdotnet nuget add source
.
Вы можете переопределить веб-каналы nuget.config с помощью свойства -s
.
Сведения об использовании веб-каналов, прошедших проверку подлинности, см. в статье Использование пакетов из веб-каналов, прошедших проверку подлинности.
Глобальный каталог пакетов
Для зависимостей можно указать, куда помещаются восстанавливаемые пакеты во время операции восстановления, с помощью аргумента --packages
. Если значение не указано, используется кэш пакетов NuGet по умолчанию. Он находится в каталоге .nuget/packages
в домашнем каталоге пользователя во всех операционных системах. Например, /home/user1 на Linux или C:\Users\user1 в Windows.
Связанные с проектом средства
Для связанных с проектом средств dotnet restore
сначала восстанавливает пакет, в котором упаковано средство, а затем — зависимости средства, указанные в файле проекта.
Различия nuget.config
На поведение команды dotnet restore
влияют параметры в файле nuget.config, если он существует. Например, если установить параметр globalPackagesFolder
в файле nuget.config, то восстановленные пакеты NuGet будут помещены в указанную папку. Для получения того же результата можно указать параметр --packages
команды dotnet restore
. Дополнительные сведения см. в справочнике по файлу nuget.config.
Существует три конкретных параметра, которые dotnet restore
игнорирует:
-
Перенаправления привязок не работают с элементами
<PackageReference>
, а .NET поддерживает только элементы<PackageReference>
для пакетов NuGet. -
Этот параметр относится только к Visual Studio и не применяется к .NET. .NET не использует файл
packages.config
. Вместо этого он использует элементы<PackageReference>
для пакетов NuGet. -
В пакете SDK для .NET 5.0.100 добавлена поддержка кроссплатформенной проверки подписей пакетов.
Скачивание манифестов рабочих нагрузок
При выполнении этой команды запускается асинхронное фоновое скачивание оповестительных манифестов для рабочих нагрузок. Если скачивание по-прежнему выполняется по завершении этой команды, оно останавливается. Дополнительные сведения см. в разделе Оповестительные манифесты.
Аргументы
ROOT
Дополнительный путь к файлу проекта для восстановления.
Параметры
-a|--arch <ARCHITECTURE>
Указывает целевую архитектуру. Это сокращенный синтаксис для настройки идентификатора среды выполнения (RID), где указанное значение объединяется с RID по умолчанию. Например, если на компьютере
win-x64
указать--arch x86
, идентификатору RID присваивается значениеwin-x86
. При использовании этого параметра не используйте параметр-r|--runtime
. Этот параметр доступен с выпуска .NET 6, предварительная версия 7.
--configfile <FILE>
Файл конфигурации NuGet (nuget.config), который будет использоваться. Если этот параметр указан, будут использоваться только параметры из этого файла. Если не указано, будет использоваться иерархия файлов конфигурации из текущего каталога. Дополнительные сведения см. в статье Распространенные конфигурации NuGet.
--disable-build-servers
Принудительно заставляет команду игнорировать все постоянные серверы сборки. Этот параметр предоставляет согласованный способ отключить все использование кэширования сборки, которая заставляет сборку с нуля. Сборка, которая не зависит от кэшей, полезна, когда кэши могут быть повреждены или неверны по какой-то причине. Доступно с пакета SDK для .NET 7.
--disable-parallel
Отключает параллельное восстановление нескольких проектов.
--force
Принудительное разрешение всех зависимостей, даже если последнее восстановление прошло успешно. Указание этого флага дает тот же результат, что удаление файла project.assets.json.
--force-evaluate
Принудительно применяет восстановление, чтобы повторно рассчитать все зависимости, если файл блокировки уже существует.
-?|-h|--help
Выводит описание использования команды.
--ignore-failed-sources
Предупреждение о сбоях источников выдается только при наличии пакетов, соответствующих требованию к версии.
--interactive
Позволяет команде остановиться и дождаться, пока пользователь выполнит действие или введет данные. Например, чтобы завершить проверку подлинности.
--lock-file-path <LOCK_FILE_PATH>
Расположение выходных данных для записи файла блокировки проекта. По умолчанию используется PROJECT_ROOT\packages.lock.json.
--locked-mode
Не разрешать обновление файла блокировки проекта.
--no-cache
Отключает кэширование HTTP-запросов.
--no-dependencies
При восстановлении проекта с перекрестными ссылками между проектами восстанавливает только корневой проект, но не ссылки.
--packages <PACKAGES_DIRECTORY>
Задает каталог для восстановленных пакетов.
-r|--runtime <RUNTIME_IDENTIFIER>
Задает среду выполнения для восстановления пакетов. Это позволяет восстановить пакеты для сред выполнения, явно не указанных в теге
<RuntimeIdentifiers>
файла CSPROJ. Список идентификаторов сред выполнения (RID) см. в каталоге RID.-s|--source <SOURCE>
Указывает URI источника пакета NuGet для использования во время операции восстановления. Этот параметр переопределяет все источники, указанные в файлах nuget.config. Чтобы указать несколько источников, задайте этот параметр несколько раз.
--tl:[auto|on|off]
Указывает, следует ли использовать средство ведения журнала терминала для выходных данных сборки. Значением по умолчанию является
auto
то, что сначала проверяет среду перед включением ведения журнала терминалов. Проверка среды проверяет, что терминал может использовать современные выходные функции и не использует перенаправленные стандартные выходные данные перед включением нового средства ведения журнала.on
пропускает проверку среды и включает ведение журнала терминалов.off
пропускает проверку среды и использует средство ведения журнала консоли по умолчанию.Средство ведения журнала терминала показывает этап восстановления, за которым следует этап сборки. На каждом этапе в нижней части терминала отображаются строительные проекты. Каждый проект, который создает выходные данные как целевого объекта MSBuild, который в настоящее время создается, так и время, затраченное на этот целевой объект. Эти сведения можно найти, чтобы узнать больше о сборке. После завершения сборки проекта записывается один раздел "сборка завершена", который записывает:
- Имя созданного проекта.
- Целевая платформа (если она используется с несколькими целевыми объектами).
- Состояние этой сборки.
- Основные выходные данные этой сборки (которая гиперссылок).
- Все диагностика, созданные для этого проекта.
Этот параметр доступен начиная с .NET 8.
--use-current-runtime, --ucr [true|false]
RuntimeIdentifier
Задает переносимуюRuntimeIdentifier
платформу на основе одного из компьютеров. Это происходит неявно с свойствами, которые требуютRuntimeIdentifier
, напримерSelfContained
, ,PublishAot
PublishSelfContained
,PublishSingleFile
иPublishReadyToRun
. Если для свойства задано значение false, это неявное разрешение больше не будет происходить.--use-lock-file
Включает создание файла блокировки проекта и использование этого файла при восстановлении.
-v|--verbosity <LEVEL>
Задает уровень детализации команды. Допустимые значения:
q[uiet]
,m[inimal]
,n[ormal]
,d[etailed]
иdiag[nostic]
. Значение по умолчанию —minimal
. Дополнительные сведения см. в разделе LoggerVerbosity.
Примеры
Восстановление зависимостей и средств для проекта в текущем каталоге:
dotnet restore
Восстановление зависимостей и средств для проекта
app1
по указанному пути:dotnet restore ./projects/app1/app1.csproj
Восстановление зависимостей и средств для проекта в текущем каталоге с использованием пути к файлу, заданного в качестве источника:
dotnet restore -s c:\packages\mypackages
Восстановление зависимостей и средств для проекта в текущем каталоге с использованием двух путей к файлу, заданных в качестве источника:
dotnet restore -s c:\packages\mypackages -s c:\packages\myotherpackages
Восстановление зависимостей и средств для проекта в текущем каталоге с подробными выходными данными:
dotnet restore --verbosity detailed
Аудит уязвимостей безопасности
Начиная с .NET 8, dotnet restore
включает аудит безопасности NuGet. Этот аудит создает отчет об уязвимостях безопасности с именем затронутого пакета, серьезностью уязвимости и ссылкой на рекомендации для получения дополнительных сведений.
Чтобы отказаться от аудита безопасности, задайте <NuGetAudit>
для свойства false
MSBuild значение в файле проекта.
Чтобы получить известный набор данных уязвимостей, убедитесь, что у вас есть центральный реестр NuGet.org, определенный как один из источников пакетов:
<packageSources>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
</packageSources>
Вы можете настроить уровень, на котором аудит завершится сбоем <NuGetAuditLevel>
, задав свойство MSBuild. Допустимые значения: low
, moderate
, high
и critical
. Например, если вы хотите видеть только умеренные, высокие и критически важные советы, можно задать для свойства значение moderate
.
Начиная с .NET 9, NuGet выполняет аудит прямых и транзитивных ссылок на пакеты по умолчанию. В .NET 8 проверяются только прямые ссылки на пакеты. Вы можете изменить режим, задав <NuGetAuditMode>
для свойства MSBuild значение direct
или all
.
Дополнительные сведения см. в разделе "Аудит зависимостей пакета" для уязвимостей безопасности.