31

VisualStudioでインテリセンスに追加を書きたいと思っています。

私の調査では、インテリセンス拡張に関するサンプルやドキュメントは見つかりませんでしたが、拡張することは可能ですか。

インテリセンスに次のような単純なHelloWorldメッセージを表示するにはどうすればよいですか(実行時にhello worldがStringのインテリセンスに追加されます)。

ここに画像の説明を入力してください

4

1 に答える 1

34

そのため、Visual Studio 2010以降では、必要な拡張性APIはMicrosoft.VisualStudio.Languages.IntelliSense名前空間の下にあります。ICompletionSourceProvider大まかに言えば、必要なアイテムを提供するMEFエクスポートを行う必要があります。ここここには、基本的なテクニックを示す2つの優れたブログ投稿があります。

スクリーンショットを現実のものにしたい場合に遭遇する2つの問題があります。(これが、ここでのアドバイスが変わるため、シナリオを要求した理由です。)まず、このメソッドでは、既存の完了セットに合法的に追加することはできませんが、新しい完了セットを提供できます。UIでは、これはVisualBasicエディターの[共通]/ [すべて]タブのように、2つのタブとして表示されます。これは現在のAPIの制限です。の既存の完了セットの1つを変更しようとすることもできますAugmentCompletionSourceが、それが機能するかどうかはわかりません。いずれにせよ、それは間違いなくサポートされていません。

第二に、いつどこで物事を推薦するかを知るのは本当に難しいです。あなたの例では、「IntelliSensefor」と言いましたstring。残念ながら、VSには(現在)ドットの前にあるものを通知するAPIはありません。いくつかの単純なヒューリスティックを実行するか、シナリオに適したGoodEnough™であるパー​​サーを実装してみることができますが、完璧な結果が得られないことを今のところ受け入れる必要があります。

Roslynプロジェクトは、2番目の問題を修正することを目的としているため、もう少し詳しく調べると役立つ場合があります。多くの人が完成を延長したいと思うので、他の拡張APIを提供することも考えています。これによりICompletionSourceProvider、最初から作成する必要はありませんが、そのようなAPIは現在のCTPには含まれていません。

[免責事項:私はIntelliSenseに取り組んでいるRoslynチームのメンバーです。]

于 2012-05-10T03:47:51.093 に答える