programing

VB에서 #IF DEBUG를 사용하는 방법.그물

yellowcard 2023. 5. 10. 20:46
반응형

VB에서 #IF DEBUG를 사용하는 방법.그물

내부에서 클래스 변수에 값을 할당할 수 있습니까?#IF DEBUG조건부로?

실행 중인 경우 기본 폼 로드 내부에서 일부 코드를 조건부로 실행하고 싶습니다.DEBUG모드. 저는 다음과 같은 것을 할 수 있다고 생각했습니다.

Public Class Form1
    public DEB as Integer

    #if DEBUG then
        DEB = 1
    #else
        DEB = 0
    #end if

    Private Sub Form1_Load(....)
        if DEB=1 Then
            <do something>
        else
            <do something else>
        end if
    ....

하지만 변수에 값을 할당할 수 없는 것 같습니다.범위 지정을 제대로 이해하지 못하고 있는 것이 분명합니다.나는 그것을 넣을 수 없는 것 같습니다.#if DEBUGLoad(로드) 하위 루틴 내부.이거 어떻게 하는 거지?

컴파일 상수를 직접 테스트하는 것이 어떻습니까?실제 변수를 테스트하여 얻는 것은 없습니다.

Public Class Form1

Private Sub Form1_Load(....)

#if DEBUG then
    <do something>
#else 
    <do something else>
#end if

End Sub

End Class

VB.NET Framework v4.5에서

디버거.첨부됨

Public DEB As Integer
If Debugger.IsAttached Then
    DEB = 1
Else
    DEB = 0
End If

당신의 문제를 이해할 수 없습니다.저는 이것을 하고 그것은 잘 작동합니다.컴파일 상수가 실행 중인 코드에서 직접 사용할 수 없다는 것은 조금 짜증 나지만 생각해보면 일리가 있습니다.

크리스찬에 대한 답변으로, 컴파일러 지침에 코드를 포함시키는 것에 반대하는 경우는 코드 변수를 사용하여 잠재적으로 중복이 적고 더 명확하고 설명적인 코드를 작성할 수 있으며 따라서 더 단순한 유지보수가 가능하다는 것입니다.

예를 들어, 표준 라이브러리 코드는 다음과 같습니다.

Public Module Common

    #if DEBUG then
        Public In_Debug As Boolean = True
    #else
        Public In_Debug As Boolean = False
    #end if
End Module

Public Class Form1

    Private Sub Form1_Load(....)

        If In_Debug Then SplashScreen.Hide()
        ...

배치In-Debug공용 모듈의 코드 변수는 프로젝트 전체에 걸쳐 상수로 취급할 수 있는 전역으로 효과적으로 만듭니다.

(예:디버그에서 스플래시 화면을 표시하지 않습니다. 대화 상자 등이 숨겨질 수 있기 때문입니다. 진행이 중단될 수 있습니다.)

TRACE 상수 또는 선언할 사용자 지정 컴파일러 상수에서도 동일한 작업을 수행할 수 있습니다.

그리고 GregH가 언급했듯이 프로젝트의 Debug 구성에서 DEBUG 상수가 실제로 선언되었는지 확인해야 합니다(실제로 "Debug"라고 불리는지 여부).릴리스에 선언할 필요는 없습니다. 이 정보가 없는 경우 "False"로 해석됩니다.

이게 제가 찾던 거예요!

If Debugger.IsAttached Then
    DEB = 1
Else
    DEB = 0
End If

@Karthikeyan P에게 감사합니다.

언급URL : https://stackoverflow.com/questions/3613249/how-to-use-if-debug-in-vb-net

반응형