Criação e a empacotamento de projetos de aplicativos Web
por Jason Lee
Quando você deseja implantar um projeto de aplicativo Web em um ambiente de servidor remoto, sua primeira tarefa é criar o projeto e gerar um pacote de implantação da Web. Este tópico descreve como o processo de build funciona para projetos de aplicativo Web. Em particular, ele explica:
- Como o WPP (Pipeline de Publicação na Web) estende o processo de build para incluir a funcionalidade de implantação.
- Como a Ferramenta de Implantação da Web (Implantação da Web) do IIS (Serviços de Informações da Internet) transforma seu aplicativo Web em um pacote de implantação.
- Como funciona o processo de compilação e empacotamento e quais arquivos são criados.
No Visual Studio 2010, o processo de build e implantação para projetos de aplicativo Web tem suporte do WPP. O WPP fornece um conjunto de destinos de Microsoft Build Engine (MSBuild) que estendem a funcionalidade do MSBuild e permitem que ele se integre à Implantação da Web. No Visual Studio, você pode ver essa funcionalidade estendida nas páginas de propriedades do seu projeto de aplicativo Web. A página pacote/publicação da Web , juntamente com a página Pacote/Publicar SQL , permite configurar como seu projeto de aplicativo Web é empacotado para implantação quando o processo de build é concluído.
Como funciona o WPP?
Se você der uma olhada no arquivo de projeto de um projeto de aplicativo Web baseado em C#, poderá ver que ele importa dois arquivos .targets.
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\
v10.0\WebApplications\Microsoft.WebApplication.targets" />
A primeira instrução Import é comum a todos os projetos do Visual C#. Esse arquivo, Microsoft.CSharp.targets, contém destinos e tarefas específicas do Visual C#. Por exemplo, a tarefa do compilador C# (Csc) é invocada aqui. O arquivo Microsoft.CSharp.targets , por sua vez, importa o arquivo Microsoft.Common.targets . Isso define destinos comuns a todos os projetos, como Compilar, Recompilar, Executar, Compilar e Limpar. A segunda instrução Import é específica para projetos de aplicativo Web. O arquivo Microsoft.WebApplication.targets , por sua vez, importa o arquivo Microsoft.Web.Publishing.targets . O arquivo Microsoft.Web.Publishing.targets essencialmente é o WPP. Ele define destinos, como Package e MSDeployPublish, que invocam a Implantação da Web para concluir várias tarefas de implantação.
Para entender como esses destinos adicionais são usados, na solução de exemplo do Contact Manager, abra o arquivo Publish.proj e dê uma olhada no destino BuildProjects .
<Target Name="BuildProjects" Condition=" '$(BuildingInTeamBuild)'!='true' ">
<MSBuild Projects="@(ProjectsToBuild)"
Properties="OutDir=$(OutputRoot);
Configuration=$(Configuration);
DeployOnBuild=true;
DeployTarget=Package"
Targets="Build" />
</Target>
Esse destino usa a tarefa do MSBuild para criar vários projetos. Observe as propriedades DeployOnBuild e DeployTarget :
- A propriedade DeployOnBuild=true significa essencialmente "Quero executar um destino adicional quando o build for concluído com êxito".
- A propriedade DeployTarget identifica o nome do destino que você deseja executar quando a propriedade DeployOnBuild é igual a true. Nesse caso, você está especificando que deseja que o MSBuild execute o destino pacote depois de compilar o projeto.
O destino pacote é definido no arquivo Microsoft.Web.Publishing.targets . Essencialmente, esse destino usa a saída de build do seu projeto de aplicativo Web e o transforma em um pacote de implantação da Web que pode ser publicado em um servidor Web do IIS.
Observação
Para exibir um arquivo de projeto (por exemplo, ContactManager.Mvc.csproj) no Visual Studio 2010, primeiro você precisa descarregar o projeto de sua solução. Na janela Gerenciador de Soluções, clique com o botão direito do mouse no nó do projeto e clique em Descarregar Projeto. Clique com o botão direito do mouse no nó do projeto novamente e clique em Editar[arquivo de projeto]). O arquivo de projeto será aberto em seu formato XML bruto. Lembre-se de recarregar o projeto quando terminar.
Para obter mais informações sobre destinos, tarefas e instruções De importação do MSBuild, consulte Noções básicas sobre o arquivo de projeto. Para obter uma introdução mais detalhada aos arquivos de projeto e ao WPP, consulte Inside the Microsoft Build Engine: Using MSBuild and Team Foundation Build by Sayed Ibrahim Hashimi and William Bartholomew, ISBN: 978-0-7356-4524-0.
O que é um pacote de implantação da Web?
Quando você cria e implanta um projeto de aplicativo Web, usando o Visual Studio 2010 ou usando o MSBuild diretamente, o resultado final normalmente é um pacote de implantação da Web. O pacote de implantação da Web é um arquivo .zip. Ele contém tudo o que o IIS e a Implantação da Web precisam para recriar seu aplicativo Web, incluindo:
- A saída compilada do aplicativo Web, incluindo conteúdo, arquivos de recursos, arquivos de configuração, javaScript e recursos CSS (folhas de estilos em cascata) e assim por diante.
- Assemblies para seu projeto de aplicativo Web e para quaisquer projetos referenciados em sua solução.
- Scripts SQL para gerar todos os bancos de dados que você está implantando com seu aplicativo Web.
Depois que o pacote de implantação da Web tiver sido gerado, você poderá publicá-lo em um servidor Web do IIS de várias maneiras. Por exemplo, você pode implantá-lo remotamente direcionando o serviço Agente Remoto de Implantação da Web ou o Manipulador de Implantação da Web no servidor Web de destino ou pode usar o Gerenciador do IIS para importar manualmente o pacote no servidor Web de destino. Para obter mais informações sobre essas abordagens de implantação, consulte Escolhendo a abordagem certa para a implantação da Web.
Como funciona o processo de build?
Isso mostra o que acontece quando você cria e empacota um projeto de aplicativo Web:
Quando você cria um projeto de aplicativo Web, o processo de build gera um arquivo chamado [nome do projeto].SourceManifest.xml. Junto com o arquivo de projeto e a saída de build, esse arquivo .SourceManifest.xml informa à Implantação da Web o que ele precisa incluir no pacote de implantação da Web. Usando essas entradas, a Implantação da Web gera um pacote de implantação da Web chamado [nome do projeto].zip.
Junto com o pacote de implantação da Web, o processo de build gera dois arquivos que podem ajudá-lo a usar o pacote:
- O arquivo .deploy.cmd inclui um conjunto de comandos de Implantação da Web (MSDeploy.exe) parametrizados que publicam seu pacote de implantação da Web em um servidor Web IIS remoto. A execução do arquivo .deploy.cmd , com parâmetros apropriados, normalmente fornece uma alternativa mais rápida e fácil para construir manualmente os comandos MSDeploy.exe por conta própria.
- O arquivo SetParameters.xml fornece um conjunto de valores de parâmetro para o comando MSDeploy.exe. Esses valores incluem propriedades como o nome do aplicativo Web do IIS no qual você deseja implantar o pacote, os valores de quaisquer pontos de extremidade de serviço e cadeias de conexão definidas no arquivo web.config e quaisquer valores de propriedade de implantação definidos nas páginas de propriedades do projeto.
O arquivo SetParameters.xml é fundamental para gerenciar o processo de implantação. Esse arquivo é gerado dinamicamente de acordo com o conteúdo do seu projeto de aplicativo Web. Por exemplo, se você adicionar uma cadeia de conexão ao arquivo web.config , o processo de build detectará automaticamente a cadeia de conexão, parametrizará a implantação adequadamente e criará uma entrada no arquivo SetParameters.xml para permitir que você modifique a cadeia de conexão como parte do processo de implantação. O próximo tópico, Configuring Parameters for Web Package Deployment, explica mais detalhadamente a função desse arquivo e descreve as diferentes maneiras pelas quais você pode modificá-lo durante o build e a implantação.
Observação
No Visual Studio 2010, o WPP não dá suporte à pré-compilação das páginas em um aplicativo Web antes do empacotamento. A próxima versão do Visual Studio e do WPP incluirá a capacidade de pré-compilar um aplicativo Web como uma opção de empacotamento.
Conclusão
Este tópico forneceu uma visão geral do processo de build e empacotamento para projetos de aplicativo Web no Visual Studio 2010. Ele descreveu como o WPP permite invocar comandos de Implantação da Web do MSBuild e explicou como o processo de build e empacotamento funciona.
Depois de criar um pacote de implantação da Web, a próxima etapa é implantá-lo. Para obter mais informações sobre isso, consulte Configuring Parameters for Web Package Deployment and Deploying Web Packages.
Leitura Adicional
Os próximos tópicos deste tutorial, Configurando parâmetros para implantação e implantação de pacotes Web, fornecem diretrizes sobre como usar o pacote Web que você criou. O tutorial final desta série, Advanced Enterprise Web Deployment, fornece diretrizes sobre como personalizar e solucionar problemas do processo de empacotamento.
Para obter uma introdução mais detalhada aos arquivos de projeto e ao WPP, consulte Inside the Microsoft Build Engine: Using MSBuild and Team Foundation Build by Sayed Ibrahim Hashimi and William Bartholomew, ISBN: 978-0-7356-4524-0.