ASP.NET Implantação da Web usando o Visual Studio: implantação de linha de comando
por Tom Dykstra
Esta série de tutoriais mostra como implantar (publicar) um aplicativo Web ASP.NET em Aplicativos Web do Serviço de Aplicativo do Azure ou em 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 na linha de comando. Isso é útil para cenários em que você deseja automatizar o processo de implantação em vez de fazê-lo manualmente no Visual Studio, normalmente usando um sistema de controle de versão de código-fonte.
Fazer uma alteração para implantar
Atualmente, a página Sobre exibe o código do modelo.
Você substituirá isso por um código que exibe um resumo da matrícula do aluno.
Abra a página About.aspx , exclua todas as marcações dentro do MainContent
Content
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 .
Implantar em teste usando a linha de comando
Você não implantará outra alteração de banco de dados, portanto, desabilite a implantação do 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 de seleção Atualizar Banco de Dados na guia Configurações .
Na página inicial do Windows 8, procure 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.
Abra um navegador, vá para http://localhost/ContosoUniversity
e clique na página Sobre para verificar se a distribuição foi bem-sucedida.
Se você não tiver criado nenhum aluno no teste, verá uma página vazia sob o título Estatísticas do Corpo Discente. Vá para a página Alunos, clique em Adicionar Aluno e adicione alguns alunos e, em seguida, retorne à página Sobre para ver as estatísticas dos alunos.
Opções de linha de comando de teclas
O comando inserido passou o caminho do arquivo de 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 especificado. Se você especificar
/p:PublishProfile=Test
, cada projeto Web deverá ter um perfil de publicação chamado Teste. - Você pode publicar com sucesso um projeto quando outro nem mesmo é compilado. Para obter mais informações, consulte o thread stackoverflow que o 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 exemplo a seguir:
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 de 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
Três métodos de publicação são suportados para publicação de linha de comando:
MSDeploy
- Publique usando a Implantação da Web.Package
- Publique criando um Pacote de Implantação da Web. Você precisa instalar o pacote separadamente do comando MSBuild que o cria.FileSystem
- Publique copiando arquivos para uma pasta especificada.
Especificando a configuração de compilação 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 de 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 de forma criptografada 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.
Copie a senha necessária do arquivo .publishsettings que você baixou anteriormente para o site de preparo. A senha é o
userPWD
valor do atributo para o elemento ImplantaçãopublishProfile
da Web.Na página inicial do Windows 8, procure 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.)
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 pela senha:
msbuild C:\ContosoUniversity\ContosoUniversity.sln /p:DeployOnBuild=true /p:PublishProfile=Staging /p:Password=hdNSWsbuqno7J5uqnwKafwlfNPt1DSco7J5uqnwKafwlfNPt1DSpKHuYgCco7J5 /p:AllowUntrustedCertificate=true
Observe que esta linha de comando inclui um parâmetro extra:
/p:AllowUntrustedCertificate=true
. Como este tutorial está sendo escrito, a propriedade deve ser definida quando você publicaAllowUntrustedCertificate
no Azure a partir da linha de comando. Quando a correção para esse bug for lançada, você não precisará desse parâmetro.Abra um navegador e vá para a URL do seu site de teste 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 as estatísticas na página Sobre .
Implantar para a produção
O processo de implantação na produção é semelhante ao processo de preparo.
Copie a senha necessária do arquivo .publishsettings que você baixou anteriormente para o site de produção.
Abra o Prompt de Comando do Desenvolvedor para VS2012.
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 pela 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 também houvesse uma alteração no 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.
Abra um navegador e vá para a URL do seu site de teste 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.
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.