1

拡張機能からさまざまな Visual Studio コマンドまたは機能をインターセプトまたは無効にすることが可能かどうか疑問に思っていましたか?

たとえば、ユーザーが [ファイル] -> [開く] コマンドにアクセスできないようにできますか? いくつかのコーディング標準を強制するのに役立つ拡張機能に取り組もうとしています。その一環として、ユーザーが実行しようとしたときにいくつかの異なることを無効にするか傍受したいと考えています。たとえば、プロジェクトのプロパティなどを編集する機能を無効にして、ユーザーがローカルの変更をチェックインしてビルドを壊したり、他のチーム メンバーを混乱させたりするのを防ぐことができます。

このためのフックが Extension API に存在するのでしょうか?それとも、古い Word 文書が使い物にならないように頼んでいるのでしょうか?

4

1 に答える 1

2

できますが、詳細を説明する前に、グレッグのコメントをエコーし​​たいと思います。モグラたたきをしてコマンドを無効にするよりも、開発者が「悪い問題」を見つけるために実行できる本当に素晴らしいツールを作成することに時間を費やしたほうがよいでしょう。同じ「悪い」ことをする可能性のあるコマンドが複数あることが多いため、コマンドを無効にすると危険な場合があります。また、無効にすると、VSの他の部分が不安定になる可能性があります。プロジェクトプロパティの例を使用して、コードベース全体で実行され、「不良」なプロジェクトファイルを探し、ビルド警告を出力するツールを作成します。開発者がビルドをヒットするたびにこれを実行します。そうすれば、拡張機能がインストールされていることを確認しなくても、ほぼリアルタイムのフィードバックを得ることができます。(さらに、そのツールをコードベースにチェックインして、全員が同期されていることを確認できます)

そうは言っても、ここではIVsRegisterPriorityCommandTargetを実装することが正しいオプションかもしれません。パフォーマンスへの影響は重大である可能性があるため、実装が高速であることを確認する必要があります。そうしないと、VSの速度が低下します。ハンドラーからE_NOTSUPPORTEDを返すと、通常のルーティングになります。S_OKを返すが転送しないと、ルーティングがブロックされます。

于 2012-12-12T21:49:30.897 に答える