MSBuild 101 – Parte 1 – Fundamentos

Publicado em 05/01/2011

5


Olá galera, tudo certo?

Dando um tempinho para o Xadrez, decidi abordar outro tema que considero fundamental para a comunidade: o processo de build.

Nessa série pretendo abordar uma tecnologia fantástica e incrivelmente subutilizada: o MSBuild.

Se você acompanha outra série e está achando que algumas pararam (meu amigo @rodrigovidal), não se preocupe. Todas serão retomadas e continuadas. Estou abrindo um bom número de opções para ter sobre o que escrever todos os dias, nesse novo ano.

O que é o MSBuild?

Em palavras simples? É o mecanismo responsável pelo build de nossas aplicações .net. É a tecnologia que o Visual Studio utiliza. É a tecnologia mais acessível para você utilizar.

Na medida em que a complexidade de nossos softwares aumenta, mais ênfase é dada na adoção de práticas corretas de building.

Até o framework 2, o processo de build para aplicações em .NET era um processo misterioso. Agora, esse processo foi completamente revelado por um mecanismo chamado “Microsoft Build Engine”, ou MSBuild, para os íntimos. É sobre esse artefato de software que falaremos aqui.

Você já utiliza o MSBuild

Sempre que solicita o build de uma aplicação em .NET, no Visual Studio, está utilizando o MSBuild. Logo, mesmo que não queira, já o utiliza a algum tempo.

O MSBuild é inteiramente parametrizável. Todo o processo de build pode ser customizado através de arquivos XML (sim, apenas arquivos XML). Toda vez que você inicia um projeto novo, o Visual Studio cria um script de build (msbuild) para você. Quer ver?

  • Inicie um projeto novo (Console Application, por exemplo);
  • Adicione um outro projeto;
  • Clique com o botão direito sobre um dos projetos que acabou de criar e selecione a opção “Unload Project”

image

 

  • Clique com botão direito sobre o projeto que descarregou e selecione a opção “Edit <nome-do-seu-projeto>.csproj”

image

 

Pronto! Você está vendo o arquivo com o “Microsoft Build Project File” que o Visual Studio criou para você. Todo arquivo csproj é um arquivo do MSBuild.

Visual Studio e o MSBuild

Começando pelo VS2005, todos os arquivos de projeto (csproj, no caso do C#) que criamos com o Visual Studio estão no formato do MSBuild. Por causa disso, podemos fazer alguns “ajustes”, ou mesmo reescrever todo o processo de build. Usando o MSBuild, podemos customizar o processo de build adicionando etapas para, por exemplo:

  • geração de código;
  • testes de unidade (e não unitários, como bem destaca o @vquaiato);
  • code analysis;
  • etc…

Usando o MSBuild, podemos automatizar todo processo de build ou deployment, bem como podemos começar a cogitar utilizar “continuous integration”.

Escrevendo um MSBuild Project “na unha”

Um arquivo do MSBuild – formalmente, MSBuild Project File – é apenas um arquivo XML. Este arquivo XML é descrito por um arquivo de schema (XSD) que foi criado pela Microsoft. Esse arquivo está localizado, norlmalmente, na pasta %WINDIR%\Microsoft.NET\Framework\vNNNN\MSBuild e se chama Microsoft.Build.Core.xsd.

A maneira mais rápida de criar um arquivo de projeto (exceto criando um novo projeto usando um template) é usando o próprio Visual Studio. Observe:

  • Crie um novo arquivo XML;
  • Inicie um nodo chamado Project;
  • Defina o xmlns como http://schemas.microsoft.com/developer/msbuild/2003"

O conteúdo de seu arquivo deverá parecer com a listagem que segue:

1 <?xml version="1.0" encoding="utf-8"?> 2 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 3 4 </Project>

  • Este pequeno fragmento identifica um arquivo de projeto do MSBuild; Salve esse arquivo com a extensão proj;
  • Abra o Prompt de Comando do Visual Studio;
  • vá até a pasta onde salvou o arquivo;
  • Execute o MSBuild.

Você vai perceber duas coisas:

  1. O MSBuild assumiu o único arquivo com extensão .proj como default;
  2. O MSBuild reclamou que falta um target em seu projeto.

Fazendo um HelloWorld com o MSBuild

Nenhum post inicial sobre alguma tecnologia fica completo sem um HelloWorld. Aqui segue o nosso:

1 <?xml version="1.0" encoding="utf-8"?> 2 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 3 <Target Name="HelloWorld"> 4 <Message Text="Hello World!"/> 5 </Target> 6 </Project>

Salve esse conteúdo em um arquivo chamado HelloWorld.proj. Após isso, usando o Prompt de Comando do Visual Studio, vá até a pasta onde salvou o arquivo e digite: MSBuild HelloWorld.proj /t:HelloWorld

Repositório dessa série no GitHub

Realmente gostei do GitHub (thanks @juanplopes). Tanto que, partindo de agora, vou manter repositórios com os exemplos que desenvolvo em meus posts.

Os arquivos que criearei nessa série (incluindo os que criamos hoje) estão em https://github.com/ElemarJR/MSBuild101

Por hoje, era isso!

Smiley piscando

Etiquetado:
Publicado em: Sem categoria