Erro MSB4019 numa Team Build
Numa instancia recém instalada do TFS 2008, onde tudo parecia estar funcionando 100%, encontrei um problema o qual percebi ter pouca referência à respeito.
Criei uma solution de testes para armazenar no Source Control, adicionei projetos, tudo tranqüilo. Depois de tudo, parti para a configuração de um Team Build.
A solução compilava normalmente na máquina client, porém, depois que subi a solução no TFS o team build falhou. Veja a mensagem de erro:
Error MSB4019: The imported project [TargetPath] was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
O erro era vinculado sempre à Web Projects (Web Application, WebService, etc). Isso ocorre porque os targets para aplicações web não estão instaladas no servidor de build.
Existem duas formas de resolver o problema. Uma delas (e a que eu aconselho) é simplesmente instalar o Visual Studio 2008 com as mínimas opções (C# e Visual Web Developer) no servidor de build. O ponto negativo desta solução é que estará consumindo espaço em disco do servidor de build.
A outra opção, se não quiser instalar o VS 2008 no servidor é a seguinte:
- Acesse: MSBuild\Microsoft\VisualStudio\v9.0\WebApplications na máquina client;
- Copie Microsoft.WebApplication.targets para o diretório da solução do projeto;
- Adicione o arquivo como parte da solução e versione-o;
- Edite o arquivo TFSBuild.proj da sua WebApplication usando um editor de texto (normalmente em [TeamProject]/TeamBuildTypes/[SolutionName]Build);
- Encontre a linha que faz o import do WebApplication Target a partir da pasta do MSBuild no Program Files:
<Import Project=”$(MSBuildExtensionsPath)\Microsoft\VisualStudio\TeamBuild\Microsoft.TeamFoundation.Build.targets” />
E substitua por:
<Import Project=”$(SolutionDir)\Microsoft.WebApplication.targets” />
- Salve seu arquivo e suba a nova versão no TFS.
Esta solução nada mais faz do que disponibilizar o arquivo de target dentro da própria solution para que o MSBuild o busque lá dentro. O ponto negativo desta é que para cada solução que você for versionar que tiver um Web Project será necessário versionar uma cópia do arquivo de target no TFS.
Escolher a melhor opção para seu cenário é com você. Experimente!
Um abraço,
Ricardo Serradas
