So führen Sie die .NET Core-Konsolen-App über die Befehlszeile aus

Antworten:

273

Wenn es sich um eine Framework-abhängige Anwendung handelt (Standardeinstellung), führen Sie sie aus dotnet yourapp.dll.

Wenn es sich um eine eigenständige Anwendung handelt, führen Sie sie unter yourapp.exeWindows und ./yourappUnix aus.

Weitere Informationen zu den Unterschieden zwischen den beiden Anwendungstypen finden Sie im Artikel zur Bereitstellung von .NET Core-Anwendungen in .NET- Dokumenten.

svick
quelle
22
Es ist erstaunlich, wie lange ich gebraucht habe, um das herauszufinden. Ich versuche alle Arten von "Dotnet Run" -Befehlen usw. Dies ist der erste Ort, auf den ich bei vielen Suchanfragen gestoßen bin, die die richtige Dotnet-Verwendung zum Ausführen einer Konsolenanwendung liefern. Warum hat Microsoft .NET Core so unentwicklerfreundlich gemacht?
Glen Thomas
2
@GlenThomas Wenn Sie eine Anwendung ausführen möchten, die Sie entwickeln, verwenden Sie dotnet run. Und wo hast du gesucht? Wo würden Sie diese Informationen erwarten?
Svick
1
"dotnet run" scheint bei .NET-Kernprojekten, die das neuere MSBuild csproj-Setup anstelle der alten project.json-Dateien verwenden, nicht mehr der Fall zu sein.
Glen Thomas
1
@GlenThomas Das stimmt nicht, dotnet runfunktioniert für die neuen csproj-Projekte genauso wie für project.json.
Svick
5
@GlenThomas, nicht sicher, ob dies das Problem ist, das Sie hatten, aber wenn Sie versuchen, es zu verwenden dotnet run, stellen Sie sicher, dass Sie sich im Projektverzeichnis und nicht im Lösungsverzeichnis befinden.
Ryan Lundy
46

Sie können sehr einfach eine EXE-Datei (für Windows) erstellen, ohne kryptische Build-Befehle zu verwenden. Sie können es direkt in Visual Studio tun.

  1. Klicken Sie mit der rechten Maustaste auf das Konsolen-App-Projekt und wählen Sie Veröffentlichen .
  2. Eine neue Seite wird geöffnet (Screenshot unten)
  3. Klicken Sie auf Konfigurieren ...
  4. Ändern Sie dann den Bereitstellungsmodus in "In sich geschlossen" oder " Framework-abhängig" . .NET Core 3.0 führt eine Einzeldateienbereitstellung ein, bei der es sich um eine einzelne ausführbare Datei handelt.
  5. Verwenden Sie "Framework-abhängig", wenn Sie wissen, dass der Zielcomputer über eine .NET Core-Laufzeit verfügt, da weniger zu installierende Dateien erstellt werden.
  6. Wenn Sie jetzt den Ordner bin im Explorer anzeigen , finden Sie die EXE-Datei.
  7. Sie müssen die exe zusammen mit allen unterstützenden Konfigurations- und DLL-Dateien bereitstellen.

Konsolen-App veröffentlichen

Jess
quelle
5
Ja. Es gibt die EXE - zusammen mit 217 anderen Dateien (api-ms-win-core-namedpipe-l1-1-0.dll usw.). Gibt es überhaupt eine Möglichkeit, dies auf eine einzige EXE zu bündeln?
Elton
1
Gute Frage @Elton. Ich weiß nicht. AFAIK Sie müssen alle DLLs bereitstellen.
Jess
2
Ich würde denken, dass die Tatsache, dass es so konfiguriert ist, dass es in sich geschlossen ist, alle diese DLLs erfordern würde, um dort zu sein. Wenn Sie sie dort nicht möchten, muss der Bereitstellungsmodus wahrscheinlich Framework-abhängig sein
kippermand
1
Du hast meinen Freitag gemacht!
Robin Johnson
20

Sie können Ihre App auch wie alle anderen Konsolenanwendungen ausführen, jedoch erst nach der Veröffentlichung.

Angenommen, Sie haben die einfache Konsolen-App MyTestConsoleApp. Öffnen Sie die Paketmanagerkonsole und führen Sie den folgenden Befehl aus:

dotnet publish -c Debug -r win10-x64 

-c Flag bedeutet, dass Sie die Debug-Konfiguration verwenden möchten (in anderen Fällen sollten Sie den Release-Wert verwenden). -fl Flag bedeutet, dass Ihre Anwendung auf einer Windows-Plattform mit x64-Architektur ausgeführt wird.

Wenn der Veröffentlichungsvorgang abgeschlossen ist, wird die Datei * .exe in Ihrem Verzeichnis bin / Debug / Publish angezeigt.

Jetzt können Sie es über Befehlszeilentools aufrufen. Öffnen Sie also das CMD-Fenster (oder Terminal), wechseln Sie in das Verzeichnis, in dem sich Ihre * .exe-Datei befindet, und schreiben Sie den nächsten Befehl:

>> MyTestConsoleApp.exe argument-list

Beispielsweise:

>> MyTestConsoleApp.exe --input some_text -r true
Tequila
quelle
2

Mit dotnetcore3.0 können Sie die gesamte Lösung mithilfe der PublishSingleFileEigenschaft in eine ausführbare Datei mit einer einzigen Datei packen

-p:PublishSingleFile=True

Quell- Einzeldateien ausführbare Dateien

Ein Beispiel Self Contained, ReleaseOSX ausführbar:

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

Ein Beispiel Self Contained, DebugLinux 64bit ausführbar:

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

Der Linux-Build ist unabhängig von der Distribution und ich habe festgestellt, dass sie unter Ubuntu 18.10, CentOS 7.7 und Amazon Linux 2 funktionieren.

Eine eigenständige ausführbare Datei enthält Dotnet Runtime und Runtime muss nicht auf einem Zielcomputer installiert werden. Die veröffentlichten ausführbaren Dateien werden gespeichert unter:

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

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

TMT
quelle
Sie können die Konfiguration auch zur csproj-Datei hinzufügen:<PublishSingleFile>true</PublishSingleFile>
Mahdi Ataollahi
0

Mit CMD können Sie ein .net-Kernprojekt für die Konsole ausführen, wenn das .net-Kern-SDK auf Ihrem Computer installiert ist:

Um ein Konsolenprojekt über die Windows-Befehlszeile auszuführen, wählen Sie den spezifischen Pfad aus Ihrem Verzeichnis aus und geben Sie den folgenden Befehl ein

dotnet laufen

Saurabh Nachankar
quelle
0

Stellen Sie vor dem Ausführen der Eingabeaufforderung cmd sicher, dass "appsettings.json" dieselben Werte wie "appsettings.Development.json" hat.

Gehen Sie an der Eingabeaufforderung bis zum Ordner bin / debug / netcoreapp2.0. Führen Sie dann "dotnet applicationname.dll" aus.

rahul
quelle