Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo si applica a: ✔️ .NET 6 SDK e versioni successive
Nome
dotnet run: esegue il codice sorgente senza comandi espliciti di compilazione o avvio.
Riepilogo
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
Descrizione
Il comando dotnet run offre un modo pratico per eseguire l'applicazione dal codice sorgente con un solo comando. Questo comando è utile per lo sviluppo iterativo veloce dalla riga di comando. Il comando dipende dal comando dotnet build per compilare il codice. Tutti i requisiti per la compilazione si applicano anche a dotnet run .
Nota
dotnet run non rispetta argomenti come /property:property=value, che vengono rispettati da dotnet build.
I file di output vengono scritti nel percorso predefinito, ovvero bin/<configuration>/<target>. Se ad esempio si ha un'applicazione netcoreapp2.1 e si esegue dotnet run, l'output viene inserito in bin/Debug/netcoreapp2.1. I file vengono sovrascritti in base alle esigenze. I file temporanei vengono inseriti nella directory obj.
Se il progetto specifica più framework, l'esecuzione di dotnet run genera un errore a meno che non venga usata l'opzione -f|--framework <FRAMEWORK> per specificare il framework.
Il comando dotnet run viene usato nel contesto dei progetti e non di assembly di compilazione. Se in alternativa si prova a eseguire la DLL di un'applicazione dipendente da framework, è necessario usare dotnet senza un comando. Ad esempio, per eseguire myapp.dll, usare:
dotnet myapp.dll
Per altre informazioni sul driver, vedere Panoramica dell'interfaccia della dotnet riga di comando di .NET.
Per eseguire l'applicazione, il comando dotnet run risolve le dipendenze dell'applicazione esterne al runtime condiviso dalla cache NuGet. È consigliabile non per usare dotnet run per eseguire le applicazioni nell'ambiente di produzione perché questo comando usa dipendenze memorizzate nella cache. In alternativa, creare una distribuzione usando il comando dotnet publish e distribuire l'output pubblicato.
Ripristino implicito
Non è necessario eseguire dotnet restore perché viene eseguito in modo implicito da tutti i comandi che richiedono un ripristino, ad esempio dotnet new, dotnet build, dotnet run, dotnet test, dotnet publish e dotnet pack. Per disabilitare il ripristino implicito, usare l'opzione --no-restore.
Il comando dotnet restore è ancora utile in alcuni scenari in cui ha senso eseguire un ripristino esplicito, ad esempio le compilazioni di integrazione continua in Azure DevOps Services o in sistemi di compilazione che richiedono il controllo esplicito quando viene eseguito il ripristino.
Per informazioni su come gestire i feed NuGet, vedere la dotnet restore documentazione.
Questo comando supporta le opzioni dotnet restore passate nel formato continuo (ad esempio, --source). Le opzioni in formato breve, come -s, non sono supportate.
Download del manifesto del carico di lavoro
Quando si esegue questo comando, avvia un download in background asincrono dei manifesti pubblicitari per i carichi di lavoro. Se il download è ancora in esecuzione al termine di questo comando, il download viene arrestato. Per altre informazioni, vedere Manifesti pubblicitari.
Arguments
<applicationArguments>
Argomenti passati all'applicazione in esecuzione.
Tutti gli argomenti non riconosciuti da dotnet run vengono passati all'applicazione. Per separare gli argomenti per dotnet run dagli argomenti per l'applicazione, usare l'opzione -- .
Opzioni
--Delimita gli argomenti a
dotnet rundagli argomenti per l'applicazione in esecuzione. Tutti gli argomenti dopo questo delimitatore vengono passati all'applicazione in esecuzione.-
-a|--arch <ARCHITECTURE>Specifica l'architettura di destinazione. Si tratta di una sintassi abbreviata per l'impostazione dell'identificatore di runtime (RID), in cui il valore fornito viene combinato con il RID predefinito. Ad esempio, in un computer
win-x64, specificando--arch x86si imposta il RID suwin-x86. Se si usa questa opzione, non usare l'opzione-r|--runtime. Disponibile a partire da .NET 6 Preview 7. -
--artifacts-path <ARTIFACTS_DIR>Tutti i file di output di compilazione del comando eseguito verranno inseriti nelle sottocartelle nel percorso specificato, separati dal progetto. Per altre informazioni, vedere layout di output artefatti. Disponibile a partire da .NET 8 SDK.
-
-c|--configuration <CONFIGURATION>Definisce la configurazione di compilazione. Il valore predefinito per la maggior parte dei progetti è
Debug, ma è possibile eseguire l'override delle impostazioni di configurazione della compilazione nel progetto. -
--disable-build-serversForza il comando a ignorare tutti i server di compilazione permanenti. Questa opzione consente di disabilitare in modo coerente l'uso della memorizzazione nella cache di compilazione, che forza una compilazione da zero. Una compilazione che non si basa sulle cache è utile quando le cache potrebbero essere danneggiate o errate per qualche motivo. Disponibile a partire da .NET 7 SDK.
-e|--environment <KEY=VALUE>Imposta la variabile di ambiente specificata nel processo che verrà eseguita dal comando . La variabile di ambiente specificata non viene applicata al
dotnet runprocesso.Le variabili di ambiente passate tramite questa opzione hanno la precedenza sulle variabili di ambiente, sulle direttive System.CommandLine
enveenvironmentVariablesdal profilo di avvio scelto. Per altre informazioni, vedere Variabili di ambiente.Questa opzione è stata aggiunta in .NET SDK 9.0.200.
-f|--framework <FRAMEWORK>Compila ed esegue l'app usando il framework specificato. Il framework deve essere specificato nel file di progetto.
--file <FILE_PATH>Percorso dell'app basata su file da eseguire. Se non viene specificato un percorso, la directory corrente viene usata per trovare ed eseguire il file. Per altre informazioni sulle app basate su file, vedere Creare app C# basate su file.
In Unix è possibile eseguire direttamente le app basate su file usando il nome del file di origine nella riga di
dotnet runcomando anziché . Verificare prima di tutto che il file disponga delle autorizzazioni di esecuzione. Aggiungere quindi una riga#!shebang come prima riga del file, ad esempio:#!/usr/bin/env dotnet runÈ quindi possibile eseguire il file direttamente dalla riga di comando:
./ConsoleApp.csIntrodotto in .NET SDK 10.0.100.
--forceForza la risoluzione di tutte le dipendenze, anche se l'ultimo ripristino ha avuto esito positivo. La specifica di questo flag equivale all'eliminazione del file project.assets.json.
-
--interactiveConsente al comando di arrestarsi e attendere l'input o l'azione dell'utente, ad esempio il completamento dell'autenticazione.
--launch-profile <NAME>Il nome del profilo di avvio, se presente, da usare all'avvio dell'applicazione. I profili di avvio vengono definiti nel file launchSettings.json e in genere vengono denominati
Development,StagingeProduction. Per altre informazioni, vedere Working with multiple environments (Utilizzo con più ambienti).--no-buildNon compila il progetto prima dell'esecuzione. Imposta anche in modo implicito il flag
--no-restore.--no-cacheIgnorare i controlli aggiornati e compilare sempre il programma prima dell'esecuzione.
--no-dependenciesDurante il ripristino di un progetto con riferimenti da progetto a progetto, ripristina il progetto radice e non i riferimenti.
--no-launch-profileNon tenta di usare launchSettings.json per configurare l'applicazione.
--no-restoreNon esegue un ripristino implicito quando si esegue il comando.
-
--no-self-containedPubblicare l'applicazione come applicazione dipendente dal framework. Per eseguire l'applicazione, è necessario installare un runtime .NET compatibile nel computer di destinazione.
-
--os <OS>Specifica il sistema operativo di destinazione. Si tratta di una sintassi abbreviata per l'impostazione dell'identificatore di runtime (RID), in cui il valore fornito viene combinato con il RID predefinito. Ad esempio, in un computer
win-x64, specificando--os linuxsi imposta il RID sulinux-x64. Se si usa questa opzione, non usare l'opzione-r|--runtime. Disponibile a partire da .NET 6. --project <PATH>Specifica il percorso del file di progetto da eseguire: nome della cartella o percorso completo. Se non specificato, per impostazione predefinita il percorso corrisponde alla directory corrente.
L'abbreviazione
-pdi--projectè deprecata a partire da .NET 6 SDK. Per un periodo di tempo limitato,-ppuò comunque essere usato per--projectnonostante l'avviso di deprecazione. Se l'argomento fornito per l'opzione non contiene=, il comando accetta-pcome breve per--project. In caso contrario, il comando presuppone che-psia breve per--property. Questo uso flessibile di-pper--projectverrà eliminato gradualmente in .NET 7.--property:<NAME>=<VALUE>Imposta una o più proprietà di MSBuild. Specificare più proprietà delimitate da punti e virgola o ripetendo l'opzione:
--property:<NAME1>=<VALUE1>;<NAME2>=<VALUE2> --property:<NAME1>=<VALUE1> --property:<NAME2>=<VALUE2>Il formato
-pbreve può essere usato per--property. Se l'argomento fornito per l'opzione contiene=,-pviene accettato come breve per--property. In caso contrario, il comando presuppone che-psia breve per--project.Per passare
--propertyall'applicazione anziché impostare una proprietà MSBuild, fornire l'opzione dopo il separatore di sintassi--, ad esempio:dotnet run -- --property name=value-r|--runtime <RUNTIME_IDENTIFIER>Specifica il runtime di destinazione per cui ripristinare i pacchetti. Per un elenco degli identificatori di runtime (RID, Runtime Identifier), vedere il catalogo RID.
-
--sc|--self-containedPubblicare il runtime .NET con l'applicazione in modo che il runtime non debba essere installato nel computer di destinazione.
-
--tl:[auto|on|off]Specifica se il Logger terminale deve essere usato per l'output di compilazione. Il valore predefinito è
auto, che prima di abilitare la registrazione del terminale verifica l'ambiente. Prima di abilitare il nuovo logger, il controllo dell'ambiente verifica che il terminale sia in grado di usare le funzionalità di output moderne e che non utilizzi un output standard reindirizzato.onignora il controllo dell'ambiente e abilita la registrazione del terminale.offignora il controllo dell'ambiente e usa il logger di console predefinito.Terminale Logger mostra la fase di ripristino seguita dalla fase di compilazione. Durante ogni fase, i progetti che sono in corso di compilazione vengono visualizzati nella parte inferiore del terminale. Ogni progetto che compila restituisce sia la destinazione MSBuild attualmente in fase di compilazione che la quantità di tempo impiegato per tale destinazione. È possibile cercare queste informazioni per altre informazioni sulla compilazione. Al termine della compilazione di un progetto, viene scritta una singola sezione "compilazione completata" che acquisisce:
- Il nome del progetto compilato.
- Il framework di destinazione (se sono presenti più destinazioni).
- Lo stato della compilazione.
- L'output primario di tale compilazione (con collegamento ipertestuale).
- Qualsiasi diagnostica generata per il progetto.
Questa opzione è disponibile a partire da .NET 8.
-
-v|--verbosity <LEVEL>Imposta il livello di dettaglio del comando. I valori consentiti sono
q[uiet],m[inimal],n[ormal],d[etailed]ediag[nostic]. Il valore predefinito èminimal. Per ulteriori informazioni, vedere LoggerVerbosity. -
-?|-h|--helpStampa una descrizione di come usare il comando.
Variabili di ambiente
Esistono quattro meccanismi in base ai quali è possibile applicare le variabili di ambiente all'applicazione avviata:
- Variabili di ambiente del sistema operativo quando viene eseguito il comando.
- Direttive System.CommandLine
env, ad esempio[env:key=value]. Questi si applicano all'interodotnet runprocesso, non solo al progetto eseguito dadotnet run. -
environmentVariablesdal profilo di avvio selezionato (-lp) nel file dilaunchSettings.json del progetto, se presente. Questi si applicano al progetto in esecuzione dadotnet run. -
-e|--environmentValori delle opzioni dell'interfaccia della riga di comando (aggiunti in .NET SDK versione 9.0.200). Questi si applicano al progetto in esecuzione dadotnet run.
L'ambiente viene costruito nello stesso ordine di questo elenco, quindi l'opzione -e|--environment ha la precedenza più alta.
Esempi
Eseguire il progetto nella directory corrente:
dotnet runEseguire l'app basata su file specificata nella directory corrente:
dotnet run --file ConsoleApp.csIl supporto delle app basate su file è stato aggiunto in .NET SDK 10.0.100.
Eseguire il progetto specificato:
dotnet run --project ./projects/proj1/proj1.csprojEseguire il progetto nella directory corrente, specificando la configurazione della versione:
dotnet run --property:Configuration=ReleaseEseguire il progetto nella directory corrente. L'argomento
--helpin questo esempio viene passato all'applicazione perché viene usata l'opzione--vuota:dotnet run --configuration Release -- --helpRipristinare dipendenze e strumenti per il progetto nella directory corrente visualizzando solo output minimo e quindi eseguire il progetto:
dotnet run --verbosity mEseguire il progetto nella directory corrente usando il framework specificato e passare argomenti all'applicazione:
dotnet run -f net6.0 -- arg1 arg2Nell'esempio seguente vengono passati tre argomenti all'applicazione. Un argomento viene passato usando
-e due argomenti vengono passati dopo--:dotnet run -f net6.0 -arg1 -- arg2 arg3