私がやろうとしていることの高レベルの概要を説明することから始めた方がよいでしょう (念のため、私がこれをひどく間違っている場合に備えて): TFS には、「優先度」フィールドを含む「ストーリー」ワークアイテムがあります。常に 20 ~ 30 の優先度の高いストーリーがあります。例として、完全に優先順位の付けられた 20 のストーリー (1 から 20) があり、新しい最優先事項となる新しいストーリーを作成したいとします。そのため、優先度を 1 に設定し、他のすべてのストーリーの優先度を更新するサーバー側プラグインを用意して、最終的に 1 から 21 になるようにしたいと考えています (1 は新しいストーリーです)。作成したばかりです)。
このために、WorkItemChangedEvent をサブスクライブする TFS 2010 用のサーバー側プラグインを作成しました。優先度が更新されたかどうかを判断するのに十分なほどスマートであるため、この場合は作業項目のみを変更します。私が遭遇する問題は、優先度を変更して WorkItem.Save() を実行すると、WorkItemChangedEvent が再びトリガーされ、優先度が変更されたため、ロジックが true になり、再び更新および保存されることです。
以前、datetime フィールドの 1 つの時刻を 00:00:00 に更新するサーバー側プラグインを作成し (まだ 00:00:00 になっていない場合)、この動作に気付きました。時間がすでに 00:00:00 であるため、2 回目の実行では何も起こらないため、それほど大きな問題ではありませんでした。しかし、一連の作業項目全体の優先度を更新しようとするこの場合、それは取引を破るものです。WorkItem.Save() が WorkItemChangedEvent をトリガーするのを止める方法はありますか? たぶん、これを完全に行う別の方法はありますか?