ASP.NET implantação da Web usando o Visual Studio: implantação de linha de comando

por Tom Dykstra

Baixar o Projeto Inicial

Esta série de tutoriais mostra como implantar (publicar) um aplicativo Web ASP.NET para Serviço de Aplicativo do Azure Aplicativos Web ou para um provedor de hospedagem de terceiros usando o Visual Studio 2012 ou o Visual Studio 2010. Para obter informações sobre a série, consulte o primeiro tutorial da série.

Visão geral

Este tutorial mostra como invocar o pipeline de publicação na Web do Visual Studio da linha de comando. Isso é útil para cenários em que você deseja automatizar o processo de implantação em vez de fazer isso manualmente no Visual Studio, normalmente usando um sistema de controle de versão do código-fonte.

Fazer uma alteração para implantar

Atualmente, a página Sobre exibe o código do modelo.

Sobre a página com código de modelo

Você substituirá por um código que exibe um resumo da inscrição do aluno.

Abra a página About.aspx , exclua toda a marcação dentro do MainContentContent elemento e insira a seguinte marcação em seu 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>

Execute o projeto e selecione a página Sobre .

Página Sobre

Implantar no Teste usando a linha de comando

Você não implantará outra alteração de banco de dados, portanto, desabilite a implantação de banco de dados dbDacFx para o banco de dados aspnet-ContosoUniversity. Abra o assistente Publicar Web e, em cada um dos três perfis de publicação, desmarque a caixa Atualizar Banco de Dados marcar na guia Configurações.

Na página Iniciar do Windows 8, pesquise Prompt de Comando do Desenvolvedor para VS2012.

Clique com o botão direito do mouse no ícone do Prompt de Comando do Desenvolvedor para VS2012 e clique em Executar como administrador.

Insira o seguinte comando no prompt de comando, substituindo o caminho para o arquivo de solução pelo caminho para o arquivo de solução:

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

O MSBuild cria a solução e a implanta no ambiente de teste.

Saída da linha de comando

Abra um navegador e acesse http://localhost/ContosoUniversitye clique na página Sobre para verificar se a implantação foi bem-sucedida.

Se você não tiver criado nenhum aluno no teste, verá uma página vazia no título Estatísticas do Corpo do Aluno . Vá para a página Alunos , clique em Adicionar Aluno e adicione alguns alunos e retorne à página Sobre para ver as estatísticas dos alunos.

Captura de tela mostrando as Estatísticas do Corpo do Aluno na página Sobre.

Principais opções de linha de comando

O comando inserido passou o caminho do arquivo da solução e duas propriedades para o MSBuild:

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

Implantando a solução versus implantando projetos individuais

Especificar o arquivo de solução faz com que todos os projetos na solução sejam criados. Se você tiver vários projetos Web na solução, o seguinte comportamento do MSBuild se aplicará:

  • As propriedades especificadas na linha de comando são passadas para cada projeto. Portanto, cada projeto Web deve ter um perfil de publicação com o nome que você especificar. Se você especificar /p:PublishProfile=Test, cada projeto Web deverá ter um perfil de publicação chamado Teste.
  • Você poderá publicar com êxito um projeto quando outro nem mesmo for compilado. Para obter mais informações, consulte o thread de stackoverflow MSBuild falha com dois pacotes.

Se você especificar um projeto individual em vez de uma solução, precisará adicionar um parâmetro que especifique a versão do Visual Studio. Se você estiver usando o Visual Studio 2012, a linha de comando será semelhante ao seguinte exemplo:

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

O número de versão do Visual Studio 2010 é 10.0. Para obter mais informações, consulte Compatibilidade de projeto do Visual Studio e VisualStudioVersion no blog do Sayed Hashimi.

Especificando o perfil de publicação

Você pode especificar o perfil de publicação por nome ou pelo caminho completo para o arquivo .pubxml , conforme mostrado no exemplo a seguir:

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

Métodos de publicação na Web com suporte para publicação de linha de comando

Há suporte para três métodos de publicação para publicação de linha de comando:

  • MSDeploy – Publicar usando a Implantação da Web.
  • Package – Publicar criando um pacote de implantação da Web. Você precisa instalar o pacote separadamente do comando MSBuild que o cria.
  • FileSystem – Publicar copiando arquivos para uma pasta especificada.

Especificando a configuração de build e a plataforma

A configuração de build e a plataforma devem ser definidas no Visual Studio ou na linha de comando. Os perfis de publicação incluem propriedades nomeadas LastUsedBuildConfiguration e LastUsedPlatform, mas você não pode definir essas propriedades para determinar como o projeto é criado. Para obter mais informações, consulte MSBuild: como definir a propriedade de configuração no blog do Sayed Hashimi.

Implantar no preparo

Para implantar no Azure, você deve adicionar a senha à linha de comando. Se você salvou a senha no perfil de publicação no Visual Studio, ela foi armazenada no formulário criptografado no arquivo .pubxml.user . Esse arquivo não é acessado pelo MSBuild quando você faz uma implantação de linha de comando, portanto, você precisa passar a senha em um parâmetro de linha de comando.

  1. Copie a senha de que você precisa do arquivo .publishsettings que você baixou anteriormente para o site de preparo. A senha é o valor do userPWD atributo para o elemento Desativação publishProfile da Web.

    Senha de implantação da Web

  2. Na página Iniciar do Windows 8, pesquise Prompt de Comando do Desenvolvedor para VS2012 e clique no ícone para abrir o prompt de comando. (Você não precisa abri-lo como administrador desta vez porque não está implantando no IIS no computador local.)

  3. Insira o seguinte comando no prompt de comando, substituindo o caminho para o arquivo de solução pelo caminho para o arquivo de solução e a senha com sua senha:

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

    Observe que essa linha de comando inclui um parâmetro extra: /p:AllowUntrustedCertificate=true. Como este tutorial está sendo escrito, a AllowUntrustedCertificate propriedade deve ser definida quando você publica no Azure na linha de comando. Quando a correção desse bug for lançada, você não precisará desse parâmetro.

  4. Abra um navegador e acesse a URL do site de preparo e clique na página Sobre para verificar se a implantação foi bem-sucedida.

    Como você viu anteriormente para o ambiente de teste, talvez seja necessário criar alguns alunos para ver estatísticas na página Sobre .

Implantar para a produção

O processo de implantação em produção é semelhante ao processo de preparo.

  1. Copie a senha de que você precisa do arquivo .publishsettings que você baixou anteriormente para o site de produção.

  2. Abra o Prompt de Comando do Desenvolvedor para VS2012.

  3. Insira o seguinte comando no prompt de comando, substituindo o caminho para o arquivo de solução pelo caminho para o arquivo de solução e a senha com sua senha:

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

    Para um site de produção real, se houvesse também uma alteração de banco de dados, você normalmente copiaria o arquivo app_offline.htm para o site antes da implantação e o excluiria após a implantação bem-sucedida.

  4. Abra um navegador e acesse a URL do site de preparo e clique na página Sobre para verificar se a implantação foi bem-sucedida.

Resumo

Agora você implantou uma atualização de aplicativo usando a linha de comando.

Captura de tela mostrando a página Sobre exibindo as Estatísticas do Corpo do Aluno.

No próximo tutorial, você verá um exemplo de como estender o pipeline de publicação na Web. O exemplo mostrará como implantar arquivos que não estão incluídos no projeto.