2009-12-02 9 views
2

J'écris un autre outil de couverture de code pour .NET avec l'intégration Visual Studio 2008.
Tout va bien, sauf une chose: je ne trouve pas un moyen de mettre en évidence certains morceaux de code.Mettre en surbrillance le texte du complément Visual Studio 2008

Je l'ai besoin pour informer l'utilisateur sur les blocs couverts et non couverts.
Vous pouvez voir l'exemple de la fonction que je veux sur la capture d'écran suivante (de natif VS jeu d'outils de couverture de code):

Coverage Example

Quelqu'un peut-il me fournir un extrait de code qui met en évidence le texte dans la fenêtre de visualisation de code?
Des liens vers des articles MSDN appropriés liés à VS2008 sont également appréciés!

Merci d'avance.

Répondre

2

J'ai trouvé la réponse, voir le code ci-dessous:

// retrieving IVsTextManager and highlight id 
DTE2 applicationObject = ...; // get it during addin init 
Microsoft.VisualStudio.OLE.Interop.IServiceProvider serviceProvider = (Microsoft.VisualStudio.OLE.Interop.IServiceProvider)applicationObject; 
Guid SID = typeof(SVsTextManager).GUID; 
Guid IID = typeof(IVsTextManager).GUID; 
IntPtr output; 
serviceProvider.QueryService(ref SID, ref IID, out output); 
IVsTextManager textManager = (IVsTextManager)Marshal.GetObjectForIUnknown(output); 
int highlightID; 
Guid highlightGuid = ...; // your highlighted text style guid 
textManager.GetRegisteredMarkerTypeID(ref highlightGuid, out highlightID); 

// highlighting text block in the active view 
IVsTextView view; 
int result = textManager.GetActiveView(0, null, out view); 
IVsTextLines buffer; 
view.GetBuffer(out buffer); 
buffer.CreateLineMarker(highlightID, startLine, startColumn, endLine, endColumn, null, null); 

Plus exemples pourraient être trouvés dans MetaScroll Visual Studio Addin.

+1

A noter que, pour VS2010, les API connexes ont été considérablement retravaillés (anciens sont disponibles pour Stil back-compat, mais de nouveaux sont beaucoup plus faciles à utiliser). –

+0

Merci pour l'indice, je vais jeter un oeil aux nouvelles API après la mise à niveau vers VS2010. – Rageous

+0

C'est très bien et utile. J'écris aussi un plugin pour l'analyseur statique pour VS 2010 et je dois faire la même chose avec mon plugin pour mettre en évidence mon code avec erreur. S'il vous plaît, je ne comprends pas ce que je devrais écrire dans Guid highlightGuid = ...; // votre style de texte en surbrillance guid DTE2 applicationObject = ...; // l'obtenir pendant addin init pouvez-vous écrire en détail s'il vous plaît !! Encore une fois je suis nouveau pour C# c'est pourquoi le problème à comprendre totalement !! Merci comme avance –

Questions connexes