visual ventana studio puedo por paso hacer ejecutar depurar debuggear debug como comandos c# conditional-breakpoint

c# - ventana - no puedo depurar en visual studio 2015



Error al utilizar un punto de interrupciĆ³n condicional en System.Type (4)

Esta es la función:

public void Init(System.Type Type) { this.Type = Type; BuildFieldAttributes(); BuildDataColumns(FieldAttributes); }

He establecido un punto de interrupción en la primera línea ( this.Type = Type ) y quiero interrumpir cuando Type.FullName == "Malt.Organisation" así que eso es lo que Type.FullName == "Malt.Organisation" como condición.

Sin embargo, el siguiente error se muestra cuando se golpea la línea:

La condición para un punto de interrupción no se pudo ejecutar. La condición era ''Type.FullName == "Malt.Organisation"''. El error devuelto fue "Inspeccionar el estado de un objeto en la depuración del tipo System.Type no se admite en este contexto".

¿Qué cosa (obvia) estoy haciendo mal?

PD. Una solución es agregar esto al código:

if (Type.FullName == "Malt.Organisation") System.Diagnostics.Debugger.Break();


En mi caso, estaba usando Visual Studio 2013, NUnit 2.6.4 y adjuntando un depurador a una sesión de prueba de unidad, y estaba recibiendo un mensaje similar:

La condición para un punto de interrupción no se pudo ejecutar. La condición era ''type.Name.Contains ("FooBar")''. El error devuelto fue "Inspeccionar el estado de un objeto en la depuración del tipo System.Type no se admite en este contexto". Haga clic en Aceptar para detenerse en este punto de interrupción.

Esto fue causado por una característica faltante en el nuevo motor de depuración que Microsoft había introducido, aparentemente. Siguiendo las instrucciones de este post de msdn , tengo cosas para trabajar. Las instrucciones se reducen a:

  1. Desde el menú " Herramientas " abra " Opciones "
  2. En el lado izquierdo, seleccione " Depuración ", " General "
  3. Desplácese hasta el final para marcar " Usar el modo de compatibilidad administrada "

Esto debería cambiar al motor de depuración heredado, que en mi caso permitía expresiones en Tipo en condiciones de punto de interrupción. Tenga en cuenta que necesita reiniciar su aplicación o sesión de depuración, obviamente.

Descargo de responsabilidad: no tengo idea de qué otros efectos al marcar esta opción tuvieron. Personalmente, lo apagué cuando terminé con la tarea que lo requería ...


Me encontré con esto, pero al probar IsInterface en una aplicación web. En lugar de habilitar funciones adicionales en el depurador, simplemente hice trampa.

bool blnIsInterface = tType.IsInterface; //Insert breakpoint here... if(blnIsInterface) { ... }

Así que en tu caso podrías hacer algo como

public void Init(System.Type Type) { bool blnBreak = Type.FullName == "Malt.Organisation"; //insert breakpoint of blnBreak == true this.Type = Type; BuildFieldAttributes(); BuildDataColumns(FieldAttributes); }

Es un poco engorroso, pero al menos no tendrá que preocuparse por los impactos en el rendimiento y si habilitar la depuración de código nativo no parece ser una opción en las aplicaciones web.


No estoy seguro acerca de la solución "Usar modo de compatibilidad administrada" que se describe aquí; no me ayudó, pero en mi caso, Project > Properties > Debug > Enable Native code debugging : debe estar desactivada.

Por qué - no hay pista actualmente.

Estaba utilizando .net 4.5, vs2015, aplicación de consola.


Type.FullName == "Malt.Organisation" que Type.FullName == "Malt.Organisation" hace que se rompa, ¿ha intentado this.Type.FullName == "Malt.Organisation" ?

Otra posibilidad, ¿el depurador cree que está intentando invocar un método estático con la variable denominada Tipo como su nombre de clase? ¿Cambiar el nombre de la variable Tipo a otra cosa lo arregla?