dotnet run

článek This se vztahuje na: ✔️ .NET 6 SDK a novější verze

Název

dotnet run – Spustí zdrojový kód bez explicitní kompilace nebo spuštění příkazů.

Synopse

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

dotnet run -h|--help

Popis

Tento dotnet run příkaz nabízí pohodlnou možnost spuštění aplikace ze zdrojového kódu jedním příkazem. Je užitečné pro rychlý iterativní vývoj z příkazového řádku. Příkaz závisí na dotnet build příkazu pro sestavení kódu. Všechny požadavky na sestavení platí dotnet run také.

Výstupní soubory jsou zapsány do výchozího umístění, což je bin/<configuration>/<target>. Pokud máte netcoreapp2.1 například aplikaci a spustíte dotnet runji, výstup se umístí do bin/Debug/netcoreapp2.1souboru . Soubory se podle potřeby přepíšou. Dočasné soubory se umístí do obj adresáře.

Pokud projekt určuje více architektur, provedení dotnet run způsobí chybu, pokud -f|--framework <FRAMEWORK> se tato možnost nepoužije k určení architektury.

Příkaz dotnet run se používá v kontextu projektů, ne sestavení. Pokud se místo toho pokoušíte spustit knihovnu DLL aplikace závislé na rozhraní, musíte použít dotnet bez příkazu. Například ke spuštění myapp.dllpoužijte:

dotnet myapp.dll

Další informace o ovladači dotnet najdete v tématu .NET přehled rozhraní příkazového řádku.

Pokud chcete aplikaci spustit, dotnet run příkaz přeloží závislosti aplikace, které jsou mimo sdílený modul runtime z mezipaměti NuGet. Vzhledem k tomu, že používá závislosti uložené v mezipaměti, nedoporučuje se používat dotnet run ke spouštění aplikací v produkčním prostředí. Místo toho vytvořte nasazení pomocí dotnet publish příkazu a nasaďte publikovaný výstup.

Implicitní obnovení

Nemusíte spouštětdotnet restore, protože se spouští implicitně všemi příkazy, které vyžadují obnovení, například dotnet new, , dotnet build, dotnet run, dotnet testdotnet publisha dotnet pack. Pokud chcete zakázat implicitní obnovení, použijte tuto --no-restore možnost.

Příkaz dotnet restore je stále užitečný v určitých situacích, kdy explicitní obnovení dává smysl, například sestavení integrace kontinuá integrace ve službě Azure DevOps Services nebo v systémech sestavení, které potřebují explicitně řídit, kdy dojde k obnovení.

Informace o správě informačních kanálů NuGet najdete v dotnet restore dokumentaci.

Tento příkaz podporuje dotnet restore možnosti, které jsou předány v dlouhém formátu (například --source). Krátké možnosti formuláře, například -s, nejsou podporovány.

Stažení manifestu úloh

Při spuštění tohoto příkazu zahájí asynchronní stahování reklamních manifestů pro úlohy. Pokud stahování po dokončení tohoto příkazu stále běží, stahování se zastaví. Další informace naleznete v tématu Reklamní manifesty.

Arguments

<applicationArguments>

Argumenty předané aplikaci, která se spouští.

Všechny argumenty, které aplikace nerozpoznají dotnet run , se předají. Pokud chcete oddělit argumenty od argumentů dotnet run pro aplikaci, použijte -- tuto možnost.

Předávání argumentů do aplikace

dotnet run předá všechny tokeny, které aplikace nerozpozná. Předávané tokeny zachovávají původní pořadí, ale dotnet run nejdřív odeberou možnosti, kterým rozumí. Když se rozpoznaná možnost zobrazí mezi nerozpoznaným názvem možnosti a její hodnotou, odebrání rozpoznané možnosti může změnit význam zbývajících tokenů.

Například následující příkaz prolíná rozpoznanou možnost --project mezi tokeny, které má aplikace přijímat:

dotnet run --app-flag --app-name --project ConsoleApp.csproj A.txt

Po dotnet run spotřebě --project ConsoleApp.csprojaplikace obdrží --app-flag --app-name A.txt. Aplikace pak považuje A.txt za hodnotu --app-name, která neodpovídá původnímu příkazovému řádku.

Abyste se této nejednoznačnosti vyhnuli, umístěte argumenty aplikace za literál --:

dotnet run --project ConsoleApp.csproj -- --app-flag --app-name A.txt

Oddělovač -- označí každý následující token jako argument aplikace, takže dotnet run je nepřeuspořádá ani neinterpretuje. Oddělovač také skripty pro budoucí kontroly pravopisu proti novým dotnet run možnostem, které se později můžou shodovat s tokenem předaným do aplikace.

Note

Stejné chování platí pro dotnet build a dotnet test v Microsoft. Režim Testing.Platform (MTP), který předává nerozpoznané tokeny msBuild nebo testovací aplikaci. Další informace o dotnet testpoužití naleznete v tématu Předávání argumentů do testovací aplikace.

Možnosti

  • --

    Odděluje argumenty od dotnet run argumentů pro spuštěnou aplikaci. Všechny argumenty za tímto oddělovačem se předají do spuštění aplikace.

  • -a|--arch <ARCHITECTURE>

    Určuje cílovou architekturu. Toto je zkratka pro nastavení identifikátoru runtime (RID), kde se zadaná hodnota zkombinuje s výchozím identifikátorem RID. Například na win-x64 počítači se zadáním --arch x86 identifikátoru RID nastaví na win-x86. Pokud použijete tuto možnost, tuto možnost nepoužívejte -r|--runtime . K dispozici od .NET 6 Preview 7.

  • --artifacts-path <ARTIFACTS_DIR>

    Všechny výstupní soubory sestavení ze spuštěného příkazu budou v podsložkách pod zadanou cestou oddělenou projektem. Další informace naleznete v tématu Rozložení výstupu artefaktů. Tato možnost a zadaná hodnota musí být explicitně kaskádové v libovolném dotnet příkazu, který závisí na výstupu jiného dotnet příkazu, například při použití dotnet build --no-restore a dotnet publish --no-build. K dispozici od .NET 8 SDK.

  • -c|--configuration <CONFIGURATION>

    Definuje konfiguraci sestavení. Výchozí hodnota pro většinu projektů je Debug, ale můžete přepsat nastavení konfigurace sestavení v projektu.

  • --disable-build-servers

    Vynutí příkaz ignorovat všechny trvalé buildové servery. Tato možnost poskytuje konzistentní způsob, jak zakázat veškeré použití ukládání sestavení do mezipaměti, což vynutí sestavení úplně od začátku. Sestavení, které nespoléhá na mezipaměti, je užitečné, když jsou mezipaměti z nějakého důvodu poškozené nebo nesprávné. K dispozici od .NET 7 SDK.

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

    Nastaví zadanou proměnnou prostředí v procesu, která se spustí příkazem. Zadaná proměnná prostředí se na dotnet run proces nepoužije.

    Proměnné prostředí předávané touto možností mají přednost před proměnnými okolního prostředí, direktivami System.CommandLine env a environmentVariables z vybraného spouštěcího profilu. Další informace naleznete v tématu Proměnné prostředí.

    (Tato možnost byla přidána do sady .NET SDK 9.0.200.)

  • -f|--framework <FRAMEWORK>

    Sestaví a spustí aplikaci pomocí zadané architektury. Architektura musí být zadána v souboru projektu.

  • --file <FILE_PATH>

    Cesta ke spuštění aplikace založené na souborech. Pokud není zadaná cesta, použije se aktuální adresář k vyhledání a spuštění souboru. Další informace o souborovýchaplikacích

    V unixu spusťte aplikace založené na souborech přímo pomocí názvu souboru přidáním direktivy shebang (#!) a nastavením oprávnění pro spuštění. Další informace naleznete v tématu Podpora unixových shebangů (#!).

    Představeno v sadě .NET SDK 10.0.100.

  • --force

    Vynutí vyřešení všech závislostí, i když bylo poslední obnovení úspěšné. Určení tohoto příznaku je stejné jako odstranění souboru project.assets.json .

  • --interactive

    Umožňuje příkazu zastavit a čekat na uživatelský vstup nebo akci. Například k dokončení ověřování.

  • -lp|--launch-profile <NAME>

    Název spouštěcího profilu (pokud existuje) pro použití při spuštění aplikace. Profily spuštění jsou definovány v souboru launchSettings.json a obvykle se nazývají Development, Staginga Production. Další informace najdete v tématu Práce s více prostředími.

  • --no-build

    Nevystaví projekt před spuštěním. Příznak také implicitně nastaví --no-restore .

  • --no-cache

    Před spuštěním programu přeskočte k aktuálním kontrolám a vždy ho sestavte.

  • --no-dependencies

    Při obnovování projektu s odkazy P2P (project-to-project), obnoví kořenový projekt, nikoli odkazy.

  • --no-launch-profile

    Nepokouší se použít launchSettings.json ke konfiguraci aplikace.

  • --no-restore

    Při spuštění příkazu nespustí implicitní obnovení.

  • --no-self-contained

    Publikujte aplikaci jako aplikaci závislou na rozhraní. Aby bylo možné spustit aplikaci, musí být na cílovém počítači nainstalovaný kompatibilní modul runtime .NET.

  • --os <OS>

    Určuje cílový operační systém (OS). Toto je zkratka pro nastavení identifikátoru runtime (RID), kde se zadaná hodnota zkombinuje s výchozím identifikátorem RID. Například na win-x64 počítači se zadáním --os linux identifikátoru RID nastaví na linux-x64. Pokud použijete tuto možnost, tuto možnost nepoužívejte -r|--runtime . K dispozici od .NET 6.

  • --project <PATH>

    Určuje cestu ke spuštění souboru projektu (název složky nebo úplná cesta). Pokud není zadaný, nastaví se jako výchozí aktuální adresář.

    Zkratka -p pro --project je zastaralá počínaje .NET 6 SDK. Po omezenou dobu -p je možné i přes upozornění na vyřazení použít --project . Pokud argument zadaný pro možnost neobsahuje =, příkaz přijme -p zkratku pro --project. V opačném případě příkaz předpokládá, že -p je zkratka pro --property. Toto flexibilní použití -p pro --project bude ukončeno v .NET 7.

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

    Nastaví jednu nebo více vlastností nástroje MSBuild. Zadejte více vlastností oddělených středníky nebo opakováním možnosti:

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

    Krátký formulář -p lze použít pro --property. Pokud argument zadaný pro tuto možnost obsahuje =, -p je přijat jako zkratka pro --property. V opačném případě příkaz předpokládá, že -p je zkratka pro --project.

    Pokud chcete aplikaci předat --property místo nastavení vlastnosti MSBuild, zadejte možnost za -- oddělovačem syntaxe, například:

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

    Určuje cílový modul runtime pro obnovení balíčků. Seznam identifikátorů runtime (RID) najdete v katalogu RID.

  • --sc|--self-contained

    Publikujte modul runtime .NET s vaší aplikací, aby se modul runtime nemusel instalovat na cílový počítač.

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

    Určuje, jestli se má pro výstup sestavení použít terminálový protokolovací nástroj . Výchozí hodnota je auto, která nejprve ověří prostředí před povolením protokolování terminálu. Prostředí ověřuje, že terminál dokáže používat moderní výstupní funkce a nepoužívá přesměrovaný standardní výstup, než povolí nový protokolovací modul. on přeskočí kontrolu prostředí a povolí protokolování terminálu. off přeskočí kontrolu prostředí a použije výchozí protokolovací nástroj konzoly.

    Terminal Logger ukazuje fázi obnovení následovanou fází sestavení. Během každé fáze se aktuálně stavební projekty zobrazují v dolní části terminálu. Každý projekt, který vytváří výstupy cíle NÁSTROJE MSBuild, který se právě sestavuje, i dobu strávenou na daném cíli. Další informace o sestavení najdete v těchto informacích. Po dokončení sestavení projektu se zapíše jeden oddíl "sestavení dokončeno", který zachycuje:

    • Název sestaveného projektu.
    • Cílová architektura (pokud je cílená na více cílů).
    • Stav tohoto sestavení.
    • Primární výstup tohoto sestavení (který je hypertextový odkaz).
    • Všechna diagnostika vygenerovaná pro tento projekt.

    Tato možnost je dostupná od .NET 8.

  • -v|--verbosity <LEVEL>

    Nastaví úroveň podrobností příkazu. Povolené hodnoty jsou q[uiet], , m[inimal]n[ormal], d[etailed]a diag[nostic]. Výchozí hodnota je minimal. Další informace najdete na webu LoggerVerbosity.

  • -?|-h|--help

    Vytiskne popis použití příkazu.

Proměnné prostředí

Pro spuštěnou aplikaci je možné použít čtyři mechanismy:

  1. Okolní proměnné prostředí z operačního systému při spuštění příkazu.
  2. Direktivy System.CommandLine env , například [env:key=value]. To platí pro celý dotnet run proces, nejen projekt, který dotnet runspouští .
  3. environmentVariables ze zvoleného profilu spuštění (-lp) v souborulaunchSettings.json projektu( pokud existuje). Tyto informace platí pro projekt, který dotnet runspouští .
  4. -e|--environment hodnoty možností rozhraní příkazového řádku (přidané v sadě .NET SDK verze 9.0.200). Tyto informace platí pro projekt, který dotnet runspouští .

Prostředí se sestaví ve stejném pořadí jako tento seznam, takže -e|--environment tato možnost má nejvyšší prioritu.

Příklady

  • Spusťte projekt v aktuálním adresáři:

    dotnet run
    
  • V aktuálním adresáři spusťte zadanou aplikaci založenou na souborech:

    dotnet run --file ConsoleApp.cs
    

    Podpora souborových aplikací byla přidána do sady .NET SDK 10.0.100.

  • Spusťte zadaný projekt:

    dotnet run --project ./projects/proj1/proj1.csproj
    
  • Spusťte projekt v aktuálním adresáři a zadejte konfiguraci vydané verze:

    dotnet run --property:Configuration=Release
    
  • Spusťte projekt v aktuálním adresáři ( --help argument v tomto příkladu se předá aplikaci, protože se používá prázdná -- možnost):

    dotnet run --configuration Release -- --help
    
  • Obnovte závislosti a nástroje pro projekt v aktuálním adresáři pouze s minimálním výstupem a spusťte projekt:

    dotnet run --verbosity m
    
  • Spusťte projekt v aktuálním adresáři pomocí zadané architektury a předejte do aplikace argumenty:

    dotnet run -f net6.0 -- arg1 arg2
    

    V následujícím příkladu se aplikaci předají tři argumenty. Jeden argument je předán pomocí a -dva argumenty jsou předány za --:

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