2011-07-26 15 views
2

私はapp.configで定義されているデータベース接続文字列を使用するコンソールアプリケーションを持っています。ビルド構成に応じて文字列を変更するための変換がいくつかあります。PostBuildEventsの前にapp.config変換タスクを最初に実行するにはどうすればよいですか?

また、app.configを他のプロジェクト出力にコピーするビルド後イベントがあります。 問題はポストビルドイベントが最初に発生し、untransformed app.configがコピーされます。後で変換タスクが始まり、変換が適用されます(私はそれが動作することを知っています)。私はアクションが[1]、[]、[]、I [2]、[1]にそれらを並べ替える必要がある今のVisual Studio 2010および.NET 4

を使用し、 [3]

1)
2)を実行し、変換のビルド
3)を実行し、ビルド後のイベント

ここ

.csproj

<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll" /> 
    <Target Name="Transformation" Condition="exists('app.$(Configuration).config')" > 
    <TransformXml Source="app.config" Destination="$(IntermediateOutputPath)$(TargetFileName).config" Transform="app.$(Configuration).config" /> 
    <ItemGroup> 
     <AppConfigWithTargetPath Remove="app.config" /> 
     <AppConfigWithTargetPath Include="$(IntermediateOutputPath)$(TargetFileName).config"> 
     <TargetPath>$(TargetFileName).config</TargetPath> 
     </AppConfigWithTargetPath> 
    </ItemGroup> 
    </Target> 
から私の変換があります

そして、これは私のビルド後のイベント

<PropertyGroup> 
    <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent> 
    </PropertyGroup> 

<PropertyGroup> 
    <PostBuildEvent>copy $(ProjectDir)app.config $(OutDir)\TH.Presentation.LocalAgent\$(TargetFileName).config 
copy $(ProjectDir)app.config $(OutDir)\TH.Services\$(TargetFileName).config</PostBuildEvent> 
    </PropertyGroup> 

あるすべてのヘルプは大幅にそれらを並べ替える方法がない場合は、あなたがそれらを組み合わせることができ

答えて

1

をいただければ幸いです。ポストビルドイベントの内部(上部)で変換を行います。しかし、(私が知っている)コマンドプロンプトの構文には、いいXML変換メソッドはありません。独自のxmlトランスフォーム実行可能ファイル/バッチファイルを呼び出してファイル名を渡し、パラメータとして名前を変換することができます。

独自のユーティリティを作成したくない場合は、代わりにあなたが変換対象の一部としてそれらをコピーすることができ、ファイルをコピーするために、ポストビルドイベントを使用してのthere

関連する問題