У меня тривиальное консольное приложение в .NET. Это просто тестовая часть большего приложения. Я хотел бы указать "код выхода" моего консольного приложения. Как это сделать?
Как указать код выхода консольного приложения в .NET?
Ответ 1
Вы можете вернуть его из Main
, если вы объявите метод Main
для возврата int
или вызовите Environment.Exit(code)
.
Ответ 2
В дополнение к ответам, охватывающим возвращение int... просьба о здравомыслии. Пожалуйста, определите коды выхода в перечислении, с флагами, если это необходимо. Это облегчает отладку и обслуживание (и в качестве бонуса вы можете легко распечатать коды выхода на экране справки - у вас есть один из них, верно?).
enum ExitCode : int {
Success = 0,
InvalidLogin = 1,
InvalidFilename = 2,
UnknownError = 10
}
int Main(string[] args) {
return (int)ExitCode.Success;
}
Ответ 3
Если вы собираетесь использовать метод, предложенный Дэвидом, вы также должны взглянуть на атрибут [Флаги].
Это позволяет выполнять бит мудрые операции с перечислениями.
[Flags]
enum ExitCodes : int
{
Success = 0,
SignToolNotInPath = 1,
AssemblyDirectoryBad = 2,
PFXFilePathBad = 4,
PasswordMissing = 8,
SignFailed = 16,
UnknownError = 32
}
Тогда
(ExitCodes.SignFailed | ExitCodes.UnknownError)
будет 16 + 32.:)
Ответ 4
Существует три метода, которые можно использовать для возврата кода выхода из консольного приложения.
- Измените метод
Main
в своем приложении, чтобы он возвращалint
вместоvoid
(функция, которая возвращаетInteger
вместоSub
в VB.Net), а затем возвращает код выхода из этого метода. - Установите для свойства Environment.ExitCode код выхода. Обратите внимание, что метод 1. имеет приоритет - если метод
Main
возвращает ничего, кромеvoid
(этоSub
в VB.Net), то значение этого свойства будет проигнорировано. - Передайте код выхода методу Environment.Exit. Это немедленно прекратит процесс, а не два других метода.
Важным стандартом, который следует соблюдать, является то, что 0
представляет "Успех".
В соответствующем разделе рассмотрите возможность использования перечисления для определения кодов выхода, возвращаемых вашим приложением. FlagsAttribute позволит вам вернуть комбинацию кодов.
Кроме того, убедитесь, что ваше приложение скомпилировано как "консольное приложение".
Ответ 5
System.Environment.ExitCode
http://msdn.microsoft.com/en-us/library/system.environment.exitcode.aspx
Ответ 6
int code = 2;
Environment.Exit( code );
Ответ 7
Используйте ExitCode, если у вашей главной есть обратная подпись void, иначе вам нужно "установить" ее по возвращаемому вами значению.
Если метод Main возвращает void, вы можете использовать это свойство, чтобы установить код выхода, который будет возвращен вызывающей среде. Если Main не возвращает void, это свойство игнорируется. Начальное значение этого свойства равно нулю.
Ответ 8
Просто верните соответствующий код из основного.
int main(string[] args)
{
return 0; //or exit code of your choice
}
Ответ 9
Опция перечисления превосходна, однако ее можно улучшить, умножив числа, как в:
enum ExitCodes : int
{
Success = 0,
SignToolNotInPath = 1,
AssemblyDirectoryBad = 2,
PFXFilePathBad = 4,
PasswordMissing = 8,
SignFailed = 16,
UnknownError = 32
}
В случае нескольких ошибок добавление конкретных номеров ошибок вместе даст вам уникальный номер, который будет представлять собой комбинацию обнаруженных ошибок.
Например, уровень ошибок 6 может состоять только из ошибок 4 и 2, 12 может состоять только из ошибок 4 и 8, 14 может состоять только из 2, 4 и 8 и т.д.
Ответ 10
Как обновление для Scott Munro answer:
- В С# 6.0 и VB.NET 14.0 (VS 2015), Environment.ExitCode или Environment.Exit(exitCode) требуется для возврата ненулевого кода из консольного приложения. Изменение типа возврата
Main
не влияет. - В F # 4.0 (VS 2015) учитывается возвращаемое значение точки входа
Main
.
Ответ 11
Мои 2 цента:
Здесь вы можете найти коды системных ошибок: https://msdn.microsoft.com/en-us/library/windows/desktop/ms681382(v=vs.85).aspx
Вы найдете типичные коды, например, 2 для "файл не найден" или 5 для "отказа в доступе".
И когда вы натыкаетесь на неизвестный код, вы можете использовать эту команду, чтобы узнать, что это значит:
net helpmsg decimal_code
например.
net helpmsg 1
возвращает
Неверная функция