Надстройки Visual Studio: не удается получить объект Document из SelectedItems - PullRequest
1 голос
/ 16 августа 2010

Позвольте мне начать с того, что я новичок в разработке надстроек для visual studio ...

При использовании объекта DTE2 я пытаюсь получить некоторую информацию о документе, который в данный момент выбран.Если я сделаю что-то вроде этого:

DTE2 VisualStudioInstance = somethingOrOther;
Document documentInfo;

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

Объект Document всегда кажется нулевым.VisualStudioInstance.SelectedItems.Item (1) .Project также имеет значение null (которое мне необязательно, но оно тоже кажется странным. Оно дает мне имя выбранного элемента, поэтому я знаю, по крайней мере, что он что-то находит.

Теперь, если я перейду непосредственно к VisualStudioInstance.ActiveDocument, я получу всю информацию, которую я ищу. Должен ли документ быть открыт для получения информации? Если да, то как еще я могу получитьинформация документа для выбранного элемента, не открывая его? Главное, что я ищу, это полная информация о пути к выбранному файлу. Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 17 августа 2010

На самом деле вы можете использовать ProjectItem.FileNames свойство. Это индексированное свойство, которое действительно, даже если документ закрыт.

1 голос
/ 28 марта 2013

Сначала откройте его, если он закрыт, тогда экземпляр документа должен быть доступен.

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