現在、ビルドには TFS 2013 を使用し、デプロイには Release Management 2013 を使用して CI ビルドとデプロイを実行していますが、デプロイする Web アプリケーション (WebForms) をプリコンパイルする必要があります。出力がドロップ場所にコピーされる前に、発行プロファイルを使用してプリコンパイルを実行しようとしていますが、まだこれを実行できるものは見つかりませんでした。
WebDeployに保存されたpublishProfileを使用するようにMSBuildを構成するにはどうすればよいですか? VS2013 の開発者コマンド プロンプトを使用して msbuild.exe を使用すると、Web アプリケーションをプリコンパイルする発行プロファイルを 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 と Release Management をリンクするために、ReleaseTfvcTemplate.12.xaml テンプレートを使用しています。
ビルド > プロジェクト:$/Insert_Directory_Here/WebSite.csproj
詳細 > MSBuild 引数:/p:DeployOnBuild=true /p:PublishProfile=TfsPrecompile
MSBuild 引数を使用してビルドを実行すると、プリコンパイル引数を使用しないビルドと比較して、9 分程度のビルドに大きな時間差はありません。MSBuild をローカルで実行すると、TFS 診断ログのいずれにも ASPNETCOMPILER や aspnet_compiler への参照が表示されませんが、ASPNETCOMPILER への参照がスクロールされます。