2012-09-14 39 views
5

私はSlowCheetahを使用して私のapp.configsを変換します。私は、プロジェクトの1つがビルド後のイベントを実行し、ビンの出力が他の場所にコピーされるマルチプロジェクトソリューションを持っています。私はSlowCheetahがポストビルドイベントの後に変換されることを知ったので、コピーしているapp.configは事前変換されたバージョンです。SlowCheetahはビルド後のイベントの後に実行します

誰かがSlowCheetah変換後に私のコピーをどのように実行することができますか?カスタムビルドタスクを作成する必要がありますか?

+0

回避策が見つかりました。エレガントではありませんが、機能します。ダミーのプロジェクトを作成し、プロジェクトの後にビルド後のイベントを作成する依存関係を設定しました。ビルド後のコピーイベントを元のプロジェクトからこの新しいダミープロジェクトに移しました。これは、SlowCheetahがその作業を完了したために機能します。 – ScottC

答えて

4

プロジェクトのビルドにmsbuild 4.0を使用している場合、新しいAfterTargets BeforeTargets属性を使用してslowcheetahターゲットにフックできます。

私は正確にあなたが後にフックしたい名前をターゲットにどのような知らないが、このコードがどのようにこの

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <Target Name="Some_Target_Name" AfterTargets="TransformAllFiles" > 
      <Message Text="= Script here will run after SlowCheetah TransformAllFiles ="/> 
    </Target> 
<Project> 

が編集行うにあなたの基本概念を与えた可能性:私はSlowCheetahをインストールし、AfterTargets属性が「TransformAllFiles」であることを発見しました。 ちょうどあなたのターゲットの依存関係を設定AfterTargets="TransformAllFiles"

2

アレクセイの答えが正解になるが、ここでそれはでいっぱいです:

  • プロジェクトを右クリックし、Unload Project
  • 今すぐプロジェクトを右クリックし選択し、下へEdit [your project name].csproj
  • スクロールを選択し、AfterBuildという名前のターゲットのコメントを解除し、この属性を追加AfterTargets="TransformAllFiles"

例:私もこの問題にぶつかってきた

<Target Name="AfterBuild" AfterTargets="TransformAllFiles"> 
<Exec Command="ECHO Hello PostBuild World!" /> 
</Target> 
0

... SlowCheetahの最新バージョンにアップデートすることを決定した(現在10 Execのコマンドを使用して、このターゲットにアクションを構築するあなたのポストを移動します2.5.8)、この問題は修正されているようです!変換後のXMLを使用してプロジェクトをデプロイするためのポストビルドイベントを使用しても問題は解決しません。

NuGetパッケージのアップグレードプロセスの後、変わった問題はありましたが、変換はもはや起こっていませんでした。 Naeem Sarfrazのようなプロジェクトを編集すると、SlowCheetahのPropertyGroupセクションが.csprojの最後に配置されていることがわかりました。

他のPropertyGroupセクションの上部に移動するだけでしたが、今はそれが魅力的です!

0

ビルド後に他の.configファイル(web.config以外)をコピー/移動する必要がある場合は、ここで公開する前にVisual Studio 2013を使用してください(以前のバージョンではテストしませんでした) 。このセクションは、終了タグ</Project >の直前の.csprojファイルの末尾に追加することができ、MSDeployが公開プロセスを開始する直前に起動されます。

<Target Name="MoveConfigFile" BeforeTargets="MSDeployPublish"> 
    <Move 
     SourceFiles="$(IntermediateOutputPath)Package\PackageTmp\ThirdPartyApp.config" 
     DestinationFolder="$(IntermediateOutputPath)Package\PackageTmp\bin" 
     OverwriteReadOnlyFiles="true" 
    /> 
</Target> 

私は仕事をするために、そのアセンブリと一緒にbinフォルダでの.configファイルを持っている必要が購入したサードパーティ製品のために働いている会社。私たちは、製品の.configファイルを処理し、変換後binフォルダに移動できるようにする必要があり、同時に

$(IntermediateOutputPath)Package \ PackageTmpフォルダには、ターゲットサーバー上にコピーされるアプリケーション全体が含まれています。

関連する問題