Minificación de scripts e integración continua con MSBuild

En un proyecto reciente en el que he estado trabajando en C # / ASP.NET, tengo algunos archivos JavaScript bastante complicados y algunas ingeniosas hojas de estilo. A medida que estos recursos de script crecen en tamaño,es recomendable minimizar los recursos y mantenga sus páginas web lo más livianas posible, por supuesto. Conozco a muchos desarrolladores que introducen manualmente sus recursos JavaScript en compresores después de la depuración y luego implementan sus aplicaciones.

Cuando se trata de control de fuente y compilaciones automatizadas en el satisfactorio mundo de la integración continua (graciasCruiseControl.NET); la compresión manual simplemente no servirá. La única forma de mantener el control de la fuente y ofrecer recursos comprimidos es mantener la fuente JS / CSS y sus hermanos minificados en una estructura de directorio separada. Luego registre solo un conjunto de recursos u otro en código subyacente. Sin embargo, si un desarrollador realiza un cambio en la fuente JS / CSS y luego no puede volver a compactarlo y verificar ambas versiones, entonces su línea de código ahora no está sincronizada. Por no mencionar poco elegante.

Estoy pensando que sería bueno escribir un ejecutable personalizado (si aún no existe) para el bloque de tareas CC.NET que buscaría y comprimiría todos los recursos de JavaScript y CSS en el directorio de destino después de la acción de compilación pero antes de la asp Publicar .net en el destino. De esta manera, los desarrolladores solo trabajarían en fuentes JS y CSS y los usuarios solo obtendrían los recursos minificados.

¿Existe una aplicación que ya realiza esta tarea y, de no ser así, qué tipo de recursos debería buscar instalar en el servidor de compilación para ejecutar CC.NET?

(Lospregunta más cercana Podría encontrar aquí que este requiere NAnt, que no es una opción en mi caso).

EDITAR: Dave Ward ahora tiene un gran artículo sobreCómo minimizar automáticamente en Visual Studio en su sitio

Respuestas a la pregunta(3)

Su respuesta a la pregunta