Delen via


dotnet-uitvoering

Dit artikel is van toepassing op: ✔️ .NET 6 SDK en latere versies

Naam

dotnet run - De broncode wordt uitgevoerd zonder expliciete compileer- of startopdrachten.

Samenvatting

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

Beschrijving

De dotnet run opdracht biedt een handige optie om uw toepassing uit te voeren vanuit de broncode met één opdracht. Het is handig voor snelle iteratieve ontwikkeling vanaf de opdrachtregel. De opdracht is afhankelijk van de dotnet build opdracht om de code te bouwen. Alle vereisten voor de build zijn ook van toepassing dotnet run .

Notitie

dotnet run respecteert geen argumenten zoals /property:property=value, die worden gerespecteerd door dotnet build.

Uitvoerbestanden worden naar de standaardlocatie geschreven.bin/<configuration>/<target> Als u bijvoorbeeld een netcoreapp2.1 toepassing hebt en u uitvoert dotnet run, wordt de uitvoer geplaatst in bin/Debug/netcoreapp2.1. Bestanden worden naar behoefte overschreven. Tijdelijke bestanden worden in de obj map geplaatst.

Als in het project meerdere frameworks worden opgegeven, resulteert het uitvoeren van dotnet run een fout, tenzij de -f|--framework <FRAMEWORK> optie wordt gebruikt om het framework op te geven.

De dotnet run opdracht wordt gebruikt in de context van projecten, niet ingebouwde assembly's. Als u in plaats daarvan een frameworkafhankelijke toepassings-DLL probeert uit te voeren, moet u dotnet zonder opdracht gebruiken. Als u bijvoorbeeld wilt uitvoeren myapp.dll, gebruikt u:

dotnet myapp.dll

Zie dotnet voor meer informatie over het stuurprogramma.

Als u de toepassing wilt uitvoeren, worden met de dotnet run opdracht de afhankelijkheden van de toepassing die zich buiten de gedeelde runtime bevinden, omgezet vanuit de NuGet-cache. Omdat er gebruik wordt gemaakt van afhankelijkheden in de cache, wordt het afgeraden om toepassingen in productie uit te dotnet run voeren. Maak in plaats daarvan een implementatie met behulp van de dotnet publish opdracht en implementeer de gepubliceerde uitvoer.

Impliciete herstelbewerking

U hoeft niet uit te voeren dotnet restore omdat deze impliciet wordt uitgevoerd door alle opdrachten waarvoor een herstelbewerking moet worden uitgevoerd, zoals dotnet new, dotnet build, , dotnet run, dotnet test, , en dotnet publish.dotnet pack Als u impliciete herstel wilt uitschakelen, gebruikt u de --no-restore optie.

De dotnet restore opdracht is nog steeds nuttig in bepaalde scenario's waarbij het expliciet herstellen zinvol is, zoals builds voor continue integratie in Azure DevOps Services of in buildsystemen die expliciet moeten worden beheerd wanneer de herstelbewerking plaatsvindt.

Zie de dotnet restore documentatie voor informatie over het beheren van NuGet-feeds.

Deze opdracht ondersteunt de dotnet restore opties die worden doorgegeven in het lange formulier (bijvoorbeeld --source). Korte formulieropties, zoals -s, worden niet ondersteund.

Downloads van workloadmanifesten

Wanneer u deze opdracht uitvoert, wordt er een asynchrone achtergronddownload van reclamemanifesten voor workloads gestart. Als het downloaden nog steeds wordt uitgevoerd wanneer deze opdracht is voltooid, wordt het downloaden gestopt. Zie Reclamemanifesten voor meer informatie.

Arguments

<applicationArguments>

Argumenten die worden doorgegeven aan de toepassing die wordt uitgevoerd.

Argumenten die niet worden herkend door dotnet run , worden doorgegeven aan de toepassing. Als u argumenten wilt dotnet run scheiden van argumenten voor de toepassing, gebruikt u de -- optie.

Opties

  • --

    Hiermee worden argumenten gescheiden van dotnet run argumenten voor de toepassing die wordt uitgevoerd. Alle argumenten na dit scheidingsteken worden doorgegeven aan de uitvoering van de toepassing.

  • -a|--arch <ARCHITECTURE>

    Hiermee geeft u de doelarchitectuur. Dit is een verkorte syntaxis voor het instellen van de Runtime-id (RID), waarbij de opgegeven waarde wordt gecombineerd met de standaard-RID. Als u bijvoorbeeld op een win-x64 computer opgeeft --arch x86 , wordt de RID ingesteld op win-x86. Als u deze optie gebruikt, gebruikt u de -r|--runtime optie niet. Beschikbaar sinds .NET 6 Preview 7.

  • --artifacts-path <ARTIFACTS_DIR>

    Alle builduitvoerbestanden van de uitgevoerde opdracht worden weergegeven in submappen onder het opgegeven pad, gescheiden door project. Zie De indeling Artefacten-uitvoer voor meer informatie. Beschikbaar sinds .NET 8 SDK.

  • -c|--configuration <CONFIGURATION>

    Definieert de buildconfiguratie. De standaardinstelling voor de meeste projecten is Debug, maar u kunt de buildconfiguratie-instellingen in uw project overschrijven.

  • --disable-build-servers

    Hiermee wordt de opdracht gedwongen om permanente buildservers te negeren. Deze optie biedt een consistente manier om al het gebruik van buildcaching uit te schakelen, waardoor een volledig nieuwe build wordt afgemaakt. Een build die niet afhankelijk is van caches is handig wanneer de caches om een of andere reden beschadigd of onjuist zijn. Beschikbaar sinds .NET 7 SDK.

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

    Hiermee stelt u de opgegeven omgevingsvariabele in het proces in dat door de opdracht wordt uitgevoerd. De opgegeven omgevingsvariabele wordt niet toegepast op het dotnet run proces.

    Omgevingsvariabelen die via deze optie worden doorgegeven, hebben voorrang op omgevingsvariabelen, System.CommandLine-instructies env en environmentVariables vanuit het gekozen startprofiel. Zie Omgevingsvariabelen voor meer informatie.

    (Deze optie is toegevoegd in .NET SDK 9.0.200.)

  • -f|--framework <FRAMEWORK>

    Hiermee wordt de app gebouwd en uitgevoerd met behulp van het opgegeven framework. Het framework moet worden opgegeven in het projectbestand.

  • --file <FILE_PATH>

    Het pad naar de op bestanden gebaseerde app die moet worden uitgevoerd. Als er geen pad is opgegeven, wordt de huidige map gebruikt om het bestand te zoeken en uit te voeren. Zie C#-apps bouwen voor meer informatie over op bestanden gebaseerde apps.

    Op Unix kunt u apps op basis van bestanden rechtstreeks uitvoeren met behulp van de naam van het bronbestand op de opdrachtregel in plaats van dotnet run. Controleer eerst of het bestand machtigingen voor het uitvoeren heeft. Voeg vervolgens een shebang-regel #! toe als de eerste regel van het bestand, bijvoorbeeld:

    #!/usr/bin/env dotnet run
    

    Vervolgens kunt u het bestand rechtstreeks vanaf de opdrachtregel uitvoeren:

    ./ConsoleApp.cs
    

    Geïntroduceerd in .NET SDK 10.0.100.

  • --force

    Hiermee worden alle afhankelijkheden gedwongen om te worden opgelost, zelfs als de laatste herstelbewerking is geslaagd. Het opgeven van deze vlag is hetzelfde als het verwijderen van het project.assets.json bestand.

  • --interactive

    Hiermee kan de opdracht stoppen en wachten op invoer of actie van de gebruiker. Bijvoorbeeld om de verificatie te voltooien. Beschikbaar sinds .NET Core 3.0 SDK.

  • --launch-profile <NAME>

    De naam van het startprofiel (indien van toepassing) dat moet worden gebruikt bij het starten van de toepassing. Startprofielen worden gedefinieerd in het launchSettings.json-bestand en worden meestal genoemd Development, Stagingen Production. Zie Werken met meerdere omgevingen voor meer informatie.

  • --no-build

    Het project wordt niet gebouwd voordat het wordt uitgevoerd. De vlag wordt ook impliciet ingesteld --no-restore .

  • --no-cache

    Sla up-to-date controles over en bouw het programma altijd voordat u het uitvoert.

  • --no-dependencies

    Wanneer u een project herstelt met P2P-verwijzingen (project-to-project), herstelt u het hoofdproject en niet de verwijzingen.

  • --no-launch-profile

    Er wordt niet geprobeerd launchSettings.json te gebruiken om de toepassing te configureren.

  • --no-restore

    Voert geen impliciete herstelbewerking uit bij het uitvoeren van de opdracht.

  • --no-self-contained

    Publiceer uw toepassing als een frameworkafhankelijke toepassing. Er moet een compatibele .NET-runtime worden geïnstalleerd op de doelcomputer om uw toepassing uit te voeren.

  • --os <OS>

    Hiermee geeft u het doelbesturingssysteem (OS). Dit is een verkorte syntaxis voor het instellen van de Runtime-id (RID), waarbij de opgegeven waarde wordt gecombineerd met de standaard-RID. Als u bijvoorbeeld op een win-x64 computer opgeeft --os linux , wordt de RID ingesteld op linux-x64. Als u deze optie gebruikt, gebruikt u de -r|--runtime optie niet. Beschikbaar sinds .NET 6.

  • --project <PATH>

    Hiermee geeft u het pad van het projectbestand dat moet worden uitgevoerd (mapnaam of volledig pad). Als dit niet is opgegeven, wordt deze standaard ingesteld op de huidige map.

    De -p afkorting voor --project wordt afgeschaft vanaf .NET 6 SDK. Gedurende een beperkte tijd -p kan nog steeds worden gebruikt voor --project ondanks de afschaffingswaarschuwing. Als het argument dat is opgegeven voor de optie niet bevat =, accepteert -p de opdracht als kort voor --project. Anders wordt ervan uitgegaan dat dit -p een afkorting is voor --property. Dit flexibele gebruik van -p voor --project zal worden uitgefaseerd in .NET 7.

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

    Hiermee stelt u een of meer MSBuild-eigenschappen in. Geef meerdere eigenschappen op die zijn gescheiden door puntkomma's of door de optie te herhalen:

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

    De korte vorm -p kan worden gebruikt voor --property. Als het argument dat voor de optie is =opgegeven, -p wordt geaccepteerd als kort voor --property. Anders wordt ervan uitgegaan dat dit -p een afkorting is voor --project.

    Als u wilt doorgeven --property aan de toepassing in plaats van een MSBuild-eigenschap in te stellen, geeft u de optie op na het -- syntaxisscheidingsteken, bijvoorbeeld:

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

    Hiermee geeft u de doelruntime op waarvoor pakketten moeten worden hersteld. Zie de RID-catalogus voor een lijst met runtime-id's (RID's).

  • -sc|--self-contained

    Hiermee publiceert u de .NET-runtime met uw toepassing, zodat de runtime niet hoeft te worden geïnstalleerd op het doelsysteem. De standaardwaarde is false. Bij het instellen van .NET 7 of lager is de standaardwaarde true echter als er een runtime-id is opgegeven.

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

    Hiermee geeft u op of Terminal Logger moet worden gebruikt voor de build-uitvoer. De standaardwaarde is auto, waarmee eerst de omgeving wordt geverifieerd voordat u terminallogboekregistratie inschakelt. De omgevingscontrole controleert of de terminal in staat is moderne uitvoerfuncties te gebruiken en geen omgeleide standaarduitvoer gebruikt voordat de nieuwe logger wordt ingeschakeld. on slaat de omgevingscontrole over en schakelt terminallogboekregistratie in. off slaat de omgevingscontrole over en maakt gebruik van de standaardconsolelogger.

    Terminal Logger toont de herstelfase, gevolgd door de buildfase. Tijdens elke fase worden de huidige bouwprojecten onderaan de terminal weergegeven. Elk project dat wordt gebouwd, levert zowel het MSBuild-doel dat momenteel wordt gebouwd als de hoeveelheid tijd die aan dat doel is besteed. U kunt deze informatie doorzoeken voor meer informatie over de build. Wanneer een project klaar is met bouwen, wordt één sectie 'build completed' geschreven die het volgende vastlegt:

    • De naam van het gebouwde project.
    • Het doelframework (indien multi-targeted).
    • De status van die build.
    • De primaire uitvoer van die build (die is hyperlinked).
    • Diagnostische gegevens die voor dat project worden gegenereerd.

    Deze optie is beschikbaar vanaf .NET 8.

  • -v|--verbosity <LEVEL>

    Hiermee stelt u het uitgebreidheidsniveau van de opdracht in. Toegestane waarden zijnq[uiet], , , m[inimal]en n[ormal]d[etailed]diag[nostic]. De standaardwaarde is minimal. Zie LoggerVerbosity voor meer informatie.

  • -?|-h|--help

    Hiermee wordt een beschrijving afgedrukt van het gebruik van de opdracht.

Omgevingsvariabelen

Er zijn vier mechanismen waarmee omgevingsvariabelen kunnen worden toegepast op de gestarte toepassing:

  1. Omgevingsomgevingsvariabelen van het besturingssysteem wanneer de opdracht wordt uitgevoerd.
  2. System.CommandLine-instructies env , zoals [env:key=value]. Deze zijn van toepassing op het hele dotnet run proces, niet alleen op het project dat wordt uitgevoerd.dotnet run
  3. environmentVariables uit het gekozen startprofiel (-lp) in het launchSettings.json-bestand van het project, indien van toepassing. Deze zijn van toepassing op het project dat wordt uitgevoerd door dotnet run.
  4. -e|--environment CLI-optiewaarden (toegevoegd in .NET SDK versie 9.0.200). Deze zijn van toepassing op het project dat wordt uitgevoerd door dotnet run.

De omgeving is opgebouwd in dezelfde volgorde als deze lijst, dus de -e|--environment optie heeft de hoogste prioriteit.

Voorbeelden

  • Voer het project uit in de huidige map:

    dotnet run
    
  • Voer de opgegeven app op basis van bestanden uit in de huidige map:

    dotnet run --file ConsoleApp.cs
    

    Ondersteuning voor app op basis van bestanden is toegevoegd in .NET SDK 10.0.100.

  • Voer het opgegeven project uit:

    dotnet run --project ./projects/proj1/proj1.csproj
    
  • Voer het project uit in de huidige map en geef de releaseconfiguratie op:

    dotnet run --property:Configuration=Release
    
  • Voer het project uit in de huidige map (het --help argument in dit voorbeeld wordt doorgegeven aan de toepassing, omdat de lege -- optie wordt gebruikt):

    dotnet run --configuration Release -- --help
    
  • Herstel afhankelijkheden en hulpprogramma's voor het project in de huidige map alleen met minimale uitvoer en voer vervolgens het project uit:

    dotnet run --verbosity m
    
  • Voer het project uit in de huidige map met behulp van het opgegeven framework en geef argumenten door aan de toepassing:

    dotnet run -f net6.0 -- arg1 arg2
    

    In het volgende voorbeeld worden drie argumenten doorgegeven aan de toepassing. Eén argument wordt doorgegeven met behulp van -en twee argumenten worden doorgegeven na --:

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