asp.net mvc cshtml La vista asp.mvc ingresa#IF DEBUG en la configuración de lanzamiento




render action asp net core (3)

Tengo una vista ASP MVC donde tengo la siguiente declaración

#if DEBUG
  //section 1
  //do stuff
#else
  //section 2
  //do other stuff
#endif

Cuando en Visual Studio elijo la configuración de lanzamiento del menú desplegable para hacer la compilación, el código aún pasa por la sección 1.

En las propiedades de configuración de la solución, todos los subproyectos de la solución se configuran en la configuración de lanzamiento.

¿Qué no estoy llegando aquí?


Verifique la configuración de su proyecto para asegurarse de que DEBUG no esté definido.


Establezca <compilation debug="false"> en su archivo web.config .


Es importante comprender que hay dos compilaciones completamente separadas para su proyecto. El primero es el que haces en Visual Studio. El segundo es el que hace ASP.NET justo antes de que se sirva la página. El if DEBUG dentro de su vista se realiza en el segundo paso. La versión de lanzamiento que describe es el primer paso. Por lo tanto, la configuración de depuración / lanzamiento de su proyecto no tiene nada que ver con la configuración de depuración en Web.config / el compilador ASP.NET.

Además, sería completamente inadecuado para su compilación de Visual Studio cambiar la configuración de depuración en el Web.config. Estas son dos compilaciones separadas, y una no debe afectar a la otra.

Por otro lado, es probable que tengas una necesidad perfectamente razonable de hacer que tu vista se comporte de manera diferente cuando estés depurando dentro de Visual Studio, y puedes hacerlo. Solo tiene que mover la declaración "if" fuera de la vista hacia algo que esté compilado por Visual Studio, en lugar de ASP.NET. Lo hacemos con un ayudante de HTML. Por ejemplo:

        /// <summary>
        /// Returns the HTML to include the appropriate JavaScript files for 
        /// the Site.Master.aspx page, depending upon whether the assembly 
        /// was compiled in debug or release mode.
        /// </summary>
        /// <returns>HTML script tags as a multi-line string.</returns>
        public static string SiteMasterScripts(this UrlHelper helper)
        {
            var result = new StringBuilder();
#if DEBUG
            result.AppendFormat("<script src=\"{0}\" type=\"text/javascript\"></script>", helper.Content("~/Content/js/MicrosoftAjax.debug.js"));
#else
            result.AppendFormat("<script src=\"{0}\" type=\"text/javascript\"></script>", helper.Content("~/Content/js/MicrosoftAjax.js"));
#endif
        // etc. ...

Esto incluye la depuración de archivos JS cuando se ejecuta en la configuración de depuración en Visual Studio, pero minimiza JS de lo contrario.





debugging