Автоматизація роботи в середовищі Visual Studio. NET

У пакеті Microsoft Visual Studio. NET крім безлічі нововведень, пов'язаних з використанням. NET-платформи, суттєво розширені можливості управління середовищем розробки та автоматизації виконання часто використовуваних операцій. У попередніх версіях цього інструменту для вирішення подібних завдань потрібно було підключати доповнення формату COM Add-Ins, представлені у вигляді бібліотек ActiveX DLL. Створити ж такі модулі було дуже непросто хоча б тому, що при цьому заборонялося користуватися налагоджувальних засобів середовища розробки. Так чи інакше, але реально COM Add-Ins розроблялися зазвичай в комерційних цілях спеціалізованими фірмами-розробниками. "Звичайні" програмісти вкрай рідко вдавалися до них для власного, "внутрішнього" споживання.


З появою VS.NET ситуація в цій сфері змінилася: на додаток до COM Add-Ins він дозволяє створювати і використовувати макроси. У цілому механізм макросів тут схожий на той, що багатьом програмістам знаком згідно з додатками MS Office, хоча є в ньому деякі принципові відмінності.


Обидва варіанти засобів автоматизації і налаштування VS.NET базуються на застосуванні об'єктної моделі середовища розробки (VS.NET IDE), яка будується на кореневому об'єкті Development Tools Extensibility (DTE), що знаходиться в просторі імен EnvDTE бібліотек класів. NET Framework. Через DTE можна отримати посилання на всі безліч об'єктів, що відповідають окремим елементам IDE, таким, як Windows, Documents, Solutions, Projects, Debugger і Events (рис. 1). Кожен такий об'єкт дозволяє звернутися до власної ієрархічної системі об'єктів, колекцій, властивостей, методів і подій. Багато з них мають перехресні зв'язку, а отже, і доступ до них можна отримати кількома шляхами. Ця система забезпечує доступ практично до будь-яких компонентів і функцій середовища розробки VS.NET. У той же час потрібно підкреслити, що вся об'єктна модель IDE є суто внутрішньою; DTE – не COM-об'єкт, він недоступний з зовнішніх додатків, тобто VS.NET на відміну, наприклад, від Word не відноситься до ActiveX-серверів.

Рис. 1. Загальна структура ієрархічної системи об'єктів середовища розробки (представлена тільки невелика частина основних об'єктів)


Знайомство з макросами


Загальна послідовність роботи з макросами відповідає ієрархії компонентів – проект, модуль, макрос. Для роботи з ними безпосередньо в середовищі VS.NET використовується спеціальне вікно Macro Explorer, яке відкривається командою Tools / Macros / Macro Explorer (рис. 2). На жаль, в документації технологія роботи з макросами і об'єктом DTE описана досить бідна, тому оптимальним варіантом є вивчення Macro-проекту Samples, що входить у поставку. Він містить п'ять модулів, які включають по набору макросів та взаємодіючих з окремими об'єктами середовища розробки (VSEditor – редактор коду, VSDebugger – відладчик і т. д.).

Рис. 2. Структура Macro-проектів, підключених до середовища розробки VS.NET IDE


Для запуску макросів зовсім не обов'язково відкривати вікно Macro Explorer – для часто вживаних операцій можна встановити посилання у вигляді команд меню, кнопок панелей управління або "гарячих" клавіш за допомогою діалогового вікна Tools / Customize. Налаштування користувальницького інтерфейсу середовища розробки VS.NET виконується точно так само, як в офісних додатках Microsoft.
Найпростішим методом створення макросів є запис (Macro Recording; приблизно те ж саме робиться в MS Office). Але все-таки цей варіант скоріше годиться для формування заготовок, з тим щоб на їх базі потім писати більш складні програми. Для розробки макросів у VS.NET є спеціальне середовище, яка відкривається в окремому вікні за допомогою команди Macros IDE меню Tools / Macros (рис. 3). Macros IDE – це фактично та ж основне середовище VS IDE, але тільки з урізаним набором функцій. Кожен Macro-проект обов'язково включає модуль обробки подій EnvironmentEvents, що містить кілька груп зумовлених подієвих процедур. Створювані за допомогою цих процедур макроси автоматично реагують на операції, що виконуються в основному середовищі VS IDE. Наприклад, до групи DocumentEvents входять події DocumentOpening, DocumentClosing, DocumentClosed і DocumentSaved.

Рис. 3. Середовище розробки макросів – Macros IDE


Використання макросів, звичайно ж, істотно спрощує автоматизацію роботи в середовищі VS.NET. Але в порівнянні з COM Add-Ins і механізмом макросів, вже давно реалізованим в MS Office / VBA, ця технологія містить цілий ряд обмежень:


Macro-проекти VS.NET можуть містити тільки звичайні модулі коду і модулі класів. Поки що немає можливості застосовувати форми і елементи управління, тобто з їх допомогою не можна реалізувати повнофункціональний користувальницький інтерфейс;


Середа Macro IDE не є ActiveX-контейнером – з неї не можна, наприклад, звертатися до зовнішніх COM-об'єктів, тим же офісних додатків;


макросам доступно лише підмножина об'єктної моделі DTE і бібліотек класів. NET Framework;
Створювати макроси можна тільки на мові VB.NET;


звичайно, метод Macro Recorder дуже простий, проте не всі створені мною таким чином макроси запрацювали: видавалися повідомлення про невірний використанні команд, про конфлікти потоків та ін Можливо, для усунення подібних проблем потрібно більш точне керування установками середовища, але цілком імовірно, що є якісь дефекти і в самому VS.NET (не будемо забувати – це ж версія 1.0!).


Застосування COM Add-Ins


Найбільш універсальний метод автоматизації роботи в середовищі VS.NET IDE – використання розширень COM Add-Ins. Створювати їх складніше, ніж макроси (перш за все тому, що у цій процедурі розділені процеси написання коду та налагодження), але й можливості COM Add-Ins набагато ширше – це можуть бути повноцінні програми з розвиненим інтерфейсом, із застосуванням баз даних і всієї функціональності. NET Framework. Вони можуть підключатися не тільки до VS.NET IDE, але і до Macro IDE. Механізм їх створення фактично ідентичний тому, що задіяний в VS 6.0, VB 6.0, VBA 6.0 і MS Office (на базі підключення програмного інтерфейсу IDTExtensibility2). Ці COM-компоненти можуть бути написані, взагалі кажучи, будь-якою мовою, що підтримує COM, але спеціальні засоби розробки в VS.NET дозволяють використовувати тільки VB.NET і C #.


Для створення COM Add-Ins в VS.NET потрібно запустити майстер Add-Ins Project Wizard, який знаходиться в папці Other Projects / Extensibility Projects діалогового вікна New Project. Власне, в цій папці є два майстри: один дозволяє написати розширення спеціально для VS.NET, інший – спільне (Shared) доповнення, що підключається до різних програм, в тому числі до MS Office. Кожен з них в режимі діалогу з розробником виконує підключення необхідних бібліотек, елементів призначеного для користувача інтерфейсу і пр.


Після того як шаблон проекту буде готовий, потрібно зайнятися його функціональним наповненням, використовуючи всі доступні засоби VS.NET. Однак налагодження цього спеціалізованого програми пов'язана з певними складнощами, тому що деякі режими його роботи безпосередньо в середовищі VS.NET перевірити не можна (їх можна запускати тільки при роботі з автономним COM Add-Ins). І ось тут знову може стати в нагоді механізм макросів: функціональні блоки краще налагодити з його допомогою, а потім просто підключити готовий код до додатка COM Add-Ins.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*