Visual Studio 2008 Web Deployment Project

Una de las caracterí­sticas de los proyectos de tipo “Sitio Web” de Visual Studio 2008 es que permite la pre-compilación de la web mediante una serie de caracterí­sticas más avanzadas de las que provee un proyecto web.
Por ejemplo, permite hacer cosas como generar una dll por cada una de las carpetas de la aplicación o incluso generar una dll independiente por cada página y control de usuario. Dependiendo un poco de las necesidades que tengáis para vuestros despliegues os puede resultar interesante utilizar una de las combinaciones que la pre-compilación ofrece. Teniendo en cuenta que además lograréis algunas caracterí­sticas avanzadas en el despliegue como son:
1) Mejor respuesta ante las peticiones web. No tiene mucho misterio, si habéis precompilado antes, cuando el IIS reciba la petición no necesitará compilar la página solicitada para mostrarla al usuario, por lo que los tiempos de respuesta serán mejores.
2) Nivel de seguridad. Precompilando estáis ocultando el contenido de vuestros archivos Code-Behind, por lo que nadie podrí­a conocer cómo está funcionando vuestra aplicación por dentro y/o modificar el funcionamiento de la misma.
3) Mayor flexibilidad en el despliegue. Con las diferentes combinaciones de publicación que permiten o generar dll por carpeta o por página y control, podéis lanzar actualizaciones de vuestros sitios web sin necesidad de desplegarlos enteros nuevamente, si no sólo las dll correspondientes a las páginas o controles que habéis modificado (esto les gusta mucho normalemente a los departamentos de sistemas encargados de realizar los despliegues).
Además, otra capacidad muy interesante se nos ofrece con la pre-compilacion, que es el no permitir que el sitio sea actualizable (allow this precompiled site to be updatable). Si marcais esta opción no se va a dejar modificar el código de presentación asociado a aspx y ascx. Es más, veréis incluso que los archivos ascx no se han generado, y que los aspx sí­ que están pero si los abrí­s íºnicamente veréis que guardan en su interior una referencia a la dll que los representa. Esta solución es fantástica si lo que queréis es evitar a toda costa cualquier modificación también en la capa de presentación.
Pero después de todo esto, algo se nos queda en el tintero, y es la posibilidad de poder asociar el resultado de la precompilación directamente a un proyecto de tipo Web Setup. Para ello disponemos de la herramienta Web Deployment Project (plugin para Visual Studio), que nos aportará las facilidades que ya hemos tratado más esta íºltima. Es tan sencillo como lanzar el build del sitio web, a continuación lanzar el build del Web Deployment Project asociado al sitio web, relacionar el output del proyecto de deployment al proyecto de web setup, compilar el setup, y óle, ya tenemos un msi con el contenido pre-compilado de nuestra web siguiendo uno de los métodos estándar que hayamos elegido.
Os dejo un pequeño manual bastante claro de uso para la versión de Web Deployment Project para Visual Studio 2005. El íºnico problema es que aquí­ no se explican nuevas capacidades de la versión 2008 como la de lanzar el deploy directamente sobre un site de IIS, pero de todas maneras dejo el link al manual porque a pesar de todo se describe muy claramente los pasos a seguir.
Link a manual Web Deployment Project para Visual Studio 2005
Descargar Web Deployment Project para Visual Studio 2008

2 thoughts on “Visual Studio 2008 Web Deployment Project”

  1. Hola Miguel:
    Muy bueno el artí­culo.
    Una consulta, probé y me genera en Debug y en Release el directorio virtual, con los ASPX que no tienen markup, y las correspondientes DLLs.
    Ahora, en los directorios virtuales que crea incluye el archivo .SLN, .csproj, .csproj.vspscc, y copia ademas los directorios bin y obj del proyecto VS2008 original. ¿Hay forma de que no incluya lo que no se debe publicar? ¿O hay que apuntarlo a una publicación de la solución original para que ande bien?
    Otra pregunta, ¿como se puede hacer un instalador .MSI para lo que generó? ¿Hay que hacerlo por fuera, o hay forma de que lo genere este addin?
    Saludos y gracias
    Iván

  2. Hola Iván,
    Empezando por el final, para generar un .msi tendrás que utilizar la plantilla especí­fica de visual studio de “Web Setup Project”. El chiste es que tendrás que enlazar el output del proyecto “Web Deployment” al “Web Setup” y listo (tal como indica este mismo artí­culo).
    Sobre el que te esté incluyendo los ficheros .SLN y demás… no me cuadra. ¿Podrí­as darme un poco más de información de qué opciones estás seleccionando de pre-compilación?
    Saludos.
    Miguel.

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.