2009-07-08 7 views
17

Ho usato lo strumento xsd.exe per generare una classe basata sul mio schema xml. Ha creato una classe pubblica parziale con DebuggerStepThroughAttribute. Bene, ho creato un altro file di classe parziale per questa classe per scrivere il mio codice personalizzato e voglio essere in grado di passare a questo codice che ho scritto ma sembra che il debugger stia applicando l'attributo step-through alla classe parziale my bene. C'è un modo semplice per me di entrare nel mio codice senza rimuovere manualmente l'attributo ogni volta che re-generi la classe parziale?Impedisci a DebuggerStepThroughAttribute di applicare alla mia classe parziale non generata da xsd?

risposta

11
  1. È possibile fare in modo che il debugger ignori questo attributo in Strumenti-> Opzioni-> Debugger-> Generale. Deseleziona "Abilita solo il mio codice (solo gestito)".
  2. Si potrebbe anche usare semplicemente la classe parziale come wrapper per un'altra classe/metodi. I metodi nella classe parziale sarebbero solo stub che chiamano i metodi attuali nella nuova classe. Il debugger salterà il metodo decorato con l'attributo, ma ti permetterà comunque di scorrere la classe che avvolgono. Nell'esempio qui sotto ...

//

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

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

Speravo in qualche attributo che potessi inserire nella mia classe parziale che mi avrebbe consentito di intervenire ma suppongo che non sia un'opzione. Probabilmente rimuoverò manualmente l'attributo dalla classe generata ogni volta che ho bisogno di generarlo, che probabilmente non sarà troppo spesso. Grazie per aver risposto! – Lyndal

+0

Quando si disattiva 'Abilita solo il mio codice' si dovrebbe vedere immediatamente il punto di interruzione su un cerchio marrone scuro che indica che ora può essere eseguito il debug –

0

modo migliore è quello di rimuovere semplicemente le linee di attributo dal codice generato. Il modo più semplice in cui IMHO utilizza un alias nella finestra di comando.

esempio:

1) Aprire la finestra di comando (CTRL + A)

2) tipo: (versione VB)

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

3) ora si dispone di un alias per trovare & sostituire quelle linee sul documento corrente. Si può semplicemente digitare nella finestra di comando:

removenodebug 

e le linee degli attributi sono andati.

Nota: l'espressione regolare utilizzata in questo esempio è per codice VB, ma non dovrebbe essere troppo difficile da convertire per C#.

Problemi correlati