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
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.

Foi incluída a chave, para publicar o arquivo “publish.html”:
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:
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.

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:

