Jak uruchomić aplikację konsoli .NET Core z wiersza poleceń

Odpowiedzi:

274

Jeśli jest to aplikacja zależna od frameworka (domyślnie), uruchamiasz ją dotnet yourapp.dll .

Jeśli jest to samodzielna aplikacja, uruchamiasz ją yourapp.exew systemie Windows i ./yourappna Uniksie.

Aby uzyskać więcej informacji o różnicach między tymi dwoma typami aplikacji, zobacz artykuł dotyczący wdrażania aplikacji .NET Core w dokumentacji .Net Docs.

svick
źródło
22
To niesamowite, jak długo zajęło mi to odkrycie. Próbuję wszelkiego rodzaju poleceń „dotnet run” itp. To pierwsze miejsce, w którym natknąłem się na wiele wyszukiwań, które zapewniają prawidłowe użycie dotnetu do uruchamiania aplikacji konsoli. Dlaczego Microsoft uczynił platformę .NET Core tak przyjazną programistom?
Glen Thomas
2
@GlenThomas Jeśli chcesz uruchomić rozwijaną aplikację, korzystaj z niej dotnet run. Poza tym, gdzie spojrzałeś? Gdzie można oczekiwać tych informacji?
sick
1
Wydaje się, że „uruchamianie dotnetu” nie występuje już w przypadku podstawowych projektów .NET przy użyciu nowszej instalacji csproj MSBuild, a nie starych plików project.json.
Glen Thomas
1
@GlenThomas To nieprawda, dotnet rundziała tak samo w przypadku nowych projektów csproj, jak w przypadku projektu.json.
sick
5
@GlenThomas, nie jestem pewien, czy to był problem, ale próbując go użyć dotnet run, upewnij się, że jesteś w katalogu projektu, a nie w katalogu rozwiązań.
Ryan Lundy,
46

Możesz bardzo łatwo utworzyć plik EXE (dla systemu Windows) bez użycia żadnych tajemniczych poleceń kompilacji. Możesz to zrobić bezpośrednio w Visual Studio.

  1. Kliknij prawym przyciskiem myszy Projekt aplikacji konsoli i wybierz Publikuj .
  2. Otworzy się nowa strona (zrzut ekranu poniżej)
  3. Kliknij Konfiguruj ...
  4. Następnie zmień tryb wdrażania na samodzielny lub zależny od środowiska . .NET Core 3.0 wprowadza wdrożenie pojedynczego pliku, które jest pojedynczym plikiem wykonywalnym.
  5. Użyj „zależnego od środowiska”, jeśli wiesz, że komputer docelowy ma środowisko uruchomieniowe .NET Core, ponieważ wygeneruje mniej plików do zainstalowania.
  6. Jeśli teraz przeglądasz kosz folder w Eksploratorze, znajdziesz plik .exe.
  7. Będziesz musiał wdrożyć plik exe wraz z wszelkimi obsługiwanymi plikami config i dll.

Publikowanie aplikacji konsoli

Pęto
źródło
5
Tak. Jest plik EXE - wraz z 217 innymi plikami (api-ms-win-core-namedpipe-l1-1-0.dll itp.). Czy w ogóle można to spakować do jednego pliku EXE?
Elton,
1
Dobre pytanie @Elton. Nie wiem. AFAIK musisz wdrożyć wszystkie biblioteki dll.
Jess,
2
Myślę, że fakt, że jest skonfigurowany jako samodzielny, wymagałby obecności wszystkich tych bibliotek DLL. Jeśli nie chcesz ich tam, tryb wdrażania prawdopodobnie musiałby być zależny od środowiska
kippermand
1
Zrobiłeś mój piątek!
Robin Johnson
20

Możesz także uruchomić aplikację tak jak inne aplikacje konsolowe, ale dopiero po opublikowaniu.

Załóżmy, że masz prostą aplikację konsoli o nazwie MyTestConsoleApp. Otwórz konsolę menedżera pakietów i uruchom następujące polecenie:

dotnet publish -c Debug -r win10-x64 

-c flaga oznacza, że ​​chcesz użyć konfiguracji debugowania (w innym przypadku powinieneś użyć wartości Release) - flaga r oznacza, że ​​twoja aplikacja zostanie uruchomiona na platformie Windows z architekturą x64.

Po zakończeniu procedury publikowania zobaczysz plik * .exe znajdujący się w katalogu bin / Debug / Publishing.

Teraz możesz zadzwonić za pomocą narzędzi wiersza poleceń. Otwórz okno CMD (lub terminal) i przejdź do katalogu, w którym znajduje się plik * .exe, i napisz następne polecenie:

>> MyTestConsoleApp.exe argument-list

Na przykład:

>> MyTestConsoleApp.exe --input some_text -r true
Tequila
źródło
2

Za pomocą dotnetcore3.0 można spakować całe rozwiązanie do pliku wykonywalnego z jednym plikiem, używając PublishSingleFilewłaściwości

-p:PublishSingleFile=True

Źródło plików wykonywalnych jednego pliku

Przykładem Self Contained, ReleaseOSX wykonywalnego:

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

Przykładem Self Contained, DebugLinux 64bit wykonywalny:

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

Kompilacja Linuksa jest niezależna od dystrybucji i znalazłem, że działają na Ubuntu 18.10, CentOS 7.7 i Amazon Linux 2.

Samodzielny plik wykonywalny obejmuje środowisko wykonawcze Dotnet, a środowisko wykonawcze nie wymaga instalacji na komputerze docelowym. Opublikowane pliki wykonywalne są zapisywane w:

<ProjectDir>/bin/<Release or Debug>/netcoreapp3.0/<target-os>/publish/ w systemie Linux, OSX i

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

TMT
źródło
Możesz także dodać konfigurację do pliku csproj:<PublishSingleFile>true</PublishSingleFile>
Mahdi Ataollahi,
0

Za pomocą CMD możesz uruchomić konsolowy projekt .NET Core, jeśli na twoim komputerze jest zainstalowany .NET Core SDK:

Aby uruchomić projekt konsoli za pomocą wiersza polecenia systemu Windows, wybierz określoną ścieżkę z katalogu i wpisz następujące polecenie

uruchomienie dotnet

Saurabh Nachankar
źródło
0

przed uruchomieniem w wierszu polecenia cmd upewnij się, że „appsettings.json” ma takie same wartości jak „appsettings.Development.json”.

W wierszu polecenia przejdź do folderu bin / debug / netcoreapp2.0. następnie uruchom „dotnet applicationname.dll”

Rahul
źródło