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

StackOverflow https://stackoverflow.com/questions/155610

  •  03-07-2019
  •  | 
  •  

문제

.NET에 사소한 콘솔 응용 프로그램이 있습니다. 더 큰 응용 프로그램의 테스트 부분 일뿐입니다. 콘솔 응용 프로그램의 "종료 코드"를 지정하고 싶습니다. 어떻게해야합니까?

도움이 되었습니까?

해결책

3 옵션 :

  • 당신은 그것을 반환 할 수 있습니다 Main 당신이 당신의 선언한다면 Main 반환 방법 int.
  • 전화해도됩니다 Environment.Exit(code).
  • 속성을 사용하여 종료 코드를 설정할 수 있습니다. Environment.ExitCode = -1;. 다른 것이 없으면 반환 코드를 설정하거나 위의 다른 옵션 중 하나를 사용하는 경우 사용됩니다).

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

다른 팁

Return int 's를 다루는 답변 외에도 ... 정신을위한 탄원. 적절한 경우 깃발과 함께 출구 코드를 열거로 정의하십시오. 디버깅 및 유지 보수가 훨씬 쉽게 만들어집니다 (보너스로서 도움말 화면에서 종료 코드를 쉽게 인쇄 할 수 있습니다. 그 중 하나가 있습니까?).

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

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

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

  1. 수정하십시오 Main 응용 프로그램의 메소드가 반환되도록 int 대신에 void (반환하는 함수 Integer 대신에 Sub vb.net)에서 해당 방법에서 종료 코드를 반환하십시오.
  2. 설정 환경 .exitcode 출구 코드에 대한 속성. 메소드 1은 우선 순위 - 인 경우 Main 메소드는 다른 것을 반환합니다 void (a입니다 Sub vb.net) 에서이 속성의 값은 무시됩니다.
  3. 출구 코드를 환경 .exit 방법. 이것은 다른 두 가지 방법과 달리 프로세스를 즉시 종료합니다.

관찰해야 할 중요한 표준은 그 것입니다 0 '성공'을 나타냅니다.

관련 주제에서 열거를 사용하여 응용 프로그램이 반환 할 종료 코드를 정의하십시오. 그만큼 깃발 보호 코드 조합을 반환 할 수 있습니다.

또한 응용 프로그램이 '콘솔 응용 프로그램'으로 컴파일되어 있는지 확인하십시오.

David가 제안한 방법을 사용하려면 [Flags] 속성도 살펴 봐야합니다.

이를 통해 열거적 인 작업을 수행 할 수 있습니다.

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

그 다음에

(ExitCodes.SignFailed | ExitCodes.UnknownError)

16 + 32입니다. :)

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

예비 코드를 Main에서 반환하십시오.

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

메인에 무효 리턴 서명이있는 경우 exitcode를 사용하십시오. 그렇지 않으면 반환 값으로 "설정"해야합니다.

환경 .exitcode 속성

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

Scott Munro의 업데이트로 대답:

  • C# 6.0 및 vb.net 14.0 (vs 2015)에서 환경 .exitcode 또는 Environment.exit (exitcode) 콘솔 응용 프로그램에서 0이 아닌 코드를 반환해야합니다. 반환 유형 변경 Main 효과가 없습니다.
  • F# 4.0 (VS 2015)에서 main 진입 점이 존중됩니다.

열거 옵션은 우수하지만 다음과 같이 숫자를 곱하여 개선 할 수 있습니다.

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

내 2 센트 :

시스템 오류 코드를 여기에서 찾을 수 있습니다.https://msdn.microsoft.com/en-us/library/windows/desktop/ms681382(v=vs.85).aspx

"파일 찾기"에 대해 2와 같은 일반적인 코드 또는 "Access Denied"의 경우 5를 찾을 수 있습니다.

알 수없는 코드를 우연히 발견하면이 명령을 사용하여 그 의미를 찾을 수 있습니다.

net helpmsg decimal_code

예를 들어

NET HELPMSG 1

보고

잘못된 기능

이 코드를 사용하십시오

Environment.Exit(0);

아무것도 반환하지 않으려면 0을 int로 사용하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top