Для программного управления надстройками используйте коллекцию DTE.Addins, которая содержит экземпляр Addin для каждой зарегистрированной надстройки (как загруженной, так и нет).
Вы можете напрямую ссылаться на надстройки (из коллекции DTE.Addins) по их имени следующим образом:
Addin addin = this.DTE.Addins.ItemC'MyFirstAddln");
Вы можете использовать свойства объекта надстройки для того, чтобы определить — загружена ли она, узнать ее имя, а также получить ProglD надстройки.
bool isLoaded = addin.Connected; string паше = addin.Name; string id = addin.ProglD;
Примечание
Мы используем термин "зарегистрированный" для обозначения надстройки, которая была инсталлирована на локальном компьютере и зарегистрирована в Visual Studio. В версиях до Visual Studio 2005 это означало, что для надстройки создавался элемент реестра. В версии 2005 эта концепция была заменена XML-файлами: Visual Studio ищет файлы XML с расширением addin для того, чтобы определить список доступных для загрузки надстроек (надстройка "загружена" тогда, когда она подключилась к процессу хост-приложения и была загружена в нем). Эти addin-файлы создаются для вас автоматически мастером Add-in Wizard, но их легко можно создать и редактировать вручную. Для того чтобы получить представление о структуре этих файлов, загляните в подкаталог Visual Studio 2008\Addins вашего локального каталога Documents. Каждая зарегистрированная надстройка появляется здесь; вы сможете исследовать файл надстройки, если загрузите его в Visual Studio, редактор Notepad или любой другой текстовый редактор.
Пример надстройки: цветовая палитра
Для завершения обсуждения надстроек рассмотрим от начала и до конца процесс разработки работоспособной надстройки. Этот модуль будет предоставлять возможность выбора цвета. Он даст пользователю возможность щелкнуть по цветовой палитре, после чего надстройка выдаст код для создания экземпляра цветовой структуры, которая совпадает с выбранным в палитре цветом. Вот список требований для надстройки:
□ в окне инструмента она будет отображать цветовую палитру, представляющую все возможные цвета;
□ при наведении на палитру курсора мыши элемент управления будет показывать значения красного, зеленого и синего цветов (для точки, находящейся под указателем мыши);
□ если пользователь щелкает по палитре, то модуль берет текущие значения RGB и выдает код на C# или Visual Basic (в текущее активное окно документа) для создания новой цветовой структуры, которая инкапсулирует данный цвет;
□ выбор языков (например, C# или Visual Basic) будет настраиваемым свойством элемента управления.