2012-05-15 13 views
7

Ich scripte in VisualStudio und versuche, den Inhalt des aktuellen ActiveDocument abzurufen.Wie erhalten Sie in VisualStudio DTE den Inhalt von ActiveDocument?

Dies ist meine aktuelle Lösung:

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()); 

Ist dies der beste Weg?

bekam ich die Lösung aus: Because ActiveDocument.Text() Would Be Too Easy...

Antwort

9

Dies ist für mich arbeiten

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

Können Sie dies einen Versuch geben?

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

, dass nur die aktuell ausgewählte Text wird: var vsDTE = visualStudio.VsAddIn.VS_Dte; var textSelection = (Textauswahl) vsDTE.ActiveDocument.Selection; return textSelection; –