Если макросы представляют собой быстрый и простой подход к автоматизации, то надстройки — это их более сложные и более мощные аналоги. Надстройки — это откомпилированные проекты на языках Visual Basic, Visual C# и даже Visual C++. Надстройки полезны для более сложных случаев расширения — вплоть до создания в интегрированной среде ваших собственных форм, окон инструментов и визуальных конструкторов.
Еще одна родственная тема, которой мы коснемся в этой главе, — это создание и доработка мастеров Visual Studio. Мастера запускаются каждый раз, когда вы создаете новый проект ^1ли добавляете в проект элемент. Эти мастера обычно представляют собой одно или более диалоговых окон, в которых пользователь вводит свои предпочтения, а затем эти предпочтения используются для создания структуры проекта, генерирования кода по умолчанию или для выполнения еще более сложных задач. При создании начальной структуры кодового файла или всего проекта мастера работают в сочетании с файлами шаблонов. Имеется целая инфраструктура для мастеров и шаблонов (чтобы вы могли произвести настройку под ваши конкретные потребности).
В двух предыдущих главах вы видели, как организован интерфейс прикладного программирования (API) расширяемости, и как вы можете писать макросы, которые взаимодействуют с этим API. Макросы являются идеальным способом управления различными элементами интегрированной среды. Внутри макроса вы имеете доступ ко всей объектной модели расширяемости, макросы писать легко и они имеют собственную среду разработки. Однако при всех этих положительных качествах у макросов имеются также и ограничения:
□ макрос нельзя использовать для создания и отображения пользовательских окон инструментов;
□ макрос не может предоставить никакого пользовательского интерфейса, кроме простых диалоговых окон и окон сообщений;
□ макрос не может реализовать страницу свойств в диалоговом окне Options;
□ макрос не может динамически активировать или деактивировать меню и панели инструментов в интегрированной среде;
□ макрос нельзя откомпилировать и распространять как исполняемый двоичный файл.
Надстройки Visual Studio могут делать все это и даже больше. Проще говоря, надстройки предоставляют разработчикам более глубокие механизмы интеграции с интегрированной
средой. Итак, что же такое надстройка? Надстройка— это откомпилированный dll-файл, содержащий COM-объект, реализующий конкретный интерфейс (lDTExtensibility2), предоставляющий надстройке прямую связь с интегрированной средой. Как мы уже упоминали, вы можете писать надстройки на вашем любимом управляемом языке. Поскольку мы потратили в мире макросов очень много времени на работу с Visual Basic, то в этой главе все примеры надстроек будут даны на языке С#.