2012-05-15 35 views
7

Tôi đang viết kịch bản bên trong VisualStudio và đang cố gắng lấy nội dung của ActiveDocument hiện tại.Trong VisualStudio DTE, cách lấy nội dung của ActiveDocument?

Đây là giải pháp hiện tại của tôi:

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

Đây có phải là cách tốt nhất?

Tôi đã nhận giải pháp từ: Because ActiveDocument.Text() Would Be Too Easy...

Trả lời

9

này đang làm việc cho tôi

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

Bạn có thể dùng thử không?

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

Đó chỉ nhận được văn bản đã chọn hiện tại: var vsDTE = visualStudio.VsAddIn.VS_Dte; var textSelection = (TextSelection) vsDTE.ActiveDocument.Selection; return textSelection; –

Các vấn đề liên quan