Mam prostą aplikację konsolową w .NET. To tylko część testowa większej aplikacji. Chciałbym określić „kod wyjścia” mojej aplikacji konsoli. Jak mam to zrobic?
471
3 opcje:
Main
jeśli zadeklarujesz Main
metodę zwrotu int
.Environment.Exit(code)
.Environment.ExitCode = -1;
. Będzie to wykorzystane, jeśli nic więcej nie ustawi kodu powrotu lub nie użyje jednej z pozostałych opcji powyżej).W zależności od aplikacji (konsola, usługa, aplikacja internetowa itp.) Można stosować różne metody.
0
oznacza sukces, a niezerowy oznacza niepowodzenie.return;
wskazuje sukces poprzez kod wyjścia0
ireturn -1;
wskazuje niepowodzenie.Oprócz odpowiedzi dotyczących powrotu int ... prośba o rozsądek. Proszę, proszę zdefiniować kody wyjścia w wyliczeniu, w razie potrzeby z flagami. To sprawia, że debugowanie i konserwacja są o wiele łatwiejsze (a jako bonus możesz łatwo wydrukować kody wyjścia na ekranie pomocy - masz jeden z nich, prawda?).
źródło
0 = Success
wynika z faktu, że potrzebny jest tylko jeden kod sukcesu, ale wielu kodów błędów, takich jak 0, ponieważ nie ma + lub - w liczbach całkowitych komputera, można użyć do jednoznacznej identyfikacji sukcesuIstnieją trzy metody zwracania kodu wyjścia z aplikacji konsoli.
Main
metodę w swojej aplikacji, aby zwracała wartośćint
zamiastvoid
(funkcja, która zwraca wartośćInteger
zamiast zamiastSub
w VB.Net), a następnie zwraca kod wyjścia z tej metody.Main
metoda zwróci coś innego niżvoid
(jestSub
w VB.Net), wówczas wartość tej właściwości zostanie zignorowana.Ważnym standardem, którego należy przestrzegać, jest
0
„sukces”.W pokrewnym temacie rozważ użycie wyliczenia do zdefiniowania kodów zakończenia, które aplikacja zwróci. FlagsAttribute pozwoli Ci powrócić kombinacji kodów.
Upewnij się także, że twoja aplikacja jest skompilowana jako „Aplikacja konsolowa”.
źródło
Environment.ExitCode
nie zamyka programu natychmiast, aleEnvironment.Exit
metoda natychmiast zamyka programProcess
obiekt, możesz poprosić o obiektWaitForExit()
, a następnie poprosić o kod wyjścia z niego.Jeśli zamierzasz skorzystać z metody sugerowanej przez Davida, powinieneś także spojrzeć na atrybut [Flagi].
To pozwala ci wykonywać nieco mądre operacje na wyliczeniach.
Następnie
będzie 16 + 32. :)
źródło
źródło
http://msdn.microsoft.com/en-us/library/system.environment.exitcode.aspx
źródło
Wystarczy zwrócić odpowiedni kod z głównego.
źródło
static void Main(string[] args);
Użyj ExitCode, jeśli twój main ma podpis void return, w przeciwnym razie musisz go „ustawić” na podstawie zwracanej wartości.
Environment.ExitCode Właściwość
źródło
Jako aktualizacja Scott Munro jest odpowiedź :
Main
nie ma wpływu.main
punktu wejścia.źródło
Main()
nie ustawił tego,Process.ExitCode
co widzi aplikacja wywołująca.int Main
nadal może być używany jako alternatywa dla Environment.ExitCode. linkOpcja wyliczenia jest doskonała, ale można ją ulepszyć, mnożąc liczby jak w:
W przypadku wielu błędów, dodanie określonych numerów błędów razem daje unikalny numer, który będzie reprezentował kombinację wykrytych błędów.
Na przykład poziom błędu 6 może składać się tylko z błędów 4 i 2, 12 może składać się tylko z błędów 4 i 8, 14 może składać się tylko z 2, 4 i 8 itd.
źródło
Moje 2 centy:
Systemowe kody błędów można znaleźć tutaj: https://msdn.microsoft.com/en-us/library/windows/desktop/ms681382(v=vs.85).aspx
Znajdziesz typowe kody, takie jak 2 dla „nie znaleziono pliku” lub 5 dla „odmowy dostępu”.
A kiedy natkniesz się na nieznany kod, możesz użyć tego polecenia, aby dowiedzieć się, co to znaczy:
na przykład
zwroty
źródło
Użyj tego kodu
użyj 0 jako int, jeśli nie chcesz niczego zwracać.
źródło