Visual Studio加载项:无法从SelectedItems获取Document对象

时间:2010-08-16 13:51:19

标签: .net visual-studio visual-studio-addins

首先让我说我是开发Visual Studio的加载项的新手......

使用DTE2对象时,我试图获取当前所选文档的一些信息。如果我做这样的事情:

DTE2 VisualStudioInstance = somethingOrOther;
Document documentInfo;

if(VisualStudioInstance.SelectedItems.MultiSelect == false)
{
    documentInfo = VisualStudioInstance.SelectedItems.Item(1).ProjectItem.Document;
}

Document对象似乎总是为null。 VisualStudioInstance.SelectedItems.Item(1).Project也是null(我不一定需要,但这看起来也很奇怪。它确实给了我所选项目的名称,所以我至少知道它找到的东西

现在如果我直接进入VisualStudioInstance.ActiveDocument,我会得到我正在寻找的所有信息。该文件是否必须是开放的以获取信息?如果是这样,我怎样才能获得所选项目的文档信息而不打开它?我正在寻找的主要内容是所选文件的完整路径信息。提前谢谢。

2 个答案:

答案 0 :(得分:2)

实际上您可以使用ProjectItem.FileNames属性。它是一个索引属性,即使文档已关闭也是有效的。

答案 1 :(得分:1)

如果它关闭则首先打开它,然后文档实例应该可用。

if (!projectItem.IsOpen)
{
    projectItem.Open();
}