我目前正在运行 CI 构建和部署,使用 TFS 2013 进行构建,使用 Release Management 2013 进行部署,但我需要对我正在部署的 Web 应用程序 (WebForms) 进行预编译。我希望在将输出复制到放置位置之前使用发布配置文件来驱动预编译,但我还没有找到任何能够做到这一点的东西。
在找到如何配置 MSBuild 以使用已保存的 publishProfile 进行 WebDeploy 之后?,我在我的 Web 应用程序中设置了一个发布配置文件,如果我使用 msbuild.exe 使用 VS2013 的开发人员命令提示符,它将预编译 Web 应用程序
msbuild.exe WebSite.csproj /p:DeployOnBuild=true /p:PublishProfile=TfsPrecompile
在https://stackoverflow.com/a/13267694/595473的帮助下发布名为 TfsPrecompile 的配置文件
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<WebPublishMethod>FileSystem</WebPublishMethod>
<LastUsedBuildConfiguration>Debug</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<SiteUrlToLaunchAfterPublish />
<ExcludeApp_Data>False</ExcludeApp_Data>
<PublishUrl>$(MSBuildProjectDirectory)\PublishDirectory</PublishUrl>
<DeleteExistingFiles>True</DeleteExistingFiles>
<PrecompileBeforePublish>True</PrecompileBeforePublish>
<EnableUpdateable>False</EnableUpdateable>
<DebugSymbols>False</DebugSymbols>
<WDPMergeOption>DonotMerge</WDPMergeOption>
</PropertyGroup>
</Project>
在本地运行 MSBuild,我最终将预编译的站点放在了一个新PublishDirectory
文件夹中,一切似乎都进行得很顺利。
为了链接 TFS 和发布管理,我使用了 ReleaseTfvcTemplate.12.xaml 模板。
构建 > 项目:$/Insert_Directory_Here/WebSite.csproj
高级 > MSBuild 参数:/p:DeployOnBuild=true /p:PublishProfile=TfsPrecompile
当我使用 MSBuild 参数运行构建时,与没有预编译参数的构建相比,九分钟左右的构建没有明显的时间差异。当我在本地运行 MSBuild 时,我看到对 ASPNETCOMPILER 的引用滚动,但我在任何 TFS 诊断日志中都没有看到对 ASPNETCOMPILER 或 aspnet_compiler 的引用。