1

拡張する方法、つまり、Visual Studio のエンティティ デザイナーに機能を追加する方法を知っている人はいますか?

たとえば、デザイナーでエンティティのプロパティを右クリックし、コンテキスト メニューに新しいオプションを表示して、必要なことを何でも実行できるようにしたいと考えています。

4

1 に答える 1

2

VS 2008 SP1 のエンティティ デザイナーには、多くの拡張性フックがありません。あなたができることは、Visual Studio 拡張機能 (VSIP、現在は VSX として知られています) を活用することです。

  1. 独自のコンテキスト メニューに追加する
  2. IVsMonitorSelection を使用して現在の選択を取得します。そこから ISelectionContainer を取得できます。
  3. ユーザーがダイアグラム サーフェスを選択した場合は、ISelectionContainer を DiagramDocView としてキャストできます。これは、エンティティ デザイナーがそのデザイナー サーフェイスに使用するフレームワークである「DSL」の一部です。
  4. ここから、DiagramDocView 内で多くのことを行うことができます。DiagramDocView.CurrentDiagram は、Diagramオブジェクトを提供します。Diagram.NestedChildShapes を呼び出して、ダイアグラム内のすべての図形を取得できます。ダイアグラムを変更するには、DSL トランザクションを作成し、トランザクション内の図形を編集する必要があります。これはエンティティ デザイナーの 1 つ上のレベルに過ぎず、すべてが正しく処理されます。

    using (Transaction tx = store.TransactionManager.BeginTransaction(txText))
    {
       // do something, such as creating an EntityTypeShape;
       tx.Commit();
    }
    

VS 2010 のエンティティ デザイナーには、プロパティ ウィンドウまたはウィザードを介してモデルに影響を与えることができるように、より多くの拡張性フックが用意されています。新しい「Model First」機能の新しい拡張機能により、基本的に、Visual Studio 内のモデルから構成可能な方法であらゆるものを生成できます。

于 2009-09-30T03:50:07.530 に答える