5

プロジェクト内の一連の構成ファイルをXML変換するためにSlowCheetahを使用しています。

ただし、この同じソリューションは負荷分散セットアップの一部であり、いくつかの構成値が異なるサーバー (この場合は 2 つ) 間で異なります。

次のビルド構成があります

  • デバッグ
  • リリース
  • リリース.テスト
  • Release.Prod1
  • Release.Prod2

Release.Prod1 と Release.Prod2 のほとんどすべてが同一ですが、構成ファイルの 1 つの値がいくつか異なります。2 つの同一のファイル (および)Something.Release.Prod.Configを使用する代わりに、これらのビルド構成の両方で使用するようなファイルを作成する方法はありますか?Something.Release.Prod1.ConfigSomething.Release.Prod2.Config

...さらに詳しく説明すると、この場合、2 つの環境に展開しているため、1 つの重複ファイルは実際には大きな危機ではありません。10 台または 100 台のサーバーがある場合はどうなりますか? そのような環境ではよりカスタマイズされたセットアップが一般的であると思いますが、CIサーバー(この場合は具体的にはTeamCity)を使用したセットアップでこれを実行できない理由はわかりません。

これは通常どのように処理されますか?

実際の変換が行われる前に、ビルド手順としてファイルを魔法のようにコピーできると思いますが、これは面倒で非常に複雑な解決策のようです。

4

1 に答える 1

1

構成の変換は、TransformsFiles.targets ファイルの $(Configuration) 変数によって処理されます。

 <TransformXml Source="@(_FilesToTransformNotAppConfig->'%(FullPath)')"
                  Transform="%(RelativeDir)%(Filename).$(Configuration)%(Extension)"
                  Destination="@(_FilesToTransformNotAppConfig->'$(OutDir)%(RelativeDir)%(Filename)%(Extension)')"
                  Condition=" Exists('%(RelativeDir)%(Filename).$(Configuration)%(Extension)') " />

ここで、$(Configuration) を「環境」などの他の値に変更できます。次に、MSBuild 引数に「環境」変数を設定するだけです -

/p:Environment=Prod

これにより、ビルド設定を保持し、変換を個別に実行できるようになります。

于 2013-02-08T22:44:01.323 に答える