2009-07-08 2 views
17

xsd.exe 도구를 사용하여 내 xml 스키마를 기반으로 클래스를 생성했습니다. DebuggerStepThroughAttribute를 사용하여 공용 부분 클래스를 만들었습니다. 글쎄,이 클래스에 대한 다른 부분 클래스 파일을 만들어 내 사용자 지정 코드를 작성하고 내가 작성한이 코드를 단계적으로 수행 할 수 있지만 디버거가 부분 클래스로 단계별 특성을 적용하는 것처럼 보입니다. 잘. 부분 클래스를 다시 생성 할 때마다 속성을 수동으로 제거하지 않고도 코드를 단계적으로 수행 할 수있는 쉬운 방법이 있습니까?DebuggerStepThroughAttribute가 xsd가 생성하지 않은 부분 클래스에 적용되지 않도록 하시겠습니까?

답변

11
  1. 디버거가 도구 -> 옵션 -> 디버거 -> 일반에서이 특성을 무시하도록 할 수 있습니다. "내 코드 만 사용 (관리 전용)"의 선택을 해제하십시오.
  2. 다른 클래스/메소드의 래퍼로 부분 클래스를 사용할 수도 있습니다. 부분 클래스의 메소드는 새로운 클래스의 실제 메소드를 호출하는 스텁 일뿐입니다. 디버거는 속성으로 장식 된 메소드를 건너 뛰지 만 랩핑하는 클래스를 단계별로 실행할 수 있습니다. 예 아래 ...

//

[DebuggerStepThrough] 
static void DebuggerStepThroughInPartialClass() 
{ 
    WrappedClass.NonDebuggerStepThrough(); 
} 

class WrappedClass{ 
    static void NonDebuggerStepThroughInNewClass() 
    { 
     int bar = 0; 
     bar++; 
    } 
} 
+0

나는 그것이 내가 들어갈 수있게 해주는 MY 부분 수업을 할 수있는 몇 가지 특성이 있기를 바랐다. 그러나 나는 그것이 선택이 아니라고 생각한다. 아마도 생성 할 때마다 생성 된 클래스에서 속성을 수동으로 제거 할 것입니다. 아마도 너무 자주 생성되지는 않을 것입니다. 응답 해 주셔서 감사합니다. – Lyndal

+0

'내 코드 만 사용'을 비활성화하면 중단 점이 즉시 디버깅 될 수 있음을 나타내는 단색의 밤색 원으로 바뀝니다. –

0

가장 좋은 방법은 간단하게 생성 된 코드에서 속성 라인을 제거하는 것입니다. IMHO가 명령 창에서 별칭을 사용하는 가장 쉬운 방법입니다.

예 :

1) 명령 창 (Ctrl + A)

2) 입력 엽니 다 (VB 버전)

alias removenodebug Edit.Replace "(?([^\r\n])\s)*System.Diagnostics.DebuggerStepThroughAttribute\(\),\s*_\r\n(?([^\r\n])\s)*" "" /d /regex /all 

3) 이제 &을 찾기 위해 별칭을 가지고 현재 문서의 해당 줄을 바꿉니다. 당신은 단순히 명령 창에 입력 할 수 있습니다

removenodebug 

그리고 속성 라인이 사라 졌어요.

참고 :이 예제에 사용 된 정규식은 VB 코드 용이지만 C# 용으로 변환하기가 너무 어렵지 않아야합니다.

관련 문제