2012-07-31 7 views
3

저는 C#과 Visual Studio를 처음 사용하는데 바보 같은 질문 일지 모르지만 답변을 찾아야합니다. 내 질문에 디버그 모드를 빌드하는 경우 코드의 특정 줄 (내 경우 MessageBox.Show (...)) 컴파일됩니다 같은 방식으로 디버그 및 릴리스 빌드를 구분할 수 있습니다. 릴리스 모드에서? DEBUG은 디버그 버전에 정의되어Visual Studio를 사용하여 특정 라인을 빌드에서 제외하는 방법은 무엇입니까?

답변

4

랩 라인을 #if DEBUG 문에서 : 당신이 릴리스에서 다른 일을하려면

#if DEBUG 
    MessageBox.Show("Message"); 
#endif 

은 당신이 할 수 있습니다 :

#if DEBUG 
    MessageBox.Show("Message"); 
#else 
    // Write to log file 
#endif 

Source

0

예, 당신은 당신이 버전을 빌드 선택하면, 당신은 당신이 프로젝트에 정의 된 변수를 찾을 수

#if DEBUG 
    MessageBox.Show.... 
#endif 

사용할 수 있습니다. 당신은 또한

#if DEBUG 
    MessageBox.Show.... 
#else 
    // do something else here in release mode 
#endif 
+0

왜 downvote? 내 대답에 무슨 문제가 있는지 설명해주세요. – Marco

1

는 "#endif // 이는"다음에 "DEBUG의 #if"컴파일러 명령을 사용할 수 있습니다 사용하여 동작을 전환 할 수 있습니다 원하는 경우 은 그래서 당신의 코드는 디버그 모드에서 컴파일됩니다.

여기에서 자세한 내용을 찾을 : 코드의
http://msdn.microsoft.com/en-us/library/4y6tbswk.aspx

1

프로젝트 속성에 다른 조건부 컴파일 기호를 지정할 수 있습니다 (here; Visual Studio의 경우 MSDN documentation). 그런 다음 조건부 컴파일을 사용하면 특정 행을 포함/제외하는 것이 쉽습니다. 이처럼 :

#if DEBUG 
    MessageBox.Show(...); 
#end 
1

#if DEBUG 외에도 것을 확인하고 값이 잘못된 경우 메시지 상자를 보여 System.DiagnosticsDebug 클래스에 Assert 정적 인 방법을 사용할 수 있습니다. 예 :

Debug.Assert(IsValid); 

IsValid가 false 인 경우 디버그 빌드에 메시지가 표시됩니다.

관련 문제