web-dev-qa-db-ja.com

TFS 2012およびweb.config変換

TFSビルドで、ビルド用に選択した構成に関連付けられたweb.configトランスフォームを作成しようとしています。ビルドを実行するときに、web.configファイルをチェックし、変換が適用されていないことを確認します。 VS2012からパブリッシュすると、変換が正しく機能します。

TFS 2012(Update 2)をセットアップし、ビルド用に別のサーバーを持っています。ビルドサーバーにVS2012をインストールしていませんが、C:\ Program Files(x86)\ MSBuild\Microsoft\VisualStudio\v11.0\WebおよびWebApplicationsフォルダーとファイルを開発マシンからビルドサーバーにコピーしました。

プロジェクトにいくつかの構成を作成し、関連するweb。{configname} .configにいくつかの変換を追加しました。

ビルドを作成し、ビルドする項目-ビルドする構成をプロジェクト内の構成の1つに設定しました。デバッグとリリースしかないことに気づきました。作成した構成はありません。 (サイド質問:それは正しいですか、それとも私が作成したすべての構成を表示する必要がありますか?)

だから私はビルドを実行して出力フォルダーをチェックし、web.configは変換を適用していません。他に必要なことはありますか?

30
Nathan Greenway

/ p:TransformConfigFiles = trueをスローするだけでは、実際には何も実行されません。

このターゲットをプロジェクトファイルに追加する必要もあります。

<Target Name="TransformConfigFiles" AfterTargets="AfterBuild" Condition="'$(TransformConfigFiles)'=='true'">
    <ItemGroup>
        <DeleteAfterBuild Include="$(WebProjectOutputDir)\Web.*.config" />
    </ItemGroup>
    <TransformXml Source="Web.config" Transform="$(ProjectConfigTransformFileName)" Destination="$(WebProjectOutputDir)\Web.config" />
    <Delete Files="@(DeleteAfterBuild)" />
</Target>

これは私のソースです: http://blog.degree.no/2012/03/automatic-config-transformations/

37

「ビルドするアイテム->ビルドする構成」リストに構成の名前を入力できます。

それでも問題が解決しない場合は、次のMSBuild引数を追加してみてください:/ p:TransformConfigFiles = true(3. Advanced-> MSBuild Arguments)

2
mukala

ソリューションファイルを右クリックし、プロパティに移動して、構成プロパティをクリックし、上部にある構成マネージャーをクリックします。異なる環境の構成が正しく設定されていることを確認してください。正しく設定されていない場合は、正しく設定してコードをチェックインしてください。ビルドテンプレートに移動し、プロセスタブでビルドプロパティの構成を確認すると、さまざまな構成を確認できるはずです。構成がすでに正しく設定されている場合は、ビルドプロパティに入力して新しい構成名を追加することもできます。

注:web.config変換ファイルを右クリックしてプレビュー変換を選択し、変換構成が正常に機能していることを確認することもできます。

msbuild引数セクションで正しく機能している場合は、パブリッシュプロファイル名を指定することもできます。

/p:DebugSymbols=false;DebugType=None;DeployOnBuild=true;PublishProfile=Stage
1
suresh2