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”
- Clique com botão direito sobre o projeto que descarregou e selecione a opção “Edit <nome-do-seu-projeto>.csproj”
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:
- O MSBuild assumiu o único arquivo com extensão .proj como default;
- 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!
![]()






tisciencia
06/01/2011
Legal.. eu também estou estudando o processo de build e como escrever um arquivo de build. Com certeza essa série pode ajudar bastante!
Quando chegar em “continuous integration” de uma olhada no meu post sobre isso.
Post – Integração contínua em projetos .NET com Hudson
abraços
Tiago