Home

Реклама

Настроить
Эт я !

Использование скриптинга в готовых .NET приложениях (часть 2)


Этот пост является продолжением предыдущего

После того как было принято решение об использовании VSTA я должен был его исследовать. Во-первых, мне пришлось скачать VSTA SDK и установить его. SDK состоит из ряда библиотек (сборок), утилит и документации, встраиваемой в MSDN. Помимо прочего я обнаружил три демонстрационных приложения. По сути это одно и то же приложение, находившееся на различных этапах разработки. Общая его суть -- предоставить возможность манипулирования многогранниками в окне. Сначала было создано хост-приложение. Затем для него был создан интерфейс для подключения внешних модулей (скриптов или макросов). Наконец, были прилеплены макросы, которые пользователь может создавать/редактировать/отлаживать в Visual Studio. Всё работало красиво и должным образом. Всё было настолько хорошо, что сильно настораживало... И не зря.

Когда я начал изучать исходники, я понял, что это дело не на один день. Исходники для этого небольшого приложения оказались очень толстыми, не комментированными и далеко не всегда понятными сами по себе. Сразу после этого я изменил подход и начал копать Walkthrough из прилагавшейся документации, параллельно применяя полученные знания в тестовом проекте. Для хост-приложения я создал класс и его экземпляр, который был бы доступен скриптам в будущем. После чего я неуклонно следовал документации. Для начала я должен был создать интерфейс, через который скрипты/макросы получали бы доступ к объектам хоста. Интерфейс в данном случае это объект специального класса. С одной стороны он напомнил мне прокси (таковым он и является, так как передаёт запросы между двумя доменами приложения), а с другой -- COM с его запросами интерфейсов. Класс интерфейса можно написать самому, но VSTA -- это набор инструментов, поэтому в документации было предложено использовать специальную утилиту (proxygen.exe). Воспользовавшись этой утилитой, я получил исходник класса на C#, который стал интерфейсом моего хоста. Его необходимо было перенести в отдельный проект для того, чтобы скомпоновать в DLL, подписать сильным ключом и поместить в GAC (вот она -- плата за мнимую простоту!). Однако проект не скомпилировался. После долгих тщетных попыток исправления и компиляции проекта, а также блужданий в интернете, мне всё-таки удалось это сделать. Но...

Для этого мне пришлось исключить практически все классы, которые хост должен был предоставлять скриптам. Всё начало идти наперекосяк. Уже на следующий день я осознал, что VSTA -- сырой продукт, пока ещё совсем не популярный. И что самое главное, Microsoft не спешит его исправлять. (Я лично встретил кучу багов в этих "инструментах", и ещё больше я узнал о них из блогов и форумов разработчиков). Поскольку нашей компании требовался результат, а не секс с чьими-то багами, мы решили отказаться от VSTA. И сразу же перед нами встал вопрос "А что же тогда использовать, если не сторонний скриптинг и не VSTA?" Ответ на этот вопрос -- в следующих постах

Comments

Реклама

Настроить