我有一个关于从 TeamCity 预编译 ASP.NET Web 应用程序项目的问题。这是以下线程的后续问题:
How to deploy after a build with TeamCity?
我已经使用上述线程完成了从单元测试到自动部署的 CI 实现,现在我想通过预编译项目来补充这个过程。该项目相当大,我想避免新部署后响应时间出现任何不必要的延迟。
那么,有没有办法从 TeamCity 做到这一点?喜欢用一些特定的参数调用 MSBuild?
最佳答案
当然,它可以通过自定义 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>
关于asp.net - 如何从 TeamCity 预编译 ASP.NET Web 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5960817/