Cómo usar bundles y minificados

ASP.NET 4.5 viene con una característica muy buena llamada bundles y minificados. Son dos técnicas que permiten unificar nuestros archivos en uno solo y reducir su peso renombrando variables y quitando comentarios y espacios en blanco innecesarios.

El primer paso es crear los bundles. Para esto debemos buscar el archivo App_Start\BundleConfig.cs. En la función RegisterBundles, debemos realizar la configuración:

La función Include permite especificar todos los archivos que incluye el bundle. Simplemente se ingresan todos separados por coma.

El wildcard {version} permite que podamos actualizar el número de versión y ASP.NET va a tomar siempre el más grande si necesidad de cambiar el código.

También se puede hacer con CSS:

Para mostrar los bundles en nuestras vistas:

Para activar el bundling y la minificación no hay que olvidarse de cambiar la siguiente propiedad en el web.config:

Si no cambiamos debug a false, nuestro HTML se generará con toda la lista de referencias a los archivos que incluyen nuestros bundles. Por ejemplo:

En cambio, con debug en false, se genera un único archivo (un bundle), minificado y además, se agrega un parámetro aleatorio para evitar que el browser cachee los archivos.

archivo minificado

Adicionalmente, si debug está en false, ASP.NET va a buscar la versión .min de los archivos, si es que ya existe.

Para mayor información, recomiendo este artículo: https://docs.microsoft.com/en-us/aspnet/mvc/overview/performance/bundling-and-minification

Cómo usar la constante de compilador DEBUG

Todo proyecto de Visual Studio se crea con dos configuraciones predeterminadas: Debug y Release.

Es común que si queremos que cierto código sea solo válido para la configuración Debug, alguna vez hayamos utilizado directivas de compilador de la siguiente forma:

Normalmente, el código entre #if DEBUG y #endif solo va a salir si estamos en la configuración Debug. Y digo “normalmente” porque no es algo que dependa directamente de la configuración Debug, sino del símbolo DEBUG dado de alta en las propiedades del proyecto:

debug constant

 

Aquí podemos ver que DEBUG es una constante que se define en la sección Build de las propiedades del proyecto (al igual que TRACE). Normalmente la constante DEBUG está definida en la configuración Debug pero no está definida en Release.

Como se dan cuenta, no se podría hacer algo como:

Simplemente, la constante RELEASE no existe. Aunque podrían dar de alta el símbolo RELEASE en el campo Conditional compilation symbols y así sí obtener el resultado esperado.

Otra opción a considerar sería usar #if !DEBUG.

Por último, tengan en cuenta que estas constantes y símbolos cambian con la configuración. Entonces, si tienen una configuración Release, los símbolos que den de alta allí no estarán en la configuración Debug y viceversa.