Создание плагина для Robin Studio¶
Для того чтобы добавить новый плагин в проект вам нужно проделать следующие шаги:
- Открыть проект плагинов нажать по Solution правой кнопкой мыши
(ПКМ)→Add→New Project...:
Рис.1 Добавление нового плагина в проект Plugin
2. Из списка предлагаемых шаблонов для создания проектов выбрать Class Library (.NET Framework).
В строке Name написать название вашего плагина и выбрать Framework(если конечно он уже не стоит по умолчанию): .NET Framework 4.7.1. Далее жмем OK:
Рис.2 Выбор шаблона «Class Library»
- Кликаем
ПКМпо только что созданному проекту (в данном случае Test)→Properties:
Рис.3 Свойства плагина
- Появится окно со свойствами вашего проекта:
Рис.4 Cвойства плагина по дефолту
На вкладке Application нужно поменять следующие поля:
Assemblyname: Test→ Robin.Test,
Default namespace: Test→ Robin.RobotTools,
И на всякий случай перепроверить Target fraemwork должен быть: .NET Framework 4.7.1.
В итоге должно получится:
Рис.5 Отредактированные свойства плагина
Сохраните изменения (Ctrl+S).
5. Переименуйте класс "Class1" в "ActionLibrary" и 2 папки со следующим наименованием: Actions и Studio.
Должно выглядеть следующим образом:
Рис.6 Дефолтный вид проекта плагина
- Добавьте в проект референсы
System.ComponentModel.DataAnnotationsи из Manage NuGet Packages… Скачайте пакетStudio.Core,log4net,Robot.Core:
Рис.7 Добавление референсов в проект плагина
Если ссылки на пакеты добавились в packages.conf, перенести их в проджект-референс.
- Правой кнопкой нажмите по
Properties→Add→New Item...:
Рис.8 Добавление в Properties нового ресурса
Находим шаблон Resources File и выбираем. В поле Name пишем следующие имя: Strings.resx и нажимаем Add:
Рис.9 Добавление ресурса с именем «Strings.resx»
После добавление появится структура ресурсного файла. В Access Modifier поменяем с Internal на Public :
Рис.10 Переключение Access modifier с Iternal на Public
В этом ресурсном файле задаются имена реализованных действий, которые будут отображаться в Robin.(см. примеры реализованных плагинов).
Проделываем теже самые шаги и для добавления ресурса для руссификации с наименованием "Strings.ru-RU.resx"
7. Добавьте в папку Actions class, например c именем вашего проекта(можно и с другим именем) он должен быть public. Поменяйте в нем namespace на Robin.RobotTools
Далее в этом классе вы добавляете действия своего плагина в виде методов, которые должны быть статическими. Выглядит следующим образом:
Рис.11 Пример дефолтного представления метода с действиями плагина
- В папку
Studioдобавляем классы с названиями действий плагина в нашем случаеDeistvie1,Deistvie2. Проект плагина будет выглядеть следующим образом:
Рис.12 Пример дефолтного вида проетка плагина
Откроем класс Deistvie1. Добавим:
using Studio.Core.Base;
using Studio.Core.CustomProperties;
using System;
using System.ComponentModel.DataAnnotations;
Поменяем на namespace Studio.Core.ИмяПроекта в нашем случае Studio.Core.Test.
Добавим два атрибута к классу:
[Serializable]
[Actions.Serialization.StudioSerialization(Guid, DisplayName)]
Guid должен быть уникальным для каждого действия!
И унаследуемся от класса abstracAction. В итоге должно выглядеть следующим образом:
Рис.13 Пример дефолтного вида действия плагина
Так как в данном примере действие(Deistvie1) принимает два параметра типа int и string добавим две переменные Str1 типа cpString и Val1 типа cpInt:
Рис.14 Пример по добавлению входных параметров для действия плагина
Теперь добавим к вновь добавленным переменным атрибут [Display]:
Рис.15 Добавление аттрибута [Display]
где:
GroupName = "Common__InParameters" - ключ для группы с переменной Str1;
Name = "Deistvie1_Str1_N" -ключ для наименование переменной;
Order = 1 - порядковый номер отображения переключения;
ResourceType=typeof(Robin.RobotTools.Properties.Strings)) - Возвращает или задает тип, содержащий ресурсы. Тут идет обращение к созданному ресурсному файлу (см. п. 7).
Далее переходим к ресурсному файлу Strings.resx в Properties проекта и отредактируем его:
Рис.16 Редактирование ресурсного файла String.resx
В столбце Name указываем ключи, а в столбце Value указываем названия соответственно.
Есть правила именования ключей. В вики где-то зафиксировано. Надо сослаться в то место отсюда.
Аналогично редактируется ресурсный файл для руссификации с наименованием "Strings.ru-RU.resx", только там соотвестенно используетсца кириллица.
Далее перейдем назад к классу Deistvie1 и подредактируем следующие свойства:
CodeFunc => "Test.Deistvie1"- где Test-класс где находятся действия, Deistvie1- само действие;ParamNames=>"Val1,Str1"- имена параметров.
В итоге получается:
Рис.17 Пример конечного вида действия плагина
Если действие что то возвращает, как в нашем случае: .. figure:: images/make_plugin/86.png
в классе Deistvie2 проделаем те же самые действия, что и в Deistvie1, только еще унаследуемся от
интерфейса IActionReturn реализуем его и добавим using Studio.Actions;.
Так как Deistvie возвращает тип string, выберем из списка String:
Рис.18 Наследование от интерфейса IActionReturn
Так же добавим атрибут [Display]:
И не забудем отредактировать ресурсный файл:
В итоге класс Deistvie2 должен выглядеть следующим образом:
Рис.19 Пример финального вида действия, которое возвращает результат
- Перейдем в класс
ActionLibrary.
добавим using:
using System.Collections.Generic;
using Studio.Core.Test;
Исправим namespace на Studio.Core
Унаследуемся от интерфейса IActionLibrary видим следующее:
Рис.20 Наследование от интерфейса IActionLibrary
Сделаем поправки:
Рис.21 Отредактируемый класс ActionLibrary
Добавим в конструктор ActionLibrary класса наши действия и получим конечный вид нашего класса:
Рис.22 Конечный вид класса ActionLibrary
Зайдем в ресурсный файл и добавим в него Test_LB:
также добавим ключи на названия наших действий в Robin studio:
- Перейдем в папку плагина нажмем пкм в данном примере на
Test.csproj(имяПроектаПлагина.csproj) и откроем в notepad++(блокноте):
Рис.23 Открытие проекта плагина через notepad++
Строки с тэгами Configuration и Platform удаляем:
Рис.24 Удаление строк с тэгами Configuration и Platform
и вместо них вставляем следующие строки:
<BIN_PATH Condition="'$(BIN_PATH)'==''">$(SolutionDir)Bin</BIN_PATH>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">Win64</Platform>
<OutputPath>$(BIN_PATH)\$(Platform)\$(Configuration)</OutputPath>
Далее из файла удаляем следующий контент:
и вместо него вставляем следующий контент:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|Win32' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|Win32' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|Win64' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|Win64' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
В итоге файл должен иметь следующий вид:
Рис.25 Конечный вид проекта плагина
Сохраняем файл.
Зайдем в свойства нашего плагина перейдем на вкладку Build и поставим галочку XML documentation file:
- Далее переходим в Build.sln и запускаем его:
ПКМ по Solution Build-> Add → Existing project...:
Рис.26 Добавление нового плагина в проект Build
В открывшемся проводнике переходи заходим в папку plugins ищем плагин в нашем случае папка Test → Test.csproj → Открыть.
в проекте появится плагин:
Все!!!
Запустим студию и проверим новый плагин!
Результат: