В настоящее время я запускаю сборку и развертывание CI с использованием TFS 2013 для сборки и Release Management 2013 для развертывания, хотя мне нужны веб-приложения (WebForms), которые я развертываю, для предварительной компиляции. Я хочу использовать профиль публикации для управления предварительной компиляцией до того, как выходные данные будут скопированы в место размещения, но я еще не нашел ничего, что могло бы это сделать.
Найдя как мне настроить MSBuild для использовать сохраненный publishProfile для WebDeploy? , я настроил профиль публикации в своем веб-приложении, который будет предварительно компилировать веб-приложение, если я использую msbuild.exe с помощью командной строки разработчика для VS2013.
msbuild.exe WebSite.csproj /p:DeployOnBuild=true /p:PublishProfile=TfsPrecompile
Профиль публикации с именем TfsPrecompile с некоторой помощью https://stackoverflow.com/a/13267694/595473
<?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, хотя я не вижу ссылок на ASPNETCOMPILER или aspnet_compiler ни в одном из журналов диагностики TFS.
/flp:verbosity=diagnostic /p:VisualStudioVersion=12.0 /p:DeployOnBuild=true /p:PublishProfile=TfsPrecompile
в аргументах Build›Advanced›MSBuild, хотя я не заметил никакой разницы в файлах на сервере сборки или в месте размещения. Файлы журнала имеют тот же размер, что и раньше, и кажется, что все сборки теперь регистрируются на уровне диагностики в 2013 году. В файле WebSite.log я вижу DeployOnBuild = true и PublishProfile = TfsPrecompile в разделе 1>Project C: \Builds\1\DIRECTORY\WebSite.csproj на узле 1 (цели по умолчанию). - person CosworthTC   schedule 23.11.2014