Come eseguire l'app console .NET Core dalla riga di comando


Risposte:


274

Se si tratta di un'applicazione dipendente dal framework (impostazione predefinita), la si esegue dotnet yourapp.dll.

Se si tratta di un'applicazione autonoma, la si esegue yourapp.exesu Windows e ./yourappsu Unix.

Per ulteriori informazioni sulle differenze tra i due tipi di app, vedere l' articolo sulla distribuzione di applicazioni .NET Core su .Net Docs.


22
È incredibile quanto tempo mi ci è voluto per scoprirlo. Sto provando tutti i tipi di comandi "dotnet run", ecc. Questo è il primo posto in cui mi sono imbattuto in molte ricerche che fornisce l'uso corretto di dotnet per l'esecuzione di un'applicazione console. Perché Microsoft ha reso .NET Core così non adatto agli sviluppatori?
Glen Thomas,

2
@GlenThomas Se vuoi eseguire un'applicazione che stai sviluppando, usi dotnet run. Inoltre, dove hai guardato? Dove ti aspetteresti queste informazioni?
svick

1
"dotnet run" non sembra più essere il caso dei progetti core .NET che utilizzano la nuova installazione di MSBuild csproj anziché i vecchi file project.json.
Glen Thomas,

1
@GlenThomas Non è vero, dotnet runfunziona allo stesso modo per i nuovi progetti csproj come per project.json.
svick

5
@GlenThomas, non sono sicuro che questo sia il problema che stavi riscontrando, ma quando tenti di utilizzarlo dotnet run, assicurati di essere nella directory del progetto, non nella directory della soluzione.
Ryan Lundy,

46

Puoi creare facilmente un EXE (per Windows) senza usare alcun comando di creazione criptico. Puoi farlo bene in Visual Studio.

  1. Fare clic con il tasto destro del mouse sul Progetto app console e selezionare Pubblica .
  2. Si aprirà una nuova pagina (schermata sotto)
  3. Premi Configura ...
  4. Quindi modificare la modalità di distribuzione in Autosufficiente o dipendente dal framework . .NET Core 3.0 introduce una distribuzione a file singolo che è un singolo eseguibile.
  5. Utilizzare "framework framework" se si conosce che il computer di destinazione ha un runtime .NET Core poiché produrrà meno file da installare.
  6. Se ora visualizzi la cartella bin in explorer, troverai il file .exe.
  7. Dovrai distribuire l'exe insieme a tutti i file di configurazione e dll di supporto.

Pubblicazione app console


5
Sì. C'è EXE - insieme ad altri 217 file (api-ms-win-core-namedpipe-l1-1-0.dll, ecc.). Esiste un modo per raggruppare questo in un singolo EXE?
Elton,

1
Bella domanda @Elton. Non lo so. AFAIK devi distribuire tutte le dll.
Jess

2
Penserei che il fatto che sia configurato per essere autonomo richiederebbe che tutte quelle DLL fossero presenti. Se non li vuoi lì, la modalità di distribuzione dovrebbe probabilmente essere dipendente dal framework
kippermand,

1
Hai fatto il mio venerdì!
Robin Johnson,

20

Puoi anche eseguire la tua app come qualsiasi altra applicazione console ma solo dopo la pubblicazione.

Supponiamo che tu abbia la semplice app console denominata MyTestConsoleApp. Aprire la console del gestore pacchetti ed eseguire il comando seguente:

dotnet publish -c Debug -r win10-x64 

-c flag indica che si desidera utilizzare la configurazione di debug (in altri casi è necessario utilizzare il valore di rilascio) - r flag indica che l'applicazione verrà eseguita su piattaforma Windows con architettura x64.

Al termine della procedura di pubblicazione, vedrai il file * .exe situato nella directory bin / Debug / publishing.

Ora puoi chiamarlo tramite gli strumenti da riga di comando. Quindi apri la finestra (o il terminale) di CMD, passa alla directory in cui si trova il tuo file * .exe e scrivi il comando successivo:

>> MyTestConsoleApp.exe argument-list

Per esempio:

>> MyTestConsoleApp.exe --input some_text -r true

2

Con dotnetcore3.0 è possibile impacchettare l'intera soluzione in un file eseguibile a file singolo utilizzando la PublishSingleFileproprietà

-p:PublishSingleFile=True

File eseguibili a file singolo di origine

Un esempio di Self Contained, ReleaseOSX eseguibile:

dotnet publish -c Release -r osx-x64 -p:PublishSingleFile=True --self-contained True

Un esempio di Self Contained, DebugLinux 64bit eseguibile:

dotnet publish -c Debug -r linux-x64 -p:PublishSingleFile=True --self-contained True

La build di Linux è indipendente dalla distribuzione e li ho trovati funzionanti su Ubuntu 18.10, CentOS 7.7 e Amazon Linux 2.

Un eseguibile autonomo include Dotnet Runtime e Runtime non richiede l'installazione su un computer di destinazione. Gli eseguibili pubblicati vengono salvati in:

<ProjectDir>/bin/<Release or Debug>/netcoreapp3.0/<target-os>/publish/ su Linux, OSX e

<ProjectDir>\bin\<Release or Debug>\netcoreapp3.0\<target-os>\publish\ Su Windows.


Puoi anche aggiungere la configurazione al file csproj:<PublishSingleFile>true</PublishSingleFile>
Mahdi Ataollahi il

0

Utilizzando CMD è possibile eseguire un progetto core .net della console se nel computer è installato l'SDK core .net:

Per eseguire il progetto console utilizzando la riga di comando di Windows, selezionare il percorso specifico dalla directory e digitare il comando seguente

corsa dotnet


0

prima di eseguire nel prompt cmd, assicurarsi che "appsettings.json" abbia gli stessi valori di "appsettings.Development.json".

Nel prompt dei comandi, vai fino alla cartella bin / debug / netcoreapp2.0. quindi eseguire "dotnet applicationname.dll"

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.