База знаний

Номер статьи: 1291 | Категория: Настройка проекта | Тип: Вопрос/Ответ | Последнее обновление: 22.08.2013

Поддержка .Net

Описание

Можно ли в FlexiCapture для написания скриптов использовать .Net языки? Могу ли я использовать методы из моих .Net сборок в скриптах FC?

Решение

В отличие от 9-ой версии FlexiCapture 10 поддерживает .NET. Это означает:

  1. Любые скрипты (будь то скрипты правил, экспорта или другие) могут быть написаны на .NET языке (C#.Net, Visual Basic.Net, Jscript.Net). Причем для этого не нужно устанавливать Visual Studio.
  2. Улучшенная поддержка внешних модулей.
    Чтобы в скриптах FlexiCapture использовать методы из внешней сборки, достаточно добавить необходимую dll-библиотеку к проекту FC. Нет необходимости копировать модуль на каждую машину, где будет вызываться скрипт, и регистрировать его там.
    Прикрепленные к проекту сборки можно обновлять, просто нажав соответствующую кнопку Обновить. Все изменения будут доступны везде, где вызывается скрипт. Таким образом, не нужно производить отдельное обновление на каждой используемой машине. Более того, во время работы FlexiCapture сборки можно отлаживать с использованием Visual Studio.
    После того как сборка была прикреплена к проекту, FlexiCapture берет на себя вопросы ее хранения и распространения, т. е. при экспорте проекта сборка будет проэкспортирована вместе с ним.

 

Как же создать внешнюю сборку и добавить ее к проекту FlexiCapture?

  1. При создании проекта Visual Studio необходимо в свойствах проекта выбрать тип выходного файла Class Library:
  2. Для того чтобы в проекте VS можно было использовать объекты FC, к проекту необходимо подключить ShellInterop.dll (для объектов оболочки) или ControllerInterop.dll (для остальных типов объектов). В коде необходимо прописать: using ABBYY.FlexiCapture;
    После этого объекты FC станут доступны.
    Классы и методы, которые планируется использовать в скриптах FC, должны быть публичными (см. пример ниже)
  3. После того как код написан и проект скомпилирован, нужно просто добавить получившийся *.dll файл к проекту. Это может быть сделано в разных местах (в зависимости от того, в скриптах какого типа нужно будет использовать методы из сборки).

    Куда может быть добавлена сборка:
        - К определению документа (закладка Сборки .Net свойств определения документа) – для скриптов экспорта, правил, пользовательских действий, распознавания и сборки
        - К типу пакета (закладка Сборки .Net свойств типа пакета) – для скриптов маршрутизации и обработчиков событий
        - К проекту (закладка Сборки .Net свойств проекта) – для скриптов маршрутизации и обработчиков событий, относящихся к типу пакета По умолчанию

    Для добавления сборки необходимо нажать на кнопку Добавить…, выбрать тип «Путь к прикрепленному файлу» и указать путь к *.dll файлу сборки:
  4. После того как сборка подключена, все публичные классы и методы из сборки доступны из соответствующих скриптов FC (в зависимости от уровня подключения сборки: определение документа, тип пакета или проект).

Начиная с 4-ого релиза FlexiCapture 10, сборки, добавленные в свойствах проекта, являются общими и доступны всем типам пакетов и определениям документа данного проекта. Таким образом, в случае, когда необходимо использовать одну и ту же сборку более чем для одного определения документа или типа пакета, ее  необходимо добавить в свойствах проекта. Если общую сборку необходимо обновить, это нужно сделать только в свойствах проекта.
После того как общая сборка добавлена к проекту, она будет автоматически добавляться к любому вновь созданному типу пакетов. Для того чтобы добавить общую сборку к уже существующему типу пакетов или к определению документа, необходимо на закладке Сборки .Net свойств типа пакета или определения документа нажать кнопку Добавить..., в открывшемся окне выбрать тип Общая сборка и затем выбрать имя нужной сборки из списка. 
Помимо пользовательских, можно подключать стандартные сборки из Global Assembly Cache. Нет необходимости дополнительно подключать стандартные библиотеки, которые используются в пользовательских сборках.

Пример кода пользовательской сборки:

using System;
using System.Windows.Forms;

namespace SampleAssembly
{
    public class MyClass
    {
        public void MyMethod()
        {
            MessageBox.Show("Hello, World!", "Information",
                MessageBoxButtons.OK, MessageBoxIcon.Information);

        }
    }
}

Вызов метода MyMethod() из скрипта FlexiCapture:

using SampleAssembly;

MyClass cl = new MyClass();
cl.MyMethod();
564 считают это полезным.
Была ли эта информация вам полезна?