Инструменты пользователя

Инструменты сайта


Боковая панель

developers:tutorial:module

Это старая версия документа.


Создание и подключение первого модуля

Запустите редактор Visual Studio, выберите создание нового проекта. В качестве шаблона используйте «Классическое приложение для Windows», а в качестве типа «Библиотека классов (.NET Framework)». В качестве платформы укажите «.NET Framework 3.5». Рисунок 1. Создание проекта Настроим проект так, чтобы он собирался в каталог с программным комплексом Топоматик Робур, запускал его при отладке и добавим к проекту цифровую подпись. Для этого перейдите в свойства проекта. Рисунок 2. Свойства проекта Откройте вкладку «Сборка», в качестве выходного пути для всех конфигураций выберите каталог с программным комплексом Топоматик Робур. Рисунок 3. Свойства проекта - Сборка Откройте вкладку «Отладка», в качестве действия при запуске выберите запуск внешней программы и укажите исполняемый файл программного комплекса. Рисунок 4. Свойства проекта - Отладка Откройте вкладку «Подписывание», выберите подписать сборку и «<Создать>» в качестве ключа строгого имени. В появившемся диалоге укажите имя файла ключей. Защищать файл ключей паролем не обязательно. Рисунок 5. Свойства проекта - Подписывание Теперь необходимо добавить в проект ссылки на библиотеки программного комплекса, необходимые для создания собственных модулей. Библиотеки, которые нужно подключить это:

  • Topomatic.ApplicationPlatform.dll
  • Topomatic.Controls.dll
  • Topomatic.FoundationClasses.dll
  • Topomatic.Stg.dll
Первые три библиотеки находятся в каталоге с программным комплексом, а библиотека Topomatic.Stg.dll находится в глобальном кэше сборок (C:\Windows\assembly\GAC_MSIL\Topomatic.Stg\).

Откройте диалоговое окно Менеджер ссылок. Рисунок 6. Добавление ссылки через контекстное меню Перейдите на вкладку «Обзор», нажмите кнопку «Обзор» и укажите необходимые файлы библиотек. Рисунок 7. Менеджер ссылок - Обзор Кроме того необходимо подключить ссылки на системные библиотеки:

  • System.Drawing
  • System.Windows.Forms

Сделать это можно на вкладке «Сборки» диалогового окна Менеджер ссылок. Рисунок 8. Менеджер ссылок - Сборки После того как необходимые библиотеки подключены, нужно запретить их копирование при сборке вашего модуля. Для этого необходимо выделить все библиотеки программного комплекса Топоматик Робур в дереве структуры проекта, и поставить значение флага «Копировать локально» в «False». Рисунок 9. Свойство копировать локально

Теперь проект готов к работе. Можно приступить к созданию Вашего первого модуля. Необходимо создать следующие элементы:

  • Класс реализующий функциональность модуля
  • Класс отвечающий за инициализацию модуля
  • Файл для подключения к программному комплексу.

Начнем с создания класса, реализующего функциональность модуля. Это должен быть компонент, наследник от Topomatic.ApplicationPlatform.Module. Создайте новый класс компонента и назовите его «Module». Рисунок 10. Создание компонента Откройте окно редактирования кода компонента. Рисунок 11. Перейти к коду компонента Измените код класса, сделайте его наследником от 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.

Здесь и далее замените Имя нашей библиотеки, на имя вашего проекта, в примере это tutorial1

Это файл в формате XML который содержит инструкции для программного комплекса, позволяющие загрузить и подключить модули, содержащиеся в нашей сборке. Создайте новый файл и назовите его Имя нашей библиотеки.AddIn. Для этого выберите в контекстном меню проекта «Создать элемент…». Рисунок 12. Создание элемента В диалоге добавления нового элемента выберите XML-файл. Рисунок 13. Выбор XML файла Выберите созданный файл в структуре проекта, и назначьте свойству «Копировать в выходной каталог» значение «Всегда копировать», чтобы всегда копировать этот файл в каталог куда Вы собираете Вашу библиотеку. Рисунок 14. Копирование в выходной каталог Заполните созданный файл, как показано ниже.

<?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("Привет Робур");
    }

Этот метод будет вызван при старте программного комплекса, а мы покажем там сообщение, в котором будет написано «Привет Робур».

Для того чтобы использовать методы статического класса MessageDlg и класс CreateApplicationEventArgs необходимо добавить нужные пространства имен в секцию using. Visual Studio позволяет легко сделать это, нажав правой клавишей на имени класса и выбрав добавление директивы using.

Теперь мы можем запустить наш проект. Он автоматически соберет нашу сборку в каталог с программным комплексом, скопирует туда же файл AddIn и запустит исполняемый файл программного комплекса, при старте которого мы увидим наше сообщение. Рисунок 15. Сообщение - Привет Робур

Исходный код примера, вы можете скачать используя эту ссылку

Архив с кодом примера

developers/tutorial/module.1539289278.txt.gz · Последние изменения: 2021/07/22 14:28 (внешнее изменение)