ASP.NET implementación web mediante Visual Studio: implementación de la línea de comandos

por Tom Dykstra

Descargar el proyecto de inicio

Esta serie de tutoriales muestra cómo implementar (publicar) una aplicación web ASP.NET en Azure App Service Web Apps o en un proveedor de hospedaje de terceros mediante Visual Studio 2012 o Visual Studio 2010. Para obtener información sobre la serie de tutoriales, consulte el primer tutorial de la serie.

Información general

En este tutorial se muestra cómo invocar la canalización de publicación web de Visual Studio desde la línea de comandos. Esto es útil para escenarios en los que desea automatizar el proceso de implementación en lugar de hacerlo manualmente en Visual Studio, normalmente mediante un sistema de control de versiones de código fuente.

Realizar un cambio para implementar

Actualmente, la página Acerca de muestra el código de plantilla.

About page with template code

Lo reemplazará por código que muestra un resumen de la inscripción de alumnos.

Abra la página About.aspx, elimine todo el marcado dentro del elemento MainContentContent e inserte el marcado siguiente en su lugar:

<h2>Student Body Statistics</h2>
    <asp:ObjectDataSource ID="StudentStatisticsObjectDataSource" runat="server" TypeName="ContosoUniversity.BLL.SchoolBL"
        SelectMethod="GetStudentStatistics" DataObjectTypeName="ContosoUniversity.DAL.EnrollmentDateGroup">
    </asp:ObjectDataSource>
    <asp:GridView ID="StudentStatisticsGridView" runat="server" AutoGenerateColumns="False"
        DataSourceID="StudentStatisticsObjectDataSource">
        <Columns>
            <asp:BoundField DataField="EnrollmentDate" DataFormatString="{0:d}" HeaderText="Date of Enrollment"
                ReadOnly="True" SortExpression="EnrollmentDate" />
            <asp:BoundField DataField="StudentCount" HeaderText="Students" ReadOnly="True"
                SortExpression="StudentCount" />
        </Columns>
    </asp:GridView>

Ejecute el proyecto y seleccione la página Acerca de.

About page

Implementación en prueba mediante la línea de comandos

No implementará otro cambio en la base de datos, por lo que deshabilitará la implementación de la base de datos dbDacFx para la base de datos aspnet-ContosoUniversity. Abra el asistente para publicar web y, en cada uno de los tres perfiles de publicación, desactive la casilla Actualizar base de datos de en la pestaña Configuración.

En la página Inicio de Windows 8, busque Símbolo del sistema para desarrolladores para VS2012.

Haga clic con el botón derecho en el icono de Símbolo del sistema para desarrolladores de VS2012 y haga clic en Ejecutar como administrador.

Escriba el siguiente comando en el símbolo del sistema y reemplace la ruta de acceso al archivo de solución por la ruta de acceso al archivo de solución:

msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true /p:PublishProfile=Test

MSBuild compila la solución e la implementa en el entorno de prueba.

Command line output

Abra un explorador y vaya a http://localhost/ContosoUniversityy haga clic en la página Acerca de para comprobar que la implementación se realizó correctamente.

Si no ha creado ningún alumno en la prueba, verá una página vacía en el encabezado estadísticas del cuerpo del alumno . Vaya a la página Estudiantes, haga clic en Agregar alumno y agregue algunos alumnos y vuelva a la página Acerca de para ver las estadísticas de los alumnos.

Screenshot showing the Student Body Statistics on the About page.

Opciones de la línea de comandos de clave

El comando que escribió pasó la ruta de acceso del archivo de solución y dos propiedades a MSBuild:

msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true 
/p:PublishProfile=Test

Implementación de la solución frente a la implementación de proyectos individuales

Al especificar el archivo de solución, todos los proyectos de la solución se compilarán. Si tiene varios proyectos web en la solución, se aplica el siguiente comportamiento de MSBuild:

  • Las propiedades que especifique en la línea de comandos se pasan a cada proyecto. Por lo tanto, cada proyecto web debe tener un perfil de publicación con el nombre que especifique. Si especifica /p:PublishProfile=Test, cada proyecto web debe tener un perfil de publicación denominado Test.
  • Es posible que publique correctamente un proyecto cuando otro ni siquiera se compile. Para obtener más información, consulte el subproceso stackoverflow MSBuild produce un error con dos paquetes.

Si especifica un proyecto individual en lugar de una solución, debe agregar un parámetro que especifique la versión de Visual Studio. Si usa Visual Studio 2012, la línea de comandos sería similar al ejemplo siguiente:

msbuild C:\ContosoUniversity\ContosoUniversity\ContosoUniversity.csproj /p:DeployOnBuild=true /p:PublishProfile=Test /p:VisualStudioVersion=11.0

El número de versión de Visual Studio 2010 es 10.0. Para obtener más información, consulte compatibilidad de proyectos de Visual Studio y VisualStudioVersion en el blog de Sayed Hashimi.

Especificación del perfil de publicación

Puede especificar el perfil de publicación por nombre o por la ruta de acceso completa al archivo .pubxml, como se muestra en el ejemplo siguiente:

msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true /p:PublishProfile=C:\ContosoUniversity\ContosoUniversity\Properties\PublishProfiles\Test.pubxml

Métodos de publicación web admitidos para la publicación de la línea de comandos

Se admiten tres métodos de publicación para la publicación de la línea de comandos:

  • MSDeploy - Publicar mediante Web Deploy.
  • Package - Publicar mediante la creación de un paquete de Web Deploy. Tiene que instalar el paquete por separado del comando de MSBuild que lo crea.
  • FileSystem - Publicar copiando archivos en una carpeta especificada.

Especificación de la configuración y la plataforma de compilación

La configuración de compilación y la plataforma deben establecerse en Visual Studio o en la línea de comandos. Los perfiles de publicación incluyen propiedades denominadas LastUsedBuildConfiguration y LastUsedPlatform, pero no se pueden establecer estas propiedades para determinar cómo se compila el proyecto. Para obtener más información, consulte MSBuild: cómo establecer la propiedad de configuración en el blog de Sayed Hashimi.

Implementación en entorno de ensayo

Para realizar la implementación en Azure, debe agregar la contraseña a la línea de comandos. Si guardó la contraseña en el perfil de publicación en Visual Studio, se almacenó en formato cifrado en el archivo .pubxml.user. MSBuild no tiene acceso a ese archivo cuando se realiza una implementación de la línea de comandos, por lo que debe pasar la contraseña en un parámetro de línea de comandos.

  1. Copie la contraseña que necesita del archivo .publishsettings que descargó anteriormente para el sitio web de ensayo. La contraseña es el valor del atributo userPWD del elemento Web Deploy publishProfile.

    Web Deploy password

  2. En la página Inicio de Windows 8, busque Símbolo del sistema para desarrolladores de VS2012y haga clic en el icono para abrir el símbolo del sistema. (No tiene que abrirlo como administrador esta vez porque no se implementa en IIS en el equipo local).

  3. Escriba el siguiente comando en el símbolo del sistema y reemplace la ruta de acceso al archivo de solución por la ruta de acceso al archivo de solución y la contraseña por la contraseña:

    msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true /p:PublishProfile=Staging /p:Password=hdNSWsbuqno7J5uqnwKafwlfNPt1DSco7J5uqnwKafwlfNPt1DSpKHuYgCco7J5 /p:AllowUntrustedCertificate=true
    

    Observe que esta línea de comandos incluye un parámetro adicional: /p:AllowUntrustedCertificate=true. Como se está escribiendo este tutorial, la AllowUntrustedCertificate propiedad debe establecerse al publicar en Azure desde la línea de comandos. Cuando se publique la corrección de este error, no necesitará ese parámetro.

  4. Abra un explorador y vaya a la dirección URL del sitio de almacenamiento provisional y, a continuación, haga clic en la página Acerca de para comprobar que la implementación se realizó correctamente.

    Como ha visto anteriormente para el entorno de prueba, es posible que tenga que crear algunos alumnos para ver estadísticas en la página Acerca de .

Implementación en producción

El proceso de implementación en producción es similar al proceso de ensayo.

  1. Copie la contraseña que necesita del archivo .publishsettings que descargó anteriormente para el sitio web de producción.

  2. Abra Símbolo del sistema para desarrolladores para VS2012.

  3. Escriba el siguiente comando en el símbolo del sistema y reemplace la ruta de acceso al archivo de solución por la ruta de acceso al archivo de solución y la contraseña por la contraseña:

    msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true /p:PublishProfile=Production /p:Password=hdNSWsbuqnwKafwlo7J5uqnwKafwlfNPt1DSqnwKafwlfNPt1DSpKHuYgCco7J5 /p:AllowUntrustedCertificate=true
    

    En el caso de un sitio de producción real, si también hubo un cambio en la base de datos, normalmente copiaría el archivo app_offline.htm en el sitio antes de la implementación y lo eliminaría después de la implementación correcta.

  4. Abra un explorador y vaya a la dirección URL del sitio de almacenamiento provisional y, a continuación, haga clic en la página Acerca de para comprobar que la implementación se realizó correctamente.

Resumen

Ahora ha implementado una actualización de aplicación mediante la línea de comandos.

Screenshot showing the About page displaying the Student Body Statistics.

En el siguiente tutorial, verá un ejemplo de cómo ampliar la canalización de publicación web. En el ejemplo se muestra cómo implementar archivos que no se incluyen en el proyecto.