9

En essayant de développer mon premier VS Addin, je rencontre des problèmes lors du déclenchement d'événements DTE2.Les événements DTE2 ne se déclenchent pas

Fondamentalement, les événements DocumentOpened et LineChanged ne se déclenchent pas pour une raison quelconque. Quelle partie importante ai-je manqué?

namespace TestAddin { 
    public class Connect : IDTExtensibility2 { 
    private AddIn _addInInstance; 
    private DTE2 _applicationObject; 

    public void OnConnection(object application, ext_ConnectMode connectMode, object addInInst, ref Array custom) { 
     _applicationObject = (DTE2) application; 
     _addInInstance = (AddIn) addInInst; 

     _applicationObject.Events.DocumentEvents.DocumentOpened += InitializeFoldingOnDocument; 
     _applicationObject.Events.TextEditorEvents.LineChanged += UpdateFoldingOnDocument; 
    } 

    private void UpdateFoldingOnDocument(TextPoint startpoint, TextPoint endpoint, int hint) { 
     RegionFolding(_applicationObject.ActiveDocument); 
    } 

    private void InitializeFoldingOnDocument(Document document) { 
     RegionFolding(document); 
    } 

    private void RegionFolding(Document _document) { 
     // Do the folding [...] 
    } 

    // Other IDTExtensibility2 Members [...] 
    } 
} 

Répondre

20

Vous devez enregistrer la classe DocumentEvents. Je pense qu'ils seront déposés ou que les ordures seront collectées ailleurs.

Dans mon cas.

+0

Voilà, merci! – fjdumont

+1

Etre un développeur VSX novice ici, celui-ci m'a fait du bien. Si quelqu'un est intéressé, voici l'article du problème de Microsoft KB sur le sujet: http://support.microsoft.com/kb/555430 –

+0

Je ne sais pas comment vous avez compris cela, mais c'est génial! –

0

J'ai trouvé une solution différente à ce problème.

Je boxais et déballais mon objet DTE avant de faire mes abonnements aux événements. Cela a finalement prouvé le coupable pour moi. Même si ce n'était pas votre problème, cela pourrait aider d'autres personnes qui ont des problèmes similaires; et il est bon de savoir que vous ne faites pas les mêmes erreurs que j'ai faites qui ont pris énormément de temps à résoudre.

Voir ici: http://social.msdn.microsoft.com/Forums/en-US/vsx/thread/eb1e8fd1-32ad-498c-98e9-25ee3da71004

Questions connexes