2012-05-15 14 views
7

Sono script in VisualStudio e sto cercando di ottenere il contenuto di ActiveDocument attualmente.In VisualStudio DTE, come ottenere i contenuti di ActiveDocument?

Questa è la mia soluzione attuale:

var visualStudio = new API_VisualStudio_2010(); 

var vsDTE = visualStudio.VsAddIn.VS_Dte; 

var document = (Document)vsDTE.ActiveDocument; 
var textDocument = (TextDocument)document.Object("TextDocument"); 

var editPoint = textDocument.StartPoint.CreateEditPoint(); 
var text = editPoint.GetText(textDocument.EndPoint.CreateEditPoint()); 

panel.clear().add_SourceCodeViewer() 
    .set_Text(text, document.FullName.extension()); 

È questo il modo migliore?

ho avuto la soluzione da: Because ActiveDocument.Text() Would Be Too Easy...

risposta

9

Questo è il lavoro per me

protected DTE2 dte; 
dte2 = (EnvDTE80.DTE2)GetService(typeof(EnvDTE.DTE)); 

public string GetCurrentTextFile(){ 

    TextDocument doc = (TextDocument)(dte.ActiveDocument.Object("TextDocument")); 
    var p = doc.StartPoint.CreateEditPoint(); 
    string s = p.GetText(doc.EndPoint); 

    return s;    
} 
0

si può dare a questo una prova?

Dim objSelection As TextSelection = DTE.ActiveDocument.Selection 
+0

che ottiene solo la corrente di testo selezionato: var = vsDTE visualStudio.VsAddIn.VS_Dte; var textSelection = (TextSelection) vsDTE.ActiveDocument.Selection; return textSelection; –

Problemi correlati