如何查找属于 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;
}