2016-10-24 4 views
0

私はmsbuildを使って作業しているビルドタスクを持っています。 タスク内にはいくつかのターゲットがあり、そのうちのいくつかは準備作業を実行します。複数のDependsOnTargetsが実行されない

"msbuild myEvent.msbuild/t:event3"を実行すると、イベントが実行されます。 DependsOnTargetsの最初のイベントは実行されますが、ターゲットのリストの2番目のイベントは実行されません。 例

<!-- only event1 will fire --> 
<Target Name="event3" DependsOnTargets="event1; event2"> 
    <Task TaskAction="myAction3"/> 
</Target> 
<Target Name="event1" DependsOnTargets="event4"> 
    ... do tasks here 
</Target> 
<Target Name="event2" > 
    ... do tasks here 
</Target> 
<Target Name="event4" > 
</Target> 

私はDependsOnTargets値にスペースを排除することによって、これを変更しようと試みてきました。セミコロンで区切られた値があることを確認します。 BeforeTargetsとAfterTargetsを成功させずに使ってみました。

私のmsbuildコードは、ToolsVersion 4.0を対象としています。

DependsOnTargetsの仕組みに欠けているものがありますか?

EDIT

  • は、私は私の問題を考え出したと思います。 MSBuildでは、同じターゲットを複数回実行することはできません。この場合
  • は私が
  • は、zipファイル
  • からいくつかのデータベースファイルを解凍サービス
  • を停止するデータベースサービスを開始し、データベースサービスに
  • ドロップデータベースを開始
    • 次の操作を行う必要があり
    • アタッチデータベース
    • データベースに対してさらに処理を実行...
  • 最初の開始データベースサービスは、データベースを削除してサービスを停止するだけでなく、実行されます。データベースサービスを開始する次の呼び出しは失敗します。
+0

もう少し考えてみたら、私はその問題を知っていると思います。問題は、私の一連の出来事では、私は複数のイベントの1つを呼び出すということです。イベントは既に1回実行されているため、イベントは再び呼び出されません。私の場合は、サービスを開始し、アクションを実行し、サービスを停止し、サービスが停止している間に別のアクションを実行してから、サービスを再開して別のアクションを実行する必要があります。 :) –

+0

私は繰り返しコードを減らすために、タスクのようなターゲットを利用しようとしています。ターゲットは一度だけ実行され、一度表示されます。 –

+0

はい、ビルド中の後続ターゲットがそれに依存する場合でも、ターゲットは1回のビルド中に2回実行されることはありません。ターゲットが実行されると、ビルドへの貢献が完了します。元の問題が解決されてから、24時間後に回答を投稿してマークすることができます。 –

答えて

0

問題は、タスクのようにターゲットを扱っていたためでした。私は重複したコードを減らそうとしていました。

ターゲットが実行されると、再び実行されません。だからここでの持ち帰りは、何が目標であり、何が仕事であるかを明確にすることです。

私は現在、タスクとなるターゲットを削除し、サービスの開始や停止などの必要なタスクを正しいターゲット内に作成することで、この問題を解決しました。

関連する問題