Создание плагина для 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
→ Открыть
.
в проекте появится плагин:

Все!!!
Запустим студию и проверим новый плагин!
Результат:
