Пакет расширяемости Visual Studio не смотрит на правильный проект - PullRequest
5 голосов
/ 26 сентября 2011

Я создал новый пакет расширяемости VS 2010.Пока что все, что я хочу сделать, - это чтобы пользователь нажал кнопку и заполнил список со всем содержимым решения.У меня есть следующий код:

EnvDTE80.DTE2 dte = (EnvDTE80.DTE2)System.Runtime.InteropServices.Marshal.
    GetActiveObject("VisualStudio.DTE.10.0");

foreach (Project project in dte.Solution.Projects)
{
    foreach(ProjectItem pi in project.ProjectItems)
    {
         listView1.Items.Add(pi.Name.ToString());
    }
}

Это, кажется, работает, однако, он заполняет список содержимым решения с пакетом в нем , а не экспериментальным экземпляром, которыйзапускается при запуске.Я неправильно создаю ссылку?

Ответы [ 2 ]

1 голос
/ 03 октября 2011

Метод GetActiveObject возвращает первый экземпляр процесса DTE, а не вызывающий DTE.(в проекте Visual Studio SDK 2010 на Visual Studio 2010 тип F5 для выполнения экспериментального куста может завершиться ошибкой)

Подробнее см. здесь и здесь ...

0 голосов
/ 28 сентября 2011

Нет - вам нужно использовать ProjectItem.SubProject, чтобы получить то, что вы хотите ... в зависимости от структуры решения может потребоваться некоторая рекурсия ... для некоторого примера кода, выполняющего все это, см. http://www.wwwlicious.com/2011/03/envdte-getting-all-projects.html

...