我有一个关于从TeamCity预编译ASP.NET Web应用程序项目的问题。这是对以下主题的后续问题:
How to deploy after a build with TeamCity?
我已经完成了使用上述线程从单元测试到自动部署的CI,现在我想通过预编译项目来补充这个过程。该项目相当大,我希望在新部署后避免任何不必要的响应时间延迟。
那么,有没有办法从TeamCity做到这一点?就像用一些特定的参数调用MSBuild一样?
答案 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>