15

Visual Studioの拡張機能を作成して、エディターで任意のテキストを選択し、右クリックしてコンテキストメニューを表示し、カスタムメニュー項目をクリックしてテキストに対して何らかのアクションを実行できるようにします。

たとえば、私のカスタムメニュー項目が「Eメール...」と呼ばれているとしましょう。エディターの新しいコンテキストメニューは次のようになります。

Breakpoint
Run to Cursor
Cut
Copy
PasteEmail
...
概要

オプション付きのポップアップ(装飾?)も追加したいのですが。この場合、、、、およびフィールドのようなものである可能性がToありSubjectますCC

これのいくつかは、ポップアップや電子メールを送信するための実際のコードなど、エディター拡張機能を使用してMEFで実行できると思います。VSPackageしかし、コンテキストメニュー項目を追加する必要があるようです。私が読んだものから、私はMEFピースとVSPackage一緒にバンドルすることができます。

これは私が立ち往生しているところです。両方の部分を実装するための詳細を含む詳細なリファレンスが必要ですが、それらを統合する方法に関する情報も必要です。MSDNは私を輪になって回らせています。

私が学ぶことができる良い、しっかりしたサンプルコードまたはドキュメント(本でさえ)はありますか?

4

2 に答える 2

19

1)拡張機能で常にEnvDTEへの参照を作成できます。

m_dte = (EnvDTE.DTE)this.GetService(typeof(EnvDTE.DTE));

2)直接追加するには、拡張パラダイムのメニュー項目。「.VSCT」ファイルを変更するだけです。まず、メニューコマンドをメニューグループで定義します。VSCTファイルでは、グループ定義は次のように生成されます。

<Group guid="guidCodeBlogCmdSet" id="MyMenuGroup" priority="0x0600">
<Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_TOOLS"/>
</Group>

「Eメール」メニューエントリをコンテキストメニューに移動するには、識別子IDM_VS_CTX_CODEWINを使用して、メニューグループの親としてコードウィンドウコンテキストエディタを指定するだけです。

<Group guid="guidCodeBlogCmdSet" id="MyMenuGroup" priority="0x0600">
<Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_CODEWIN"/>
</Group>

この例は、ビジュアルスタジオからコードスニペットを自動ツイートまたはブログする方法に関する優れたチュートリアルに基づいています:http ://solutions.developer.com/ms/web-dev/visual-studio/codeblog-writing-a-blogging -extension-for-visual-studio-2010.html

于 2012-03-18T20:41:39.630 に答える
8

MEF、VSIXファイルなどを処理するという考えを完全に破棄しました。代わりに、はるかに簡単なVisualStudioアドインを使用しました。

Visual Studio .NETIDE内のコンテキストメニューへのメニュー項目の追加VisualStudioアドイン:やや古くてクリーンアップが必要なコンテキストメニューの作成など、さまざまなリソースのコードを組み合わせましたが、正常に機能しました。

于 2011-07-10T20:31:00.417 に答える