Это старая версия документа.
Запустите редактор Visual Studio, выберите создание нового проекта. В качестве шаблона используйте «Классическое приложение для Windows», а в качестве типа «Библиотека классов (.NET Framework)». В качестве платформы укажите «.NET Framework 3.5». Настроим проект так, чтобы он собирался в каталог с программным комплексом Топоматик Робур, запускал его при отладке и добавим к проекту цифровую подпись. Для этого перейдите в свойства проекта. Откройте вкладку «Сборка», в качестве выходного пути для всех конфигураций выберите каталог с программным комплексом Топоматик Робур. Откройте вкладку «Отладка», в качестве действия при запуске выберите запуск внешней программы и укажите исполняемый файл программного комплекса. Откройте вкладку «Подписывание», выберите подписать сборку и «<Создать>» в качестве ключа строгого имени. В появившемся диалоге укажите имя файла ключей. Защищать файл ключей паролем не обязательно. Теперь необходимо добавить в проект ссылки на библиотеки программного комплекса, необходимые для создания собственных модулей. Библиотеки, которые нужно подключить это:
Откройте диалоговое окно Менеджер ссылок. Перейдите на вкладку «Обзор», нажмите кнопку «Обзор» и укажите необходимые файлы библиотек. Кроме того необходимо подключить ссылки на системные библиотеки:
Сделать это можно на вкладке «Сборки» диалогового окна Менеджер ссылок. После того как необходимые библиотеки подключены, нужно запретить их копирование при сборке вашего модуля. Для этого необходимо выделить все библиотеки программного комплекса Топоматик Робур в дереве структуры проекта, и поставить значение флага «Копировать локально» в «False».
Теперь проект готов к работе. Можно приступить к созданию Вашего первого модуля. Необходимо создать следующие элементы:
Начнем с создания класса, реализующего функциональность модуля. Это должен быть компонент, наследник от Topomatic.ApplicationPlatform.Module. Создайте новый класс компонента и назовите его «Module». Откройте окно редактирования кода компонента. Измените код класса, сделайте его наследником от Topomatic.ApplicationPlatform.Module. Также можно убрать его из общей области видимости.
partial class Module : Topomatic.ApplicationPlatform.Module { public Module() { InitializeComponent(); } public Module(IContainer container) { container.Add(this); InitializeComponent(); } }
Теперь создадим класс, отвечающий за инициализацию модуля. Этот класс должен быть наследником от абстрактного класса Topomatic.ApplicationPlatform.PluginHost и находится в общей области видимости. У него необходимо реализовать абстрактное свойство PluginName, возвращающее имя вашего плагина, и абстрактную функцию GetModules() возвращающую список типов модулей. В нашем случае мы вернем только один тип - тип нашего компонента.
Создайте новый класс и назовите его «ModulePluginHost». Наследуйте класс от Topomatic.ApplicationPlatform.PluginHost и реализуйте функции как описано выше.
public class ModulePluginHost : Topomatic.ApplicationPlatform.PluginHost { //тут мы возвращаем строку с именем нашего плагина public override string PluginName { get { return "My first module"; } } //тут мы возвращаем типы всех модулей, которые хотим подключить, в нашем примере только один тип protected override Type[] GetModules() { return new Type[] { typeof(Module) }; } }
Для подключения нашей библиотеки к программному комплексу нам необходим файл Имя нашей библиотеки.AddIn.
Это файл в формате XML который содержит инструкции для программного комплекса, позволяющие загрузить и подключить модули, содержащиеся в нашей сборке. Создайте новый файл и назовите его Имя нашей библиотеки.AddIn. Для этого выберите в контекстном меню проекта «Создать элемент…». В диалоге добавления нового элемента выберите XML-файл. Выберите созданный файл в структуре проекта, и назначьте свойству «Копировать в выходной каталог» значение «Всегда копировать», чтобы всегда копировать этот файл в каталог куда Вы собираете Вашу библиотеку. Заполните созданный файл, как показано ниже.
<?xml version="1.0" encoding="utf-8" ?> <Extensibility FileVersion="1"> <Addin> <FriendlyName>Тестовый модуль урок 1</FriendlyName> <Description></Description> <TargetPlaform Name="" Version="15.0"/> <Assembly Name="Имя нашей сборки.dll" FullClassName="Имя нашей библиотеки.ModulePluginHost" /> </Addin> </Extensibility>
Тэги <FriendlyName>
и <Description>
это имя и описание плагина, которые будут показаны пользователю. Тэг <TargetPlaform>
указывает версию платформы для которой собирается модуль, на текущий момент версия 15. Тэг <Assembly>
отвечает за подключение сборки, в атрибуте Name
указывается имя библиотеки, а в атрибут FullClassName
- полное имя класса, наследника от PluginHost, включая его пространство имён.
Если необходимо подключить несколько библиотек, можно указать несколько тэгов <Assembly>
.
Выполнив указанные выше действия и скомпилировав проект мы получим полностью работоспособный плагин, подключающий наш модуль к программному комплексу Топоматик Робур.
Сейчас наш модуль полностью пустой. Давайте добавим к нему немного функциональности. Для этого вернемся к коду класса «Module» и перекроем в нём метод OnCreateApplication как показано ниже.
//этот метод будет вызван в момент старта программного комплекса protected override void OnCreateApplication(object sender, CreateApplicationEventArgs e) { base.OnCreateApplication(sender, e); //вызов этого метода покажет стандартный диалог с сообщением MessageDlg.Show("Привет Робур"); }
Этот метод будет вызван при старте программного комплекса, а мы покажем там сообщение, в котором будет написано «Привет Робур».
Теперь мы можем запустить наш проект. Он автоматически соберет нашу сборку в каталог с программным комплексом, скопирует туда же файл AddIn и запустит исполняемый файл программного комплекса, при старте которого мы увидим наше сообщение.