CI サーバー上の Visual Studio Web プロジェクトで XML 構成ファイルを変換するために、SlowCheetah を使用しています。Visual Studio 2010 では、発行時に XML は問題なく変換されますが、CI サーバーでは変換が行われません。代わりに、元の変換されていない構成ファイルを取得するだけです。Sayed Ibrahim のブログで提供されている指示に従いました。彼は、SlowCheetah dll とターゲット ファイルをソリューションに追加し、それらのファイルを使用するようにプロジェクト ファイルをポイントするように説明しています。この変更を行い、Visual Studio で公開して、機能することを確認しました。しかし、CI サーバーでプロジェクトをビルドすると、以前と同じ問題が発生します。
CI サーバーでプロジェクトをビルドするために使用している MSBuild スクリプトと関係があると思います。プロジェクトに SlowCheetah を使用するように指示するには、これに何かを追加する必要がありますか? 私のビルドスクリプトは次のとおりです。
<Project DefaultTargets="DoPublish"
xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<SourceFileRootFolder>$(CCNetWorkingDirectory)\Code</SourceFileRootFolder>
<WebFolder>DCSIWeb\DCSIWeb</WebFolder>
<ReleaseFolder>C:\Builds\BuildFolder</ReleaseFolder>
</PropertyGroup>
<PropertyGroup Condition ="$(CCNetWorkingDirectory) == ''">
<SourceFileRootFolder>C:\Builds\ProjectWorkingDirectory\Code</SourceFileRootFolder>
<ReleaseFolder>C:\Builds\BuildFolder</ReleaseFolder>
</PropertyGroup>
<Target Name="CleanSource">
<Message Text="Removing all source files from $(ReleaseFolder)" />
<RemoveDir Directories="$(ReleaseFolder)" />
</Target>
<Target Name="DoPublish">
<CallTarget Targets="CleanSource"/>
<MSBuild Projects="$(SourceFileRootFolder)\DCSIWeb.sln" Targets="Clean;Build" />
<MSBuild Projects="$(SourceFileRootFolder)\$(WebFolder)\DCSIWeb.csproj"
Targets="_CopyWebApplication;_BuiltWebOutputGroupOutput;TransformWebConfig"
Properties="OutDir=$(ReleaseFolder)\" ></MSBuild>
</Target>
MSBuild スクリプトは、基本的にプロジェクトをビルドし、プロジェクトを "c:\Builds\BuildFolder" に配置します。ビルドが完了した後にビルド フォルダーを見ると、必要な .config ファイルが表示されますが、変換は行われていません。以前と同じファイルです。