2009-07-08 9 views
17

Utilicé la herramienta xsd.exe para generar una clase basada en mi esquema xml. Creó una clase parcial pública con DebuggerStepThroughAttribute. Bien, creé otro archivo de clase parcial para esta clase para escribir mi código personalizado y quiero poder entrar en este código que he escrito, pero parece que el depurador está aplicando el atributo de paso a paso a mi clase parcial como bien. ¿Hay alguna manera fácil de ingresar a mi código sin eliminar manualmente el atributo cada vez que vuelvo a generar la clase parcial?Evitar que DebuggerStepThroughAttribute se aplique a mi clase parcial no generada xsd?

Respuesta

11
  1. Puede hacer que el depurador ignore este atributo en Herramientas-> Opciones-> Depurador-> General. Desmarque "Habilitar solo mi código (solo administrado)".
  2. También podría usar la clase parcial como contenedor para otra clase/métodos. Los métodos en la clase parcial solo serían stubs que llaman a los métodos reales en la nueva clase. El depurador omitirá el método decorado con el atributo pero aún le permitirá pasar por la clase que envuelve. Ejemplo a continuación ...

//

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

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

Esperaba algún atributo que pudiera poner en MI clase parcial que me permitiría entrar en él, pero supongo que no es una opción. Probablemente solo eliminaré manualmente el atributo de la clase generada cada vez que necesite generarlo, que probablemente no será demasiado frecuente. ¡Gracias por responder! – Lyndal

+0

Cuando desactivas la opción "Habilitar solo mi código", deberías ver que el punto de interrupción cambia inmediatamente a un círculo granate sólido que indica que ahora se puede depurar –

0

mejor forma de hacerlo es simplemente eliminar las líneas de atributos del código generado. La manera más fácil en mi humilde opinión es utilizar un alias en la ventana de comandos.

ejemplo:

1) Abra la ventana de comandos (CTRL + A)

2) tipo: (versión VB)

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

3) Ahora usted tiene un alias para encontrar & reemplace esas líneas en el documento actual. simplemente puede escribir en la ventana de comandos:

removenodebug 

y las líneas de atributos se han ido.

Nota: La expresión regular utilizada en este ejemplo es para el código VB, pero no debería ser demasiado difícil de convertir para C#.

Cuestiones relacionadas