Habilite la agrupación y la minificación en modo de depuración en ASP.NET MVC 4

112

No puedo creer que no pueda encontrar otras preguntas sobre esto, pero: ¿cómo se habilita la agrupación en modo de depuración? Sé cómo está habilitado para el modo de lanzamiento, pero en el modo de depuración no puedo encontrar una manera de habilitar la agrupación.

¿Es esto posible o me falta algo?

MLowijs
fuente

Respuestas:

214

Puede habilitar esto agregando

BundleTable.EnableOptimizations = true;

en su método RegisterBundles (clase BundleConfig en la carpeta App_Start).

consulte http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification para obtener más información

También puede cambiar su web.config:

<system.web>
    <compilation debug="false" />
</system.web>

Pero esto deshabilitaría el modo de depuración por completo, por lo que recomendaría la primera opción.

Finalmente, para obtener lo mejor de ambos mundos, use la directiva del compilador #if así:

#if DEBUG
            BundleTable.EnableOptimizations = false;
#else
            BundleTable.EnableOptimizations = true;
#endif
Bart Beyers
fuente
4
Llevaría esto un paso más allá y agregaría una sección de configuración personalizada a su web.config (o como mínimo, una entrada de AppSetting). De esa manera, puede habilitar / deshabilitar optimizaciones selectivamente sin tener que hacer una reconstrucción.
Joe the Coder
1
o declaraciones de uso #if DEBUGy #if !DEBUGprecompilador
Liam
También tenga en cuenta que esto anula la debug="true"configuración, por lo que las optimizaciones siempre están habilitadas o deshabilitadas si codifica este valor
Liam
1
O use MVC "detallado" comoif (HttpContext.Current.IsDebuggingEnabled) { BundleTable.EnableOptimizations = false; } else { BundleTable.EnableOptimizations = true; }
Tiramonium
si le gusta la opción de configuración web, también puede configurar varias configuraciones web por configuración para que la configuración web de depuración sea verdadera y la versión sea falsa docs.microsoft.com/en-us/aspnet/web-forms/overview/deployment/…
Matthew Ellison
11

agregar BundleTable.EnableOptimizations = true;en el Application_Start()método de Global.asaxarchivo

Cris
fuente
-2

En Global.asax agregue BundleConfig.RegisterBundles(BundleTable.Bundles);

 protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles); // add this
        }
Eyal
fuente
-5

El sitio oficial de MS indica que durante la depuración no es posible habilitarlo. Creo que la razón es que es más fácil de depurar mientras está deshabilitado. Si desea probar el impacto en su aplicación, debe configurarlo <compilation debug="true" />en Web.config

@Hebe: Para citar la página de MS

Es fácil depurar su JavaScript en un entorno de desarrollo (donde el elemento de compilación en el archivo Web.config se establece en debug = "true") porque los archivos JavaScript no están empaquetados o minificados.

Ennosuke
fuente
En mi caso, simplemente quería depurar el código C # del backend y, debido a la forma en que está configurada nuestra aplicación, necesitamos que la agrupación funcione para que todas las hojas de estilo y los scripts se carguen correctamente.
MLowijs
3
@Ennosuke: si bien puede ser más fácil de depurar, a veces hay errores de Javascript causados ​​por el proceso de minificación que requieren que pueda ejecutar los scripts minificados localmente.
Joe the Coder