TeamCity ist ein sehr nette Build- & CI-Lösung. Wenn man allerdings ein Web Application Project in seiner Solution hat (z.B. ein ASP.NET MVC Projekt), wird es wahrscheinlich erstmal nicht bauen, weil ein MSBuild "Target" nicht ausgeführt wird. Mit einem kleinen Trick geht auch dies.
.csproj - MSBuild
Wer mal ein Blick in eine Projektdatei geworfen hat, wird feststellen, dass dies eine XML Datei ist. Was man vor sich sieht ist MSBuild. Dort stehen für das bauen verschiedenste Anweisungen drin.
Web Application Projects
Wenn man ein "Web Application Project" hat, z.B. eine ASP.NET MVC Anwendung oder eine andere ASP.NET Anwendung, dann wird u.a. automatisch ein "Target" in der Projektdatei verlinkt:
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v9.0\WebApplications\Microsoft.WebApplication.targets" />
TeamCity / Build Server + Web Application Projects
Wenn man diese Projektdatei nun mit bei einem Build Server nutzen kann, muss dieses target auch auf dem Build Server vorhanden sein. Dazu muss man zwei Datein von dem Entwicklerrechner auch auf dem Build Server kopieren:
- Microsoft.WebApplication.Build.Tasks.Dll
- Microsoft.WebApplication.targets </ul>
Beide befinden sich (standardmäßig) unter diesem Pfad:
C:\Program Files\MSBuild\Microsoft\VisualStudio\v9.0\WebApplications
Damit nun auch das bauen mit dieser Projektdatei klappt, muss derselbe Pfad mit den beiden Datein auch auf den Build Server vorhanden sein.