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

por Tom Dykstra

Descargar el proyecto de inicio

En esta serie de tutoriales se muestra cómo implementar (publicar) una aplicación Web de 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, vea 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 resulta útil en 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 en la implementación

Actualmente en la página acerca de se muestra el código de plantilla.

Página acerca de con código de plantilla

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

Abra la página About. aspx , elimine todo el marcado dentro del elemento MainContent Content 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 About .

Página About

Implementar para probar mediante la línea de comandos

No va a implementar otro cambio en la base de datos, por lo que debe deshabilitar la implementación de la base de datos dbDacFx para la base de datos ASPNET-ContosoUniversity. Abra el Asistente para publicación web y, en cada uno de los tres perfiles de publicación, desactive la casilla Actualizar base de datos en la pestaña configuración .

En la página de 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 y la implementa en el entorno de prueba.

Salida de la línea de comandos

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

Si no ha creado ningún estudiante en la prueba, verá una página vacía en el encabezado de estadísticas del cuerpo del alumno . Vaya a la página Students , haga clic en Agregar Studenty agregue algunos estudiantes y, a continuación, vuelva a la página About para ver las estadísticas de los estudiantes.

Página acerca de en el entorno de prueba

Opciones de la línea de comandos de clave

El comando que ha especificado ha pasado 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 en comparación con la implementación de proyectos individuales

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

  • Las propiedades que se especifican en la línea de comandos se pasan a todos los proyectos. 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 no se haya compilando otro. Para obtener más información, vea el subproceso de stackoverflow msbuild genera un error con dos paquetes.

Si especifica un proyecto individual en lugar de una solución, tendrá que 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, vea compatibilidad de proyectos de Visual Studio y VisualStudioVersion en el blog de Sayed Hashimi.

Especificar el perfil de publicación

Puede especificar el perfil de publicación por nombre o 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 compatibles con la publicación en 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 creando un paquete de Web Deploy. Tiene que instalar el paquete por separado desde el comando de MSBuild que lo crea.
  • FileSystem: publicar mediante la copia de archivos en una carpeta especificada.

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

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 que se denominan LastUsedBuildConfiguration y LastUsedPlatform, pero no puede establecer estas propiedades para determinar cómo se compila el proyecto. Para obtener más información, vea msbuild: How to Set the Configuration Property en el blog de Sayed Hashimi.

Implementación en entorno de ensayo

Para implementar en Azure, debe agregar la contraseña a la línea de comandos. Si ha guardado la contraseña en el perfil de publicación en Visual Studio, se almacenará en formato cifrado en el archivo. pubxml. User . MSBuild no tiene acceso a ese archivo al realizar una implementación de línea de comandos, por lo que tiene que 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 publishProfile Web Deploy.

    Web Deploy contraseña

  2. En la página de 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 está implementando 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
    

    Tenga en cuenta que esta línea de comandos incluye un parámetro adicional: /p:AllowUntrustedCertificate=true. Cuando se escribe este tutorial, se debe establecer la propiedad AllowUntrustedCertificate al publicar en Azure desde la línea de comandos. Cuando se lance la corrección para este error, no necesitará ese parámetro.

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

    Como vimos anteriormente para el entorno de prueba, es posible que tenga que crear algunos estudiantes para ver las estadísticas en la página acerca de.

Implementar 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
    

    Para un sitio de producción real, si también se ha producido un cambio en la base de datos, normalmente se copiará la aplicación_archivo. htm sin conexión en el sitio antes de la implementación y se eliminará después de la implementación correcta.

  4. Abra un explorador y vaya a la dirección URL del sitio de ensayo 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 la aplicación mediante la línea de comandos.

Página acerca de en el entorno de prueba

En el siguiente tutorial, verá un ejemplo de cómo extender la canalización de publicación Web. En el ejemplo se muestra cómo implementar archivos que no están incluidos en el proyecto.