C# Language Definir y no definir símbolos


Ejemplo

Un símbolo de compilador es una palabra clave que se define en tiempo de compilación y se puede verificar para ejecutar condicionalmente secciones específicas de código.

Hay tres formas de definir un símbolo compilador. Se pueden definir vía código:

#define MYSYMBOL

Se pueden definir en Visual Studio, en Propiedades del proyecto> Generar> Símbolos de compilación condicional:

Símbolos del compilador VS

(Tenga en cuenta que DEBUG y TRACE tienen sus propias casillas de verificación y no es necesario que se especifiquen explícitamente).

O se pueden definir en tiempo de compilación utilizando el csc.exe /define:[name] en el compilador de C #, csc.exe .

También puede definir símbolos no definidos utilizando la directiva #undefine .

El ejemplo más frecuente de esto es el símbolo DEBUG , que Visual Studio define cuando una aplicación se compila en modo Debug (versus modo Release).

public void DoBusinessLogic()
{
    try
    {
        AuthenticateUser();
        LoadAccount();
        ProcessAccount();
        FinalizeTransaction();
    }
    catch (Exception ex)
    {
#if DEBUG
        System.Diagnostics.Trace.WriteLine("Unhandled exception!");
        System.Diagnostics.Trace.WriteLine(ex);
        throw;
#else
        LoggingFramework.LogError(ex);
        DisplayFriendlyErrorMessage();
#endif
    }
}

En el ejemplo anterior, cuando se produce un error en la lógica de negocios de la aplicación, si la aplicación se compila en modo de depuración (y se establece el símbolo DEBUG ), el error se escribirá en el registro de seguimiento y la excepción se volverá a realizar. -fruto de la depuración. Sin embargo, si la aplicación se compila en modo Release (y no se establece ningún símbolo DEBUG ), se utiliza un marco de registro para registrar el error de manera silenciosa, y se muestra un mensaje de error al usuario final.