09 August 2011 ~ 0 Comments

Automatizar o deploy da aplicação VB.NET/C#

Após muitas pesquisas, consegui resolver um problema que
estava me perseguindo há muito tempo, precisava publicar a minha aplicação (via
ClickOnce) com o mesmo número de versão em três sites diferentes, eu realizava
este procedimento manualmente, perdia aproximadamente 30 min com todo o procedimento
para publicar o projeto, visto que o tempo perdido é muito grande, e como somos
seres humanos e suscetíveis a falhas, a melhor solução para este problema é
automatizar o processo, com isso eu ganho tempo para publicar o aplicativo,
ganho tempo para gastar com outras coisas.

Para isso, utilizei a ferramenta MSBuild, para
quem não conhece, MSBuild (Microsoft Build Engine) é uma plataforma para
compilarmos as aplicações, onde é possível através de uma configuração via XML controlar
como será compilada as aplicações, caso queira aprender com exemplos praticos, a
equipe MSBuild liberou um pacote de exemplos de uso, só você clicar neste
link
. São 3 elementos principais para o funcionamento correto, são eles:

  • Properties
  • Items
  • Tasks

Antes de iniciar as alterações para solução deste problema,
fiz o seguinte procedimento, abri o projeto no bloco de notas (.vbproj ou .csproj)
e inclui no final do arquivo duas linhas antes de fechar a tag Project ficando
no layout abaixo:

<Import Project="Customized.targets" />

  <Import
Project="$(MSBuildExtensionsPath)MSBuildCommunityTasksMSBuild.Community.Tasks.Targets"
/>

</Project>

Inclui o arquivo publish.template.html, este é o arquivo
publish.html que é gerado, porém, sem nenhuma customização.

Inclui na pasta do projeto um arquivo Customized.targets e
neste arquivo contém a seguinte estrutura:

<?xml version="1.0"
encoding="utf-8"?>

<Project
DefaultTargets="Build"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003"
ToolsVersion="4.0">

</Project>

 

Agora este arquivo está pronto para as customizações, todas
as alterações que iremos fazer será realizada no arquivo Customized.targets

 

Properties

Em properties é possível criarmos/alterarmos elementos para
acessarmos em outros grupos do nosso arquivo de configuração, ou até mesmo
podemos alterar as chaves que já estão no nosso projeto, exemplo, a chave
PublishDir, você encontra estas chaves no seu arquivo do projeto (.vbproj,
.csproj), para esta parte eu fiz duas coisas. Primeiramente eu criei a chave Ambiente
como a imagem abaixo

imagem1 300x30 Automatizar o deploy da aplicação VB.NET/C#

Foi criada uma condição para definir o PublishDir e o
PublishUrl, pois cada ambiente possui um publishdir e publishurl diferente,
muito cuidado com os elementos, pois são case-sensitive, ficou como a figura
abaixo.

imagem2 300x196 Automatizar o deploy da aplicação VB.NET/C#
Foi incluída a chave, para publicar o arquivo “publish.html”:

imagem3 300x39 Automatizar o deploy da aplicação VB.NET/C#

Items

Items são parâmetros para compilar o sistema, normalmente são
utilizados como parâmetros para as tasks, podendo ser agrupados. Items são
declarados como filhos da propriedade ItemGroup.

Iremos utilizar os items para definir o Nome do produto,
versão da aplicação, os ítems que são necessários para o arquivo publish.html,
veja na imagem abaixo:

imagem4 300x137 Automatizar o deploy da aplicação VB.NET/C#

Tasks

Tasks são ações que devemos fazer para publicar o projeto, neste
projeto iremos utilizar a seguinte task.

Precisamos alterar dentro do arquivo publish.template.html o
nome de usuário, o nome do produto que estamos publicando e etc, e também
precisamos alterar o nome de publish.template.html para publish.html,
realizamos todas estas operações com as tasks, veja na imagem abaixo.

imagem5 Automatizar o deploy da aplicação VB.NET/C#
Feito toda esta configuração, nosso projeto já está pronto
para publicarmos automaticamente. Precisando apenas chamar via Prompt do Windows.

Segue o exemplo de chamada para o msbuild.

 msbuild Projeto.sln
/t:clean,rebuild,publish /p:Configuration=Release /property:ApplicationVersion=1.0.0.0
/p:Ambiente=DESENV

Feito isso, basta realizar a chamada alterando a variável Ambiente
que sua aplicação será gerada automaticamente.

 

 

References:

MSBuild Reference

ClikcOnce
via msbuild

Leave a Reply