如何查找属于 ITextView 的文档的文件名?
How to find the file name of a the document that belongs to an ITextView?
我目前正在编写一个 Visual Studio 扩展,并在实现 ITextViewCreationListener
接口的 class 中实现了函数 TextViewCreated
。
使用 ITextView
参数调用该函数,该参数表示刚刚创建的编辑器 window 的内容。但是,我不仅需要编辑文档的内容,还需要它所代表的文件的路径,而 ITextView
对象显然没有获取该信息的方法。
到目前为止,我已经使用了 DTE2.ActiveDocument
属性,但它并不总是能正常工作。特别是如果一个人在 Visual Studio 中打开一个新文本 window 而另一个已经打开,ActiveDocument
指的是 上一个 文档。
如何纠正这一问题?
public string GetDocumentPath(ITextView view)
{
Microsoft.VisualStudio.Text.ITextDocument textDocument;
return (view.TextBuffer.Properties.TryGetProperty(typeof(Microsoft.VisualStudio.Text.ITextDocument), out textDocument) && textDocument != null) ? textDocument.FilePath : null;
}
我目前正在编写一个 Visual Studio 扩展,并在实现 ITextViewCreationListener
接口的 class 中实现了函数 TextViewCreated
。
使用 ITextView
参数调用该函数,该参数表示刚刚创建的编辑器 window 的内容。但是,我不仅需要编辑文档的内容,还需要它所代表的文件的路径,而 ITextView
对象显然没有获取该信息的方法。
到目前为止,我已经使用了 DTE2.ActiveDocument
属性,但它并不总是能正常工作。特别是如果一个人在 Visual Studio 中打开一个新文本 window 而另一个已经打开,ActiveDocument
指的是 上一个 文档。
如何纠正这一问题?
public string GetDocumentPath(ITextView view)
{
Microsoft.VisualStudio.Text.ITextDocument textDocument;
return (view.TextBuffer.Properties.TryGetProperty(typeof(Microsoft.VisualStudio.Text.ITextDocument), out textDocument) && textDocument != null) ? textDocument.FilePath : null;
}