iikoFront API SDK

Переход на Reactive Extensions версии 3.1.1

[ ]

В версии 5.2 приложение iikoFront перешло на использование библиотеки Reactive Extensions (далее Rx) версии 3.1.1 вместо прежней версии 2.2.5. Это может повлиять на работу плагинов, использовавших прежнюю версию Rx.

Используемые внутри iikoFront библиотеки являются деталями его реализации и формально не имеют отношения к публичному API, если бы не два но:

Привязывание API V3 к Rx было ошибкой. Начиная с V4 зависимость API от Rx удалена, вместо System.Reactive.Unit используется тип Resto.Front.Api.V4.VoidValue. Для обеспечения обратной совместимости с V3 оставлены две библиотеки из Rx 2.2.5 — System.Reactive.Core.dll и System.Reactive.Interfaces.dll (первая из них содержит тип System.Reactive.Unit и ссылается на вторую), при необходимости они будут загружены в память автоматически.

После обновления приложения iikoFront с ранее установленным плагином до версии 5.2 в работе плагина могут начать возникать следующие ошибки:

System.IO.FileNotFoundException: Could not load file or assembly ‘System.Reactive.Core, Version=2.2.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35’ or one of its dependencies. The system cannot find the file specified.

В этом случае можно восстановить работу плагина, доустановив недостающие файлы в папку с плагином. Поскольку все версии SDK до 5.2 содержали одну и ту же версию Rx 2.2.5, можно взять недостающие файлы из любой старой версии SDK. Эти же файлы можно взять из папки, куда установлено приложение iikoFront, до его обновления на 5.2. Если обновление уже установлено и библиотеки Rx перезаписаны версией 3.1.1, старые версии файлов можно найти в интернете. Например, библиотеку System.Reactive.Core.dll можно получить, скачав и распаковав nuget-пакет Rx-Core, это обычный zip-архив, внутри которого находится lib/net40/System.Reactive.Core.dll.

При разработке нового плагина следует предусмотреть, чтобы все библиотеки, используемые плагином и не являющиеся частью API, устанавливались в папку с плагином. Несмотря на то, что для V3 допускается установка плагина непосредственно в папку Plugins, во избежание конфликтов с зависимостями других плагинов рекомендуется установка в подпапку.