c# - una - punto de interrupcion visual studio 2012
Necesita código.NET para ejecutar solo cuando está en configuración de depuración (8)
Además de las directivas #if #endif, también puede usar atributos condicionales. Si marca un método con el atributo
[Conditional("Debug")]
Solo se compilará y ejecutará cuando su aplicación esté integrada en modo de depuración. Como se señaló en el comentario a continuación, estos solo funcionan cuando el método tiene un tipo de devolución de nulo.
Tengo un código que accede a una API en la web. Uno de los parámetros de la API me permite hacerles saber que estoy probando.
Me gustaría establecer solo este parámetro en mi código cuando estoy probando. Actualmente, solo comento el código cuando hago una compilación de lanzamiento.
¿Hay una manera automática de hacer esto basada en la configuración de compilación?
Aquí hay otra publicación con un resultado similar: http://www.bigresource.com/Tracker/Track-vb-lwDKSoETwZ/
Se puede ver una mejor explicación en: http://msdn.microsoft.com/en-us/library/4y6tbswk.aspx
// preprocessor_if.cs
#define DEBUG
#define MYTEST
using System;
public class MyClass
{
static void Main()
{
#if (DEBUG && !MYTEST)
Console.WriteLine("DEBUG is defined");
#elif (!DEBUG && MYTEST)
Console.WriteLine("MYTEST is defined");
#elif (DEBUG && MYTEST)
Console.WriteLine("DEBUG and MYTEST are defined");
#else
Console.WriteLine("DEBUG and MYTEST are not defined");
#endif
}
}
El siguiente es seguro de usar:
var isDebug = false;
#if DEBUG
isDebug = System.Diagnostics.Debugger.IsAttached;
#endif
if (isDebug) {
// Do something
}
Esto funciona en asp.net:
if (System.Web.HttpContext.Current.IsDebuggingEnabled)
//send email to developer;
else
//send email to customer;
de Rick Strahl @ Detecting-ASPNET-Debug-mode
Tuve el mismo problema y la solución que utilicé fue:
if (System.Diagnostics.Debugger.IsAttached)
{
// Code here
}
Esto significa que técnicamente en la producción puede adjuntar un depurador y obtener esa pieza de código para ejecutar.
sí, envuelva el código en
#if DEBUG
// do debug only stuff
#else
// do non DEBUG stuff
#endif
Google para "símbolos de compilación de C #"
Visual Studio define automáticamente DEBUG
cuando está en la configuración de depuración. Puede definir cualquier símbolo que desee (consulte las propiedades de su proyecto, la pestaña de compilación). Tenga en cuenta que abusar de las directivas de preprocesador es una mala idea, puede llevar a un código que es muy difícil de leer / mantener.
1: puede usar el atributo Conditional
:
[Conditional("DEBUG")]
static void Method() { }
2: #if
directiva del preprocesador :
#if DEBUG
static int testCounter = 0;
#endif
3: O método Debug.Write
/ Debug.WriteLine
:
Debug.Write("Something to write in Output window.");
Tenga cuidado con el #if
directiva #if
ya que puede producir situaciones no deseadas en la versión Release. Por ejemplo, ver:
string sth = null;
#if DEBUG
sth = "oh, hi!";
#endif
Console.WriteLine(sth);
En este caso, la compilación que no es de depuración imprimirá un mensaje en blanco.
Lee mas:
- Eric Lippert. ¿Cuál es la diferencia entre la compilación condicional y el atributo condicional?
- Referencia del programador C #: Tutorial de métodos condicionales
- Bill Wagner. Effective C #: 50 Formas específicas para mejorar su C # (libro), capítulo: Use Atributos condicionales en lugar de #if
- John Robbins. Afirmaciones y rastreo en .NET
- Sam Allen. Dot Not Perls
También hay una herramienta, DebugView , que permite capturar información de depuración de aplicaciones externas.
public int Method ()
{
#if DEBUG
// do something
#endif
}