5

Visual Studio 2010拡張機能を試しています。ここでは、IMouseProcessorによって公開されたイベントを操作する必要があります。

ドキュメントからわかる限り、IMouseProcessorProviderを作成し、エクスポートでMEFを使用して、VisualStudioで自動的に取得できるようにする必要があります。

私はこのクラスを作成しました:

[Export(typeof(IMouseProcessorProvider))]
[ContentType("code")]
internal sealed class MouseProcessorFactory : IMouseProcessorProvider
{        
    public IMouseProcessor GetAssociatedProcessor(IWpfTextView wpfTextView)
    {
        return new MouseProcessor();
    }
}

Visual Studioの実験的なインスタンスを実行すると、拡張機能が拡張機能マネージャーに表示されます。しかし、私のカスタムマウスプロセッサプロバイダーが呼び出されることはありません。私は何かが欠けていますか/私は何が間違っていますか?

4

3 に答える 3

5

この(私のものではない)サイトから直接取得:

Visual Studio 2010 UMLデザイナーの拡張–パート1:はじめに

VSSDKBeta2のバグの回避策

残念ながら、現在のVSSDK Beta 2には、回避しなければならないバグがいくつかあります。アップデートリリースで修正されると言われていますが、それまでは、この作業を行うために必要なプロジェクトのクリーンアップについて説明します。

ステップ1-.csprojファイルを微調整します

  1. プロジェクトを右クリックして、[プロジェクトのアンロード]を選択します。
  2. プロジェクトをもう一度右クリックして、[プロジェクト名.csprojの編集]を選択します
  3. 最上位のプロパティグループで、XMLタグを探します<IncludeAssemblyInVSIXContainer>。falseに設定されます。trueに変更します。
  4. .csprojファイルを保存し、VisualStudioに再読み込みします。

ステップ2–.vsixmanifestファイルを微調整します

  1. ファイル「source.extension.vsixmanifest」を右クリックして、「コードの表示」を選択します
  2. と呼ばれるセクションのファイルの下部に、次の行を追加します。(はい、それらの垂直バーは重要です。)

    <MefComponent>|Yourprojectname|</MefComponent>

  3. ファイルを保存して閉じます。

于 2009-11-24T00:41:12.960 に答える
3

この問題の完全な解決策を見つけるのに時間がかかったので、ここに完全な解決策を投稿します。

  1. 280Z28で提案されているように、SDK for Beta 2にはバグがあります。アセンブリが生成されたVSIXファイルに含まれるようにするには、.csprojを手動で編集する必要があります。
  2. JaredParが回答したように、TextViewRole属性をIMouseProcessorProvider実装に追加する必要があります。
  3. 最後に、IMouseProcessorProviderもName属性で装飾する必要があります。

全体として、このコードは機能します。

[Export(typeof(IMouseProcessorProvider))]
[ContentType("code")]
[TextViewRole(PredefinedTextViewRoles.Editable)]
[Name("mouseproc")]
internal sealed class MouseProcessorFactory : IMouseProcessorProvider
{        
    public IMouseProcessor GetAssociatedProcessor(IWpfTextView wpfTextView)
    {            
        return new MouseProcessor();
    }
}
于 2009-11-24T15:47:47.517 に答える
2

TextViewRole属性も追加する必要があると思います。

[TextViewRole(PredefinedTextViewRoles.Editable)]
于 2009-11-22T14:28:28.917 に答える