Как скомпилировать веб-приложение ASP.NET из TeamCity? - PullRequest
5 голосов
/ 11 мая 2011

У меня есть вопрос о предварительной компиляции проектов веб-приложений ASP.NET из TeamCity. Это своего рода дополнительный вопрос к следующей теме:

Как развернуть после сборки с TeamCity?

Я закончил реализацию CI от модульного тестирования до автоматического развертывания с использованием вышеуказанного потока, и теперь я хотел бы дополнить процесс предварительной компиляцией проекта. Проект довольно большой, и я хочу избежать ненужных задержек во времени отклика после нового развертывания.

Итак, есть ли способ сделать это из TeamCity? Как вызвать MSBuild с некоторыми конкретными аргументами?

1 Ответ

3 голосов
/ 27 мая 2011

Конечно, это можно сделать с помощью специального скрипта MSBuild. Вот тот, который мы запускаем для предварительной компиляции нашего веб-сайта ASP.NET MVC 3 (не то, что он действительно зависит от версии ASP.NET).

Сначала он запускает обычную сборку, запуская MSBuild для файла решения, затем запускает этот пользовательский код MSBuild:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  <Import Project="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.Targets"/>

  <PropertyGroup>
    <WebProject>Web\ChatPast.Web\ChatPast.Web.csproj</WebProject>
    <WebProjectFolder>Web\ChatPast.Web</WebProjectFolder>
    <WebPublishFolder>ChatPastWebPublish</WebPublishFolder>
  </PropertyGroup>

  <ItemGroup>
    <ZipFiles Include="$(teamcity_build_workingDir)\src\ChatPast\$(WebPublishFolder)\**\*.*" />
  </ItemGroup>

  <Target Name="Build">
      <!-- Compilation of all projects -->
      <MSBuild Projects="ChatPast.sln" Properties="Configuration=Release"/>

      <!-- Creating web publish folder. -->
      <RemoveDir Directories="$(WebPublishFolder)"/>
      <MakeDir Directories="$(WebPublishFolder)"/>

      <!-- Running ASP.NET publish -->
      <MSBuild Projects="$(WebProject)"
           Targets="ResolveReferences;_CopyWebApplication"
           Properties="Configuration=Release;WebProjectOutputDir=..\..\$(WebPublishFolder);OutDir=..\..\$(WebPublishFolder)\bin\" />

  </Target>
</Project>
...