У меня есть тривиальное консольное приложение в .NET. Это всего лишь тестовая часть более крупного приложения. Я хотел бы указать «код выхода» моего консольного приложения. Как мне это сделать?
471
3 варианта:
Main
если объявите свой Main
метод возврата int
.Environment.Exit(code)
.Environment.ExitCode = -1;
. Это будет использоваться, если ничто другое не устанавливает код возврата или использует одну из других опций выше).В зависимости от вашего приложения (консоли, службы, веб-приложения и т. Д.) Могут использоваться разные методы.
0
означает успех, а ненулевой означает сбой.return;
указывает на успех через код завершения0
иreturn -1;
указывает на ошибку.В дополнение к ответам, охватывающим возвращение int's ... призыв к здравомыслию. Пожалуйста, укажите ваши коды выхода в перечислении, с флагами, если это необходимо. Это значительно упрощает отладку и обслуживание (и в качестве бонуса вы можете легко распечатать коды выхода на экране справки - у вас есть один из них, верно?).
источник
0 = Success
исходит из того факта, что нужен только один код успеха, но многие коды ошибок, такие, что 0, не имеющие + или - в целых числах компьютера, могут быть использованы для уникальной идентификации успехаЕсть три метода, которые вы можете использовать для возврата кода завершения из консольного приложения.
Main
метод в своем приложении так, чтобы он возвращалint
вместоvoid
(функция, которая возвращаетInteger
вместо вместоSub
в VB.Net), а затем возвращал код выхода из этого метода.Main
метод возвращает что-либо кромеvoid
(находитсяSub
в VB.Net), тогда значение этого свойства будет игнорироваться.Важный стандарт, который следует соблюдать, - это
0
«Успех».В связанной теме рассмотрите возможность использования перечисления для определения кодов выхода, которые ваше приложение собирается вернуть. FlagsAttribute позволит вернуть комбинацию кодов.
Также убедитесь, что ваше приложение скомпилировано как «Консольное приложение».
источник
Environment.ExitCode
не закрывает программу сразу, ноEnvironment.Exit
метод закрывает программу немедленноProcess
объект, вы можете запросить объектWaitForExit()
, а затем запросить у него код выхода.Если вы собираетесь использовать метод, предложенный Дэвидом, вам также следует взглянуть на атрибут [Flags].
Это позволяет вам делать побитовые операции над перечислениями.
затем
будет 16 + 32. :)
источник
источник
http://msdn.microsoft.com/en-us/library/system.environment.exitcode.aspx
источник
Просто верните соответствующий код с основного.
источник
static void Main(string[] args);
Используйте ExitCode, если ваш main имеет подпись возврата void, в противном случае вам нужно «установить» его на возвращаемое вами значение.
Свойство Environment.ExitCode
источник
Как обновление ответа Скотта Мунро :
Main
имеет никакого эффекта.main
точки входа соблюдается.источник
Main()
не установило то,Process.ExitCode
что было видно вызывающим приложением.int Main
что все еще может использоваться в качестве альтернативы Environment.ExitCode. ссылкаОпция перечисления превосходна, но может быть улучшена путем умножения чисел как в:
В случае нескольких ошибок, добавление определенных номеров ошибок вместе даст вам уникальный номер, который будет представлять комбинацию обнаруженных ошибок.
Например, уровень ошибки 6 может состоять только из ошибок 4 и 2, 12 может состоять только из ошибок 4 и 8, 14 может состоять только из 2, 4 и 8 и т. Д.
источник
Мои 2 цента:
Вы можете найти коды системных ошибок здесь: https://msdn.microsoft.com/en-us/library/windows/desktop/ms681382(v=vs.85).aspx
Вы найдете типичные коды, такие как 2 для «файл не найден» или 5 для «доступ запрещен».
И когда вы наткнетесь на неизвестный код, вы можете использовать эту команду, чтобы выяснить, что это значит:
например
возвращается
источник
Используйте этот код
используйте 0 как int, если вы не хотите ничего возвращать.
источник