2009-07-08 14 views
17

Użyłem narzędzia xsd.exe do wygenerowania klasy opartej na moim schemacie xml. Stworzyła publiczną klasę częściową z DebuggerStepThroughAttribute. Cóż, stworzyłem inny plik klasy częściowej dla tej klasy, aby zapisać mój niestandardowy kod i chcę móc wkleić ten kod, który napisałem, ale wygląda na to, że debugger stosuje tymczasowy atrybut do częściowej klasy jakodobrze. Czy istnieje łatwy sposób, aby wkroczyć do mojego kodu bez ręcznego usuwania atrybutu za każdym razem, gdy ponownie generuję klasę częściową?Zapobieganie stosowaniu metody DebuggerStepThroughAttribute w mojej klasie częściowej generowanej przez inne niż xsd?

Odpowiedz

11
  1. Możesz sprawić, by debugger zignorował ten atrybut w menu Narzędzia-> Opcje-> Debugger-> Ogólne. Odznacz opcję "Włącz tylko mój kod (tylko zarządzane)".
  2. Można również użyć klasy częściowej jako opakowania dla innej klasy/metod. Metody w klasie cząstkowej byłyby po prostu kodami, które wywołują rzeczywiste metody w nowej klasie. Debugger pominie metodę ozdobioną atrybutem, ale nadal pozwoli ci przejść przez klasę, którą zawija. Przykład poniżej ...

//

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

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

Miałem nadzieję na jakąś cechę, którą mógłbym umieścić na MOJEJ częściowej klasie, która pozwoliłaby mi wejść w to, ale myślę, że to nie jest opcja. Prawdopodobnie ręcznie usuniemy atrybut z wygenerowanej klasy za każdym razem, gdy będę go potrzebował, co prawdopodobnie nie będzie zbyt częste. Dziękuję za odpowiedź! – Lyndal

+0

Po wyłączeniu opcji "Włącz tylko mój kod" powinieneś zobaczyć, że punkt przerwania natychmiast zmienia się w stałe, bordowe kółko, co oznacza, że ​​można go teraz debugować –

0

najlepszym sposobem jest po prostu usunąć linie atrybutów z wygenerowanego kodu. Najprostszy sposób, w jaki IMHO używa aliasu w oknie poleceń.

przykład:

1) Otwórz okno poleceń (CTRL + A)

2) typ: (wersja VB)

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

3) teraz masz alias znaleźć & zamień te linie na bieżącym dokumencie. można po prostu wpisać w oknie poleceń:

removenodebug 

a linie atrybutów nie ma.

Uwaga: Wyrażenie regularne użyte w tym przykładzie dotyczy kodu VB, ale nie powinno być zbyt trudne do konwertowania dla języka C#.