Frage

Ich experimentiere mit einer Visual Studio 2010-Erweiterung, wo ich mit den Ereignissen von IMouseProcessor ausgesetzt Arbeit benötigen.

Soweit ich aus dem docs sagen kann, soll ich eine IMouseProcessorProvider erstellen und exportiert MEF verwendet, so dass es automatisch von Visual Studio aufgenommen werden kann.

ich diese Klasse erstellt:

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

Wenn ich die experimentelle Instanz von Visual Studio ausführen, ist meine Erweiterung sichtbar in den Erweiterungsmanager. Aber meine benutzerdefinierten Maus-Prozessor-Provider genannt werden nie zu werden. Bin ich etwas fehlt / Was mache ich falsch?

Andere Tipps

Es dauerte eine Weile, die komplette Lösung für dieses Problem zu finden, so dass ich die komplette Lösung hier posten werden:

  1. Wie 280Z28 vorgeschlagen, gibt es einen Fehler in dem SDK für Beta 2. Sie bearbeiten müssen die CSPROJ manuell, um sicherzustellen, dass die Assembly in der generierten VSIX-Datei enthalten ist.
  2. Wie JaredPar beantwortet, sollte die TextViewRole attribtute zum IMouseProcessorProvider Implementierung hinzugefügt werden.
  3. Schließlich sollte die IMouseProcessorProvider auch mit einem Namen-Attribut versehen werden.

Alles in allem dieser Code funktioniert:

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

Ich glaube, Sie brauchen auch ein TextViewRole Attribut hinzuzufügen.

[TextViewRole(PredefinedTextViewRoles.Editable)]
scroll top