5

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 ファイルが表示されますが、変換は行われていません。以前と同じファイルです。

4

2 に答える 2

1

バージョン 2.5.10 で試してください。プロジェクトに .targets ファイルを追加するように SlowCheetah を変更しました。追加の設定は必要ありません。詳細については、https://github.com/sayedihashimi/slow-cheetah/issues/113を参照してください。

于 2013-10-20T22:42:12.533 に答える
0

私はいつもそのような答えが嫌いですが、ConfigTransformationToolを使用することをお勧めします。これはXdt変換を使用する別のツールですが、Cheetahよりもはるかに単純で、少し賢く(パラメーターをサポート)、深刻なMSBuildタスクです。ソリューションに保存することも、NuGetパッケージを介してCIサーバーに自動的に復元することもできます。必要なのは、paramsを使用してユーティリティを呼び出すことだけです。が作成されて以来、私はXdtのファンであり、このツールが私のプロジェクトで最も使いやすいと感じました。

于 2012-11-23T15:14:47.957 に答える