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


dotnet run

Эта статья относится к: ✔️ пакету SDK для .NET 6 и более поздних версий

Имя.

dotnet run — выполняет исходный код без дополнительных явных команд компиляции или запуска.

Краткие сведения

dotnet run [<applicationArguments>]
  [-a|--arch <ARCHITECTURE>] [--artifacts-path <ARTIFACTS_DIR>]
  [-c|--configuration <CONFIGURATION>] [-e|--environment <KEY=VALUE>]
  [--file <FILE_PATH>] [-f|--framework <FRAMEWORK>] [--force] [--interactive]
  [--launch-profile <NAME>] [--no-build] [--no-dependencies]
  [--no-launch-profile] [--no-restore] [--os <OS>] [--project <PATH>]
  [-r|--runtime <RUNTIME_IDENTIFIER>] [--tl:[auto|on|off]]
  [-v|--verbosity <LEVEL>] [[--] [application arguments]]

dotnet run -h|--help

Description

dotnet run — это удобное средство для запуска приложения из исходного кода одной командой. Это полезно для быстрой последовательной разработки из командной строки. В отношении сборки кода эта команда зависима от команды dotnet build. Все требования к сборке применяются dotnet run и к.

Примечание.

dotnet run не учитывает такие аргументы, как /property:property=value, которые учитывает dotnet build.

Выходные файлы записываются в расположение по умолчанию, которым является bin/<configuration>/<target>. Например, если у вас есть приложение netcoreapp2.1 и вы запускаете dotnet run, выходные данные помещаются в bin/Debug/netcoreapp2.1. При необходимости файлы перезаписываются. Временные файлы помещаются в каталог obj.

Когда в проекте задано несколько платформ, выполнение dotnet run приводит к ошибке, если только для указания платформы не используется параметр -f|--framework <FRAMEWORK>.

Команда dotnet run используется в контексте проектов, а не созданных сборок. Если вместо этого вы пытаетесь запустить библиотеку DLL платформозависимого приложения, следует использовать dotnet без команды. Например, для выполнения myapp.dll используйте:

dotnet myapp.dll

Дополнительные сведения о драйвере см. в обзоре dotnet.NET CLI.

Для запуска приложения команда dotnet run разрешает зависимости приложения, выходящие за пределы общей среды выполнения, из кэша NuGet. Из-за использования кэшированных зависимостей не рекомендуется применять команду dotnet run для запуска приложений в рабочей среде. Вместо этого создайте развертывание с помощью команды dotnet publish и разверните опубликованные выходные данные.

Неявное восстановление

Вам не нужно выполнять команду dotnet restore, так как она выполняется неявно всеми командами, которые требуют восстановления, например dotnet new, dotnet build, dotnet run, dotnet test, dotnet publish и dotnet pack. Чтобы отключить неявное восстановление, используйте параметр --no-restore.

Команду dotnet restore по-прежнему удобно использовать в некоторых сценариях, где необходимо явное восстановление, например в сборках с использованием непрерывной интеграции в Azure DevOps Services или системах сборки, где требуется явно контролировать время восстановления.

Сведения об управлении веб-каналами NuGet см. в документации по dotnet restore.

Эта команда поддерживает параметры dotnet restore при передаче в длинной форме (например, --source). Параметры в краткой форме, например -s, не поддерживаются.

Скачивание манифестов рабочих нагрузок

При выполнении этой команды запускается асинхронное фоновое скачивание оповестительных манифестов для рабочих нагрузок. Если скачивание по-прежнему выполняется по завершении этой команды, оно останавливается. Дополнительные сведения см. в разделе Оповестительные манифесты.

Arguments

<applicationArguments>

Аргументы, передаваемые в запущенное приложение.

Все аргументы, которые не распознаются приложением dotnet run . Чтобы разделить аргументы dotnet run из аргументов для приложения, используйте -- этот параметр.

Параметры

  • --

    Отделяет аргументы, предназначенные для dotnet run, от аргументов для выполняемого приложения. Все аргументы после разделителя передаются выполняемому приложению.

  • -a|--arch <ARCHITECTURE>

    Указывает целевую архитектуру. Это сокращенный синтаксис для настройки идентификатора среды выполнения (RID), где указанное значение объединяется с RID по умолчанию. Например, если на компьютере win-x64 указать --arch x86, идентификатору RID присваивается значение win-x86. При использовании этого параметра не используйте параметр -r|--runtime. Этот параметр доступен с выпуска .NET 6, предварительная версия 7.

  • --artifacts-path <ARTIFACTS_DIR>

    Все выходные файлы сборки из выполняемой команды будут отправляться в вложенные папки в соответствии с указанным путем, разделенным проектом. Дополнительные сведения см. в макете выходных данных артефактов. Доступно с пакета SDK для .NET 8.

  • -c|--configuration <CONFIGURATION>

    Определяет конфигурацию сборки. По умолчанию для большинства проектов используется Debug, но можно переопределить параметры конфигурации сборки в проекте.

  • --disable-build-servers

    Принудительно заставляет команду игнорировать все постоянные серверы сборки. Этот параметр предоставляет согласованный способ отключить все использование кэширования сборки, которая заставляет сборку с нуля. Сборка, которая не зависит от кэшей, полезна, когда кэши могут быть повреждены или неверны по какой-то причине. Доступно с пакета SDK для .NET 7.

  • -e|--environment <KEY=VALUE>

    Задает указанную переменную среды в процессе, которая будет выполняться командой. Указанная переменная среды не применяется к dotnet run процессу.

    Переменные среды, передаваемые через этот параметр, имеют приоритет над переменными среды окружающей среды, директивами System.CommandLine env и environmentVariables выбранным профилем запуска. Дополнительную информацию см. в разделе Переменные среды.

    (Этот параметр добавлен в пакет SDK для .NET 9.0.200.)

  • -f|--framework <FRAMEWORK>

    Выполняет сборку и запуск приложения с использованием указанной платформы. Эта платформа должна быть указана в файле проекта.

  • --file <FILE_PATH>

    Путь к выполняемом приложению на основе файлов. Если путь не указан, текущий каталог используется для поиска и запуска файла. Дополнительные сведения о приложениях на основе файлов см. в разделе "Создание файловых приложений C#".

    В Unix можно запускать приложения на основе файлов напрямую, используя имя исходного файла в командной строке, а не dotnet run. Сначала убедитесь, что файл имеет разрешения на выполнение. Затем добавьте строку #! shebang в качестве первой строки файла, например:

    #!/usr/bin/env dotnet run
    

    Затем файл можно запустить непосредственно из командной строки:

    ./ConsoleApp.cs
    

    Представлен в пакете SDK для .NET 10.0.100.

  • --force

    Принудительное разрешение всех зависимостей, даже если последнее восстановление прошло успешно. Указание этого флага дает тот же результат, что удаление файла project.assets.json.

  • --interactive

    Позволяет команде остановиться и дождаться, пока пользователь выполнит действие или введет данные. Например, чтобы завершить проверку подлинности. Доступно, начиная с пакета SDK для .NET Core 3.0.

  • --launch-profile <NAME>

    Имя профиля запуска (при его наличии), который следует использовать при запуске приложения. Профили запуска обычно определяются в файле launchSettings.json и, как правило, называются Development, Staging и Production. Дополнительные сведения см. в разделе Работа с несколькими средами.

  • --no-build

    Не выполняет сборку проекта перед запуском. Он также неявно задает флаг --no-restore.

  • --no-cache

    Пропустите актуальные проверки и всегда создайте программу перед запуском.

  • --no-dependencies

    При восстановлении проекта с перекрестными ссылками между проектами восстанавливает только корневой проект, но не ссылки.

  • --no-launch-profile

    Не пытается использовать файл launchSettings.json для настройки приложения.

  • --no-restore

    Не выполняет неявное восстановление при выполнении команды.

  • --no-self-contained

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

  • --os <OS>

    Позволяет указать целевую операционную систему. Это сокращенный синтаксис для настройки идентификатора среды выполнения (RID), где указанное значение объединяется с RID по умолчанию. Например, если на компьютере win-x64 указать --os linux, идентификатору RID присваивается значение linux-x64. При использовании этого параметра не используйте параметр -r|--runtime. Доступно с .NET 6.

  • --project <PATH>

    Задает путь к запускаемому файлу проекта (имя папки или полный путь). Если значение не задано, по умолчанию используется текущий каталог.

    Сокращение -p для --project является устаревшим начиная с пакета SDK для .NET 6. В течение ограниченного времени -p можно по-прежнему использовать для --project предупреждения об отказе. Если аргумент, указанный для параметра, не содержит =, команда принимает -p в качестве короткой формы для --project. В противном случае команда предполагает, что -p является короткой формой для --property. Эти гибкие возможности использования -p для --project будут доступны в .NET 7.

  • --property:<NAME>=<VALUE>

    Задает одно свойство MSBuild или несколько. Укажите несколько свойств, разделяя их точкой с запятой, или укажите их путем повтора команды.

    --property:<NAME1>=<VALUE1>;<NAME2>=<VALUE2>
    --property:<NAME1>=<VALUE1> --property:<NAME2>=<VALUE2>
    

    Короткая форма -p может использоваться для --property. Если аргумент, указанный для параметра, содержит =, -p принимается как короткая формат для --property. В противном случае команда предполагает, что -p является короткой формой для --project.

    Чтобы передать --property в приложение вместо того, чтобы задать свойство MSBuild, укажите параметр после разделителя синтаксиса --, например:

    dotnet run -- --property name=value
    
  • -r|--runtime <RUNTIME_IDENTIFIER>

    Задает целевую среду выполнения для восстановления пакетов. Список идентификаторов сред выполнения (RID) см. в каталоге RID.

  • -sc|--self-contained

    Публикует среду выполнения .NET в приложении, чтобы среда выполнения не должна быть установлена в целевой системе. Значение по умолчанию — false. Однако при выборе целевого объекта .NET 7 или ниже значение по умолчанию указывается true , если указан идентификатор среды выполнения.

  • --tl:[auto|on|off]

    Указывает, следует ли использовать средство ведения журнала терминала для выходных данных сборки. Значением по умолчанию является autoто, что сначала проверяет среду перед включением ведения журнала терминалов. Проверка среды проверяет, что терминал может использовать современные выходные функции и не использует перенаправленные стандартные выходные данные перед включением нового средства ведения журнала. on пропускает проверку среды и включает ведение журнала терминалов. off пропускает проверку среды и использует средство ведения журнала консоли по умолчанию.

    Средство ведения журнала терминала показывает этап восстановления, за которым следует этап сборки. На каждом этапе в нижней части терминала отображаются строительные проекты. Каждый проект, который создает выходные данные как целевого объекта MSBuild, который в настоящее время создается, так и время, затраченное на этот целевой объект. Эти сведения можно найти, чтобы узнать больше о сборке. После завершения сборки проекта записывается один раздел "сборка завершена", который записывает:

    • Имя созданного проекта.
    • Целевая платформа (если она используется с несколькими целевыми объектами).
    • Состояние этой сборки.
    • Основные выходные данные этой сборки (которая гиперссылок).
    • Все диагностика, созданные для этого проекта.

    Этот параметр доступен начиная с .NET 8.

  • -v|--verbosity <LEVEL>

    Задает уровень детализации команды. Допустимые значения: q[uiet], m[inimal], n[ormal], d[etailed] и diag[nostic]. Значение по умолчанию — minimal. Дополнительные сведения см. в разделе LoggerVerbosity.

  • -?|-h|--help

    Выводит описание использования команды.

Переменные среды

Существует четыре механизма, с помощью которых переменные среды могут применяться к запущенным приложениям:

  1. Переменные среды окружающей среды из операционной системы при выполнении команды.
  2. Директивы System.CommandLine env , например [env:key=value]. Они применяются ко всему dotnet run процессу, а не только к проекту, который выполняется dotnet run.
  3. environmentVariables из выбранного профиля запуска (-lp) в файлеlaunchSettings.json проекта, если таковой есть. Они применяются к проекту, который выполняется dotnet run.
  4. -e|--environment Значения параметров CLI (добавлены в пакет SDK для .NET версии 9.0.200). Они применяются к проекту, который выполняется dotnet run.

Среда создается в том же порядке, что и этот список, поэтому -e|--environment параметр имеет самый высокий приоритет.

Примеры

  • Выполнение проекта в текущем каталоге:

    dotnet run
    
  • Запустите указанное приложение на основе файлов в текущем каталоге:

    dotnet run --file ConsoleApp.cs
    

    Поддержка приложений на основе файлов добавлена в пакет SDK для .NET 10.0.100.

  • Выполнение указанного проекта:

    dotnet run --project ./projects/proj1/proj1.csproj
    
  • Выполните проект в текущем каталоге, указав конфигурацию выпуска.

    dotnet run --property:Configuration=Release
    
  • Выполнение проекта в текущем каталоге (аргумент --help в этом примере передается приложению, так как используется пустой параметр --):

    dotnet run --configuration Release -- --help
    
  • Восстановление зависимостей и средств для проекта в текущем каталоге с выводом минимального объема выходных данных и последующим запуском проекта.

    dotnet run --verbosity m
    
  • Запустите проект в текущем каталоге с помощью указанной платформы и передайте аргументы в приложение:

    dotnet run -f net6.0 -- arg1 arg2
    

    В следующем примере три аргумента передаются приложению. Один аргумент передается с помощью, -а два аргумента передаются после --:

    dotnet run -f net6.0 -arg1 -- arg2 arg3