#if C #에서 디버그하지 않습니까?


127

VB 코드에 줄이 있습니다.

#if Not Debug

변환해야하지만 C #에서 볼 수 없습니까?

이와 동등한 것이 있습니까, 아니면 해결 방법이 있습니까?

답변:


239

다음을 사용해야합니다.

#if !DEBUG
    // Your code here
#endif

또는 기호가 실제로 Debug

#if !Debug
    // Your code here
#endif

로부터 문서 , 효과적으로 처리 할 수 DEBUG부울. 따라서 다음과 같은 복잡한 테스트를 수행 할 수 있습니다.

#if !DEBUG || (DEBUG && SOMETHING)

15

여기서 무슨 일이 벌어지고 있는지 잘 알고 계시고 #if, 전처리 표현식이고 DEBUG조건부 컴파일 기호입니다. 더 자세한 설명 은 MSDN 문서 입니다.

기본적으로 디버그 구성에서 Visual Studio는 프로젝트의 빌드 속성 아래에서 DEBUG 상수 정의 옵션을 확인합니다 . 이것은 C #과 VB.NET 모두에 적용됩니다. 미친 짓을하고 싶다면 새 빌드 구성을 정의하고 자신 만의 조건부 컴파일 기호를 정의 할 수 있습니다. 이것을 볼 때 일반적인 예는 다음과 같습니다.

#if DEBUG
    //Write to the console
#else
    //write to a file
#endif

10

다른 사람을 돕는 경우를 대비하여 여기에 내 대답이 있습니다.

이것은 제대로 작동하지 않습니다.

#if !DEBUG
     // My stuff here
#endif

그러나 이것은 작동했습니다.

#if (DEBUG == false)
     // My stuff here
#endif

3
이 게시 된 날에 옳았지만, VS 2015 이상에서 DEBUG 예상대로 작업을 수행했을 수 있습니다!
올레 알버스

5

나는 같은 것이 작동 할 것이라고 생각한다

 #if (DEBUG)
//Something
#else
//Something
#endif

5
이 조건문에는 괄호 만 표시 할 필요가 없습니다 #if. 그것은 쓸 수 있습니다#if DEBUG
atconway

0
     bool isDebugMode = false;
#if DEBUG
     isDebugMode = true;
#endif
    if (isDebugMode == false)
    {
       enter code here
    }
    else
    {
       enter code here
    }

5
이것은 컴파일 타임에 수행 할 수있는 작업을 처리하기 위해 런타임 논리를 사용하기 때문에 잘못된 대답입니다.
antiduh

디자인 타임 T4 템플릿 등은 때때로 이런 종류의 것이 필요합니다.
StingyJack
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.