1

私は拡張機能で VS 拡張機能を作成するのが初めてで、糸の 3 つのボールのもつれをほどくなどの主題に関する情報を見つけます。私はMSDNサイトでかなりのことを読んだだけでなく、多くの失敗したGoogle検索も行いました。

私の目標は、Visual Studio 拡張機能 (MEF と MPF を使用) を作成して、サード パーティによって作成された言語のサポートを改善することです。サードパーティには、デバッグと最小限の Intellisense をサポートし、色付けを提供する VS 拡張機能が既にあります。デバッグ サポートを失いたくはありませんが、エクスペリエンスの他のすべての側面を改善したいと考えています。

私の理解では、特定の言語 (コンテンツ タイプ) は、1 つの LanguageService および/または MEF (カラー化、インテリセンスなど) を介した一連のエディター サービスによってのみサポートされます。これは正しいです?既存の Intellisense を置き換えて、他の機能を追加することは可能ですか?

4

1 に答える 1

0

はい、少し努力すれば、言語サービスの登録をバイパスして、同じファイル拡張子に対して独自の言語サービスを登録できます。言語サービスは、デバッグ エンジンからほとんど独立しています (設計時のブレークポイントの配置などのいくつかの小さなことが言語サービス オブジェクトの一部を通過するため、ほとんどとは言えませんが、それほど重要ではありません)。

彼らの言語サービスをあなたの言語サービスに完全に置き換えることをお勧めします。これは、特にソースにアクセスして変更を加えずに、言語サービスを壊さずに拡張しようとするよりもはるかに簡単です。

ほとんどの登録は、たとえばHKCU\Software\Microsoft\VisualStudio\14.0_Config\. これはMEF コンポーネントには当てはまりませんが、MEF コンポーネントは、言語サービスによって定義されるコンテンツ タイプによってフィルター処理される傾向があるため、言語サービスで別のコンテンツ タイプを定義し、コンテンツをバインドする限り問題ありません。それ。

同じファイル拡張子の言語サービスを登録できますが、優先度が高くなります (ProvideEditorExtension言語サービス パッケージの属性を使用)。その後は、すべて言語サービス次第であり、言語サービスが邪魔になることを心配する必要はありません (それが独自のものではないコンテンツ タイプで動作する限り、そうあるべきです)。

最後に、頑張ってください!(優れた) 言語サービスをゼロから作成するのは、長い道のりになる可能性があります :-)

于 2016-07-28T20:59:42.617 に答える