如何从TeamCity预编译ASP.NET Web应用程序?

时间:2011-05-11 07:39:02

标签: asp.net deployment continuous-integration compilation teamcity

我有一个关于从TeamCity预编译ASP.NET Web应用程序项目的问题。这是对以下主题的后续问题:

How to deploy after a build with TeamCity?

我已经完成了使用上述线程从单元测试到自动部署的CI,现在我想通过预编译项目来补充这个过程。该项目相当大,我希望在新部署后避免任何不必要的响应时间延迟。

那么,有没有办法从TeamCity做到这一点?就像用一些特定的参数调用MSBuild一样?

1 个答案:

答案 0 :(得分:3)

当然,可以使用自定义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>