programing

에서 콘솔 응용 프로그램의 종료 코드를 지정하려면 어떻게 해야 합니까?NET?

iphone6s 2023. 5. 12. 21:43
반응형

에서 콘솔 응용 프로그램의 종료 코드를 지정하려면 어떻게 해야 합니까?NET?

에 사소한 콘솔 응용 프로그램이 있습니다.NET. 더 큰 애플리케이션의 테스트 부분일 뿐입니다.콘솔 응용 프로그램의 "종료 코드"를 지정하려고 합니다.이거 어떻게 하는 거지?

세 가지 옵션:

  • 에서 반품하실 수 있습니다.Main을 선언하면Main반환 방법int.
  • 전화하셔도 됩니다.
  • 속성을 사용하여 종료 코드를 설정할 수 있습니다.Environment.ExitCode = -1;이는 반환 코드를 설정하지 않거나 위의 다른 옵션 중 하나를 사용하는 경우에 사용됩니다.

응용 프로그램(콘솔, 서비스, 웹 응용 프로그램 등)에 따라 다른 방법을 사용할 수 있습니다.

반품에 대한 답변 외에도...제정신을 위한 탄원해당하는 경우 플래그를 사용하여 종료 코드를 열거형으로 정의하십시오.디버깅 및 유지보수가 훨씬 쉬워집니다(게다가 도움말 화면에서 종료 코드를 쉽게 출력할 수 있습니다. 이 중 하나가 있습니다.

enum ExitCode : int {
  Success = 0,
  InvalidLogin = 1,
  InvalidFilename = 2,
  UnknownError = 10
}

int Main(string[] args) {
   return (int)ExitCode.Success;
}

콘솔 응용 프로그램에서 종료 코드를 반환하는 데 사용할 수 있는 세 가지 방법이 있습니다.

  1. 수정합니다.Main당신의 응용 프로그램에서 메소드를 반환합니다.int대신에void(값을 반환하는 함수)Integer대신에SubVB.NET에서)를 선택한 다음 해당 메서드의 종료 코드를 반환합니다.
  2. 환경을 설정합니다.exitCode 속성을 exitCode로 보냅니다.방법 1이 우선한다는 것에 유의하세요 - 만약에Main메소드가 아닌 다른 모든 것을 반환합니다.void(a는Sub그러면 이 속성의 값이 무시됩니다.
  3. 종료 코드를 환경에 전달합니다.종료 방법.이렇게 하면 다른 두 가지 방법과는 달리 프로세스가 즉시 종료됩니다.

준수해야 하는 중요한 기준은 다음과 같습니다.0'성공'을 나타냅니다.

관련 항목에서는 열거형을 사용하여 응용 프로그램이 반환할 종료 코드를 정의하는 것을 고려합니다.FlagsAttribute를 사용하면 코드 조합을 반환할 수 있습니다.

또한 응용프로그램이 '콘솔 응용프로그램'으로 컴파일되었는지 확인합니다.

David가 제안한 방법을 사용할 경우 [Flags] Attribute도 살펴봐야 합니다.

이렇게 하면 열거형에 대해 비트 연산을 수행할 수 있습니다.

[Flags]
enum ExitCodes : int
{
  Success = 0,
  SignToolNotInPath = 1,
  AssemblyDirectoryBad = 2,
  PFXFilePathBad = 4,
  PasswordMissing = 8,
  SignFailed = 16,
  UnknownError = 32
}

그리고나서

(ExitCodes.SignFailed | ExitCodes.UnknownError)

16 + 32입니다.:)

System.Environment.ExitCode 

환경을 참조하십시오.코드 속성을 종료합니다.

int code = 2;
Environment.Exit( code );

메인에서 해당 코드를 반환하면 됩니다.

int Main(string[] args)
{
    return 0; // Or exit code of your choice
}

메인에 유효하지 않은 반환 서명이 있는 경우 종료 코드를 사용합니다.그렇지 않으면 반환하는 값으로 "설정"해야 합니다.

환경에서.종료 코드 속성:

기본 메서드가 void를 반환하는 경우 이 속성을 사용하여 호출 환경으로 반환될 종료 코드를 설정할 수 있습니다.기본값이 void를 반환하지 않으면 이 속성은 무시됩니다.이 속성의 초기 값은 0입니다.

열거 옵션이 우수합니다.그러나 다음과 같이 숫자를 곱하여 개선할 수 있습니다.

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로만 구성될 수 있습니다.

Scott Munro의 답변에 대한 업데이트로서:

  • C# 6.0 및 VB.NET 14.0(Visual Studio 2015), 환경.코드 또는 환경종료합니다.콘솔 응용 프로그램에서 0이 아닌 코드를 반환하려면 종료(exitCode)가 필요합니다.반환 유형 변경Main효과가 없습니다.
  • F# 4.0(Visual Studio 2015)에서 다음의 반환 값main진입점이 존중됩니다.

시스템 오류 코드는 시스템 오류 코드(0-499)에서 확인할 수 있습니다.

2는 "file not found(파일을 찾을 수 없음)", 5는 "access denied(액세스 거부)"와 같은 일반적인 코드를 찾을 수 있습니다.

알 수 없는 코드를 발견하면 이 명령을 사용하여 의미를 확인할 수 있습니다.

net helpmsg decimal_code

예를들면,

net helpmsg 1

돌아온다

Incorrect function

이 코드 사용

Environment.Exit(0);

아무것도 반환하지 않으려면 0을 int로 사용합니다.

저는 이렇게 하고 있습니다.

int exitCode = 0;
Environment.Exit(exitCode);

또는 다음과 같은 오류(개인 기본 설정)를 발생시킬 수 있습니다.

throw new ArgumentException("Code 0, Environment Exit");

나는 논쟁을 선택했습니다.예외입니다. 다른 항목을 입력할 수 있습니다.잘 될 겁니다.

다른 방법입니다.

public static class ApplicationExitCodes
{
    public static readonly int Failure = 1;
    public static readonly int Success = 0;
}

언급URL : https://stackoverflow.com/questions/155610/how-do-i-specify-the-exit-code-of-a-console-application-in-net

반응형