Поделиться через


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 с помощью свойства -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 игнорирует:

  • bindingRedirects

    Перенаправления привязок не работают с элементами <PackageReference>, а .NET поддерживает только элементы <PackageReference> для пакетов NuGet.

  • решение

    Этот параметр относится только к Visual Studio и не применяется к .NET. .NET не использует файл packages.config. Вместо этого он использует элементы <PackageReference> для пакетов NuGet.

  • trustedSigners

    В пакете 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, , PublishAotPublishSelfContained, 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.

Дополнительные сведения см. в разделе "Аудит зависимостей пакета" для уязвимостей безопасности.