Skip to content
GorosVi edited this page Oct 4, 2015 · 5 revisions

Первое, что нужно сделать — создать проект. Для этого нажимаем правой кнопкой на решении ThinkingHome или директории Plugins и выбираем пункт Add->New Project.

Проект плагина

Любой плагин представляет собой библиотеку классов C#. Решения именуются следующим образом: ThinkingHome.Plugins.PluginName, где «PluginName» - название разрабатываемого плагина. Названия плагинов должны быть уникальными, причём называть правильно лучше сразу, так как переименование решения плагина не изменит имени его директории.

Название плагина на скриншоте ниже — «NooAPI». Название проекта

Основной класс решения должен быть назван PluginNamePlugin.cs, здесь это NooAPIPlugin.cs. Можно переименовать стандартный класс. Переименование стандартного файла класса

Далее нужно заменить AssemblyInfo плагина на AssemblyInfo проекта, для этого нужно удалить файл AssemblyInfo.cs из решения проекта и перетащить ссылку на него из любого проекта плагина в репозитории. Путь в свойствах файла должен указывать на AssemblyInfo в корне проекта.

Замена AssemblyInfo Замена AssemblyInfo

Для проекта нужно добавить ссылки на библиотеку System.ComponentModel.Composition. Добавление зависимостей Добавление System.ComponentModel.Composition

И ссылку на библиотеку ThinkingHome.Core.Plugins, в которой содержатся базовые классы для плагинов. Зависимости от других плагинов подключаются аналогичным образом. Добавление ThinkingHome.Core.Plugins

После этого нужно пометить класс плагина атрибутом [Plugin] и унаследовать его от базового плагина «PluginBase». Для заполнения списка используемых библиотек воспльзуемся автоматическим подключением необходимых библиотек C# Наследование

Для предотвращения конфликтов при сборке плагина нужно отключить копирование сторонних библиотек при сборке параметром CopyLocal = False. Библиотекам, подключаемым только для этого плагина нужно, наоборот, нужно разрешить копирование в директорию сборки. Установка CopyLocal

В нашем проекте все плагины собираются в директорию \build\Debug(Release)\ThinkingHome.PluginName, и для соответствия правилам проекта нужно изменить путь сборки следующим образом как для режима Debug, так и для режима Release. Build Path

При необходимости в проект можно подключить библиотеки NLog и NHibernate. Для этого нужно вызвать управление пакетами NuGet для проекта и включить решение плагина в список решений, где библиотека установлена. Менеджер пакетов для проекта Установка NHibernate Установка NHibernate После установки этих библиотек и их зависимостей нужно им задать параметр CopyLocal = False.

В результате должен получиться успешно собирающийся пустой проект плагина.

Также, для влития плагина в основную ветвь проекта нужно создать для него .nuspec файл по аналогии с остальными плагинами, выставить ему атрибут Copy to Output Directory = Copy Always и собрать инсталлятор вызовом thinking-home/Setup/build-installer/build-msi.bat.

При правильной конфигурации .nuspec файла инсталлятор должен собраться без ошибок.

Clone this wiki locally