Tutorial: Implementar un proyecto de aplicación web con un paquete de implementación web (Parte 2 de 4)
Este es el segundo de una serie de tutoriales en los que se muestra cómo implementar un proyecto de aplicación web usando un paquete de implementación. Para obtener más información sobre la serie, vea Tutorial: Implementar un proyecto de aplicación web con un paquete de implementación web (Parte 1 de 4).
En este tutorial, cambiará la base de datos AdventureWorksLT e implementará los cambios. A continuación, cambiará una página web e implementará esos cambios, pero sin implementar los cambios de la base de datos. En este tutorial se muestran las tareas siguientes:
Volver a implementar una base de datos que ya se ha implementado.
Excluir de la implementación una base de datos que ya se ha implementado.
Crear un paquete para la configuración de compilación Debug.
Instalar un paquete en el equipo local usando el Administrador de IIS.
Requisitos previos
Para obtener una lista de requisitos previos, vea Tutorial: Implementar un proyecto de aplicación web con un paquete de implementación web (Parte 1 de 4).
Configurar la implementación para cambios en la base de datos
Si desea implementar un cambio de la base de datos (ya sea de la estructura o los datos) en una aplicación web que ya se ha implementado, y si no tiene que conservar datos introducidos en la base de datos implementada, puede volver a implementar la base de datos mediante scripts generados automáticamente. Sin embargo, de forma predeterminada, los scripts generados automáticamente no quitan objetos de base de datos antes de crearlos (o de volver a crearlos) en el equipo de destino. Por tanto, debe especificar que las instrucciones Drop deben estar incluidas para evitar los errores que se producirían cuando los scripts intentaran crear objetos de base de datos que ya existen.
En esta sección del tutorial, realizará un cambio en la estructura de la base de datos AdventureWorksLT. A continuación, volverá a implementar la aplicación web. Cambiará la configuración de implementación de la base de datos para que los scripts generados automáticamente para la base de datos AdventureWorksLT incluyan instrucciones Drop y para que no se ejecute ningún otro script de base de datos durante la implementación.
En el procedimiento siguiente, cambiará el nombre del campo Color a Appearance en la base de datos y en el archivo Default.aspx.
Para cambiar el nombre de un campo de la base de datos
En el Explorador de servidores, expanda la carpeta App_Data y haga doble clic en AdventureWorksLT2008_Data.mdf.
La base de datos se abrirá en la ventana Explorador de servidores.
En el Explorador de servidores, expanda la carpeta Tablas.
Haga clic con el botón secundario en la tabla Product (SalesLT) y, a continuación, haga clic en Abrir definición de tabla.
Cambie el nombre de la columna Color a Appearance, como se muestra en el ejemplo siguiente:
Guarde la tabla y cierre la ventana Definición de tabla.
Abra el archivo Default.aspx.
En el control GridView, busque el elemento BoundField para la columna Color, y cambie el valor de las propiedades DataField, SortExpression y HeaderText de Color a Appearance, como se muestra en el ejemplo siguiente:
<asp:BoundField DataField="Appearance" HeaderText="Appearance" SortExpression="Appearance" />
Guarde y cierre Default.aspx.
Presione CTRL-F5 para probar los cambios.
Se mostrará la página principal; el nombre de la columna Color se ha cambiado a Appearance, como se muestra en la ilustración siguiente:
En el procedimiento siguiente, configurará la implementación de forma que genere instrucciones Drop para la base de datos AdventureWorksLT. Debe modificar el archivo de proyecto para ello, porque el valor no está disponible en la interfaz de usuario de Visual Studio.
Para especificar qué instrucciones Drop se deben incluir
En el Explorador de soluciones, haga clic con el botón secundario en el proyecto y, a continuación, haga clic en Abrir carpeta en el Explorador de Windows.
Se abrirá una ventana Explorador de Windows con la carpeta de proyecto.
Abra AdventureWorks.csproj o AdventureWorks.vbproj usando un editor de texto como Bloc de notas.
Busque el elemento PropertyGroup correspondiente a la configuración de compilación Debug y la plataforma AnyCPU.
Este elemento contiene los valores que escribió en las pestañas Empaquetar/publicar web y Empaquetar/publicar SQL en el valor Propiedades del proyecto.
En el elemento PropertyGroup, busque el elemento ObjectGroup que tiene el nombre AWLTConnectionString-Deployment.
Este elemento contiene los valores de la pestaña Empaquetar/publicar SQL de la base de datos AdventureWorksLT.
En el elemento ObjectGroup, agregue un atributo ScriptDropsFirst="True" al elemento PreSource que está en el primer elemento Object.
En el ejemplo siguiente se muestra el elemento PropertyGroup que contiene el elemento PreSource modificado. (Algunos detalles del elemento de su archivo de proyecto diferirán ligeramente de este ejemplo.)
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> ... <PublishDatabaseSettings> ... <Objects> ... <ObjectGroup Name="AWLTConnectionString-Web.config" Order="2"> <Destination Path="..." /> <Object Type="dbFullSql"> <PreSource Path="..." ScriptSchema="True" ScriptData="True" CopyAllFullTextCatalogs="False" ScriptDropsFirst="True"/> <Source Path="..." Transacted="True" /> </Object> <Object Type="dbFullSql" Enabled="True"> <Source Path="...AdventureWorksGrant.sql" Transacted="True" /> </Object> </ObjectGroup> </Objects> </PublishDatabaseSettings> </PropertyGroup>
Guarde y cierre el archivo AdventureWorks.csproj o AdventureWorks.vbproj.
Si ve un cuadro de diálogo Modificación de archivo detectada, como se muestra en la ilustración siguiente, haga clic en el botón Volver a cargar.
En el procedimiento siguiente, especificará que los scripts de base de datos no se deben ejecutar. Esto incluye el script generado automáticamente para la base de datos ApplicationServices y el script AdventureWorksGrant.sql.
Para especificar que no se debe ejecutar ningún otro script durante la implementación
En la página Propiedades del proyecto, haga clic en la pestaña Empaquetar/publicar SQL.
En la lista Configuración, asegúrese de que esté seleccionado Activa (Depurar).
En la cuadrícula Entradas de la base de datos, asegúrese de que la fila ApplicationServices-Implementación esté seleccionada.
En la cuadrícula Scripts de base de datos, desactive la casilla Incluir para la fila que tiene [Esquema y datos generado automáticamente] en la columna Ruta de acceso del script, como se muestra en la ilustración siguiente:
En la cuadrícula Entradas de la base de datos, seleccione la fila AWLTConnectionString-Implementación.
En la cuadrícula Scripts de base de datos, desactive la casilla Incluir para la fila que tiene el script AdventureWorksGrant.sql.
Guarde y cierre la página Propiedades.
Implementar cambios de la base de datos
En el procedimiento siguiente, implementará el proyecto creando un paquete e importando a continuación el paquete en IIS mediante el Administrador de IIS.
Para crear un paquete e importarlo en IIS
En el menú Proyecto, haga clic en Compilar paquete de implementación.
Visual Studio compilará el proyecto y, a continuación, creará el paquete de implementación. Se crearán scripts que contienen instrucciones Drop para la base de datos AdventureWorksLT. No se creará ningún script para la base de datos ApplicationServices.
Copie la ruta de acceso del paquete de implementación al Portapapeles de Windows siguiendo estos pasos:
En el Explorador de soluciones, si no ve la carpeta obj, haga clic en el botón Mostrar todos los archivos.
Expanda sucesivamente las carpetas obj, Debug y Package.
Seleccione el archivo AdventureWorks.zip.
En la ventana Propiedades, copie el valor del campo Ruta de acceso completa.
En el Panel de control de Windows, haga clic en Herramientas administrativas y, a continuación, haga clic en Administrador de Internet Information Services (IIS).
En el panel Conexiones del Administrador de IIS, expanda el nodo de su equipo, expanda la carpeta Sitios y, a continuación, seleccione Sitio web predeterminado.
En el panel Acciones, haga clic en el hipervínculo Importar aplicación.
En el cuadro Ruta de acceso del paquete del cuadro de diálogo Seleccionar paquete, pegue la ruta de acceso del paquete de implementación.
Haga clic en Siguiente.
En el cuadro de diálogo Seleccionar el contenido del paquete, haga clic en Siguiente.
En el cuadro de diálogo Especificar información de paquete de aplicación, haga clic en Siguiente.
En el cuadro de diálogo Sobrescribir archivos existentes, haga clic en Siguiente.
Una vez finalizada la instalación del paquete, el cuadro de diálogo Progreso y resumen de la instalación indica que solo se actualizó una base de datos, como se muestra en la ilustración siguiente:
Pruebe la aplicación abriendo un explorador y yendo a la siguiente dirección URL:
https://localhost/AdventureWorks
Se mostrará la página Default.aspx. Es similar a cuando ejecutó el proyecto en Visual Studio. La tabla de productos muestra una columna Appearance en lugar de una columna Color. Esto muestra que el cambio de la base de datos AdventureWorksLT se implementó correctamente.
Implementar de nuevo sin cambios en la base de datos
Las estructuras de base de datos se suelen cambiar con menos frecuencia que otras partes de una aplicación web. En esta sección del tutorial, cambiará una página web e implementará de nuevo la aplicación web, pero no implementará cambios a la base de datos.
En el procedimiento siguiente, cambiará el encabezado de la primera columna de la tabla de productos de AdventureWorksLT en la página Default.aspx de Name a Product.
Para realizar un cambio en la aplicación
Abra el archivo Default.aspx.
Cambie la propiedad BoundField.HeaderText de la columna Name a Product, como se muestra en el ejemplo siguiente:
<asp:BoundField DataField="Name" HeaderText="Product" SortExpression="Name" />
Guarde y cierre el archivo.
En el procedimiento siguiente, va a cambiar la configuración de implementación de la base de datos para asegurarse de que Visual Studio no genera ningún script de base de datos.
Para deshabilitar la implementación de la base de datos
Haga clic con el botón secundario en el proyecto en el Explorador de soluciones y, a continuación, haga clic en Propiedades.
Seleccione la pestaña Empaquetar/publicar web.
Desactive la casilla Incluir todas las bases de datos configuradas en la pestaña Empaquetar/publicar SQL.
Guarde y cierre la página Propiedades.
En el procedimiento siguiente, va a volver a implementar la aplicación y probar los cambios.
Para volver a implementar y probar la aplicación
En el menú Proyecto, haga clic en Compilar paquete de implementación.
Copie la ruta de acceso del paquete de implementación al Portapapeles de Windows.
Ejecute el Administrador de Internet Information Services (IIS).
En el Administrador de IIS, seleccione Sitio web predeterminado.
En el panel Acciones, haga clic en el hipervínculo Importar aplicación.
En el cuadro Ruta de acceso del paquete del cuadro de diálogo Seleccionar paquete, pegue la ruta de acceso del paquete de implementación.
Haga clic en Siguiente.
En el cuadro de diálogo Seleccionar el contenido del paquete, haga clic en Siguiente.
En el cuadro de diálogo Especificar información de paquete de aplicación, haga clic en Siguiente.
En el cuadro de diálogo Sobrescribir archivos existentes, haga clic en Siguiente.
Esta vez, el cuadro de diálogo Progreso y resumen de la instalación muestra que no se actualizó ninguna base de datos y que solo se actualizó un archivo.
Pruebe la aplicación abriendo un explorador y yendo a la siguiente dirección URL:
https://localhost/AdventureWorks
La página Default.aspx tiene de nuevo la misma apariencia que cuando la ejecutó en Visual Studio. El encabezado Product de la primera columna de la tabla de productos muestra que el cambio a Default.aspx se implementó correctamente.
Pasos siguientes
En el primer tutorial de esta serie implementó un proyecto de aplicación web de sistema de archivos en una aplicación web de IIS para probarlo en el equipo de desarrollo. En este tutorial, cambió la estructura de una de las bases de datos, modificó páginas web e implementó los cambios.
El siguiente tutorial de la serie es Tutorial: Implementar un proyecto de aplicación web con un paquete de implementación web (Parte 3 de 4). En ese tutorial, creará un paquete de implementación que se puede usar para implementar en un entorno de ensayo y en un servidor de producción.