Fazendo o TeamCity construir soluções da Web ASP.net MVC 3+

Atualmente estou integrando CI em nosso processo de desenvolvimento e implantação. Aqui está um problema que encontrei:

Eu estava acompanhando as informações coletadas abundantemente no Blog Troy Hunts quando de repente ocorreu um erro:

error MSB4019: The imported project "C:Program Files (x86)MSBuildMicrosoftVisualStudiov11.0WebApplicationsMicrosoft.WebApplication.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.

TeamCity está tentando me dizer que eu não tenho o Visual Studio 2012 Web Application Support instalado. Infelizmente, não vou fazer isso, principalmente por causa de problemas de licenciamento.

Mas existe uma solução fácil para isso. Instale o pacote MSBuild.Microsoft.VisualStudio.Web.targets em sua solução e substitua a referência antiga:

<Import Project="$(VSToolsPath)WebApplicationsMicrosoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
<Import Project="$(MSBuildExtensionsPath32)MicrosoftVisualStudiov10.0WebApplicationsMicrosoft.WebApplication.targets" Condition="false" />

Com este novo, que usaria o pacote instalado do NuGet:

<Import Project="..packagesMSBuild.Microsoft.VisualStudio.Web.targets.11.0.2.1toolsVSToolsPathWebApplicationsMicrosoft.WebApplication.targets" Condition="true" />

Espero que isto ajude.

EDIT: Acabei de ter a mesma coisa de novo hoje e percebi que esqueci de mencionar que tudo isso é bom e bom, mas você precisa fornecer um ApplicationPool e SiteName como um ‘DeployIisAppPath’ também, assim:

<DeployIisAppPath>AppPool/SiteName</DeployIisAppPath>

Você deve colocá-lo no grupo de propriedades de configurações do projeto. Para mim, é sempre a segunda ou terceira tag xml do grupo de propriedades (Depurar / Liberar), é semelhante a esta:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">

Saudações,
Kjellski