Question

J'expérimente avec une extension Visual Studio 2010, où je dois travailler avec les événements exposés par IMouseProcessor.

Pour autant que je peux dire à partir des documents, je créer un IMouseProcessorProvider et à l'exportation est en utilisant MEF, de sorte qu'il peut être automatiquement repris par Visual Studio.

J'ai créé cette classe:

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

Quand je lance l'instance expérimentale de Visual Studio, mon extension est visible dans le gestionnaire d'extension. Mais mon habitude fournisseur de traitement de la souris est jamais appelé. Est-ce que je manque quelque chose / Qu'est-ce que je fais mal?

Autres conseils

Il m'a fallu un certain temps pour trouver la solution complète à ce problème, donc je vais poster la solution complète ici:

  1. Comme le suggère 280Z28, il y a un bogue dans le SDK pour Beta 2. Vous devez modifier le .csproj manuellement pour vous assurer que votre ensemble est inclus dans le fichier VSIX généré.
  2. Comme réponse JaredPar, le attribtute TextViewRole devrait être ajouté à la mise en œuvre de IMouseProcessorProvider.
  3. Enfin, le IMouseProcessorProvider devrait également être décorée avec un attribut Name.

Dans l'ensemble, ce code fonctionne:

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

Je crois que vous devez ajouter un attribut TextViewRole ainsi.

[TextViewRole(PredefinedTextViewRoles.Editable)]
scroll top