Russian (Русский) - Change language

Особенности .Net скриптов

Ниже описаны некоторые особенности .Net скриптов.

  • Доступ к элементам объекта осуществляется без дополнительных ключевых слов. Например, в правилах, написанных на .Net, контекст правила передаётся как параметр с именем "Context".
  • Сборки .Net должны быть скомпилированы в среде Microsoft .Net Framework версия 4.0 и выше. Версию .Net Framework можно задать в свойствах проекта в Visual Studio.
  • В скриптах и глобальных модулях разрешается использовать внешние сборки. Можно использовать как стандартные, так и скомпилированные пользовательские сборки. Все классы из добавленных сборок будут доступны всем скриптам и глобальным модулям. Подробнее см. Внешние сборки.
  • После компиляции откомпилированные тела .Net скриптов хранятся там же, где они определены. Поэтому .Net скрипты могут занимать больше места, чем обычные скрипты.
  • Объекты FlexiCapture не поддерживают многопоточность.
  • Для отладки .Net скриптов используется метод System.Diagnostics.Debugger.Break.
  • При отладке .Net скриптов помимо сборки требуется также PDB-файл с символьной информацией. PDB-файл имеет большой размер, и его не рекомендуется хранить вместе со скриптами в рабочем проекте. Однако перед компиляцией необходимо указывать, что скрипт должен компилироваться с отладочной информацией.
    Если используется MS Visual Studio 2010, то для отладки библиотек можно подсоединяться к процессу, в котором выполняет .Net-код.
  • Объекты скриптов FlexiCapture доступны в сборках ControllerInterop.dll и ShellInterop.dll и принадлежат пространству имен ABBYY.FlexiCapture и ABBYY.FlexiCapture.ClientUI соответственно. Файлы сборок хранятся в корневой папке программы.
  • Для обращения к скриптовым объектам FlexiCapture из глобальных модулей необходимо явно указывать использование пространства имён ABBYY.FlexiCapture или ABBYY.FlexiCapture.ClientUI.
  • Все объекты скриптов ABBYY FlexiCapture доступны под их собственными именами как классы из пространства имен ABBYY.FlexiCapture и ABBYY.FlexiCapture.ClientUI. Например:
ABBYY.FlexiCapture.IDocument document = Batch.Documents[i];>
ABBYY.FlexiCapture.ClientUI.IToolbars toolbars = TaskWindow.MainWindow.Toolbars;
    
  • Using-директивы могут использоваться в заголовке кода. При этом используется тот же синтаксис, что и в языке программирования: using в языке C#.Net, Import в языке JScript.Net и Imports в языке VisualBasic.Net. Например:
using System.Drawing;
Image img = Image.FromFile( @"D:\2.png" );
FCTools.ShowMessage( img.VerticalResolution.ToString(), false );
    

Замечание. В Редакторе кода скрипта поддержана возможность использования директивы using. Такое поведение возможно только, если ключевое слово "using" используется до первой строчки исполняемого кода. Например:

using ABBYY.FlexiCapture;
using ABBYY.FlexiCapture.ClientUI;
    
  • Функции глобальных модулей вызываются из .Net скриптов напрямую, без указания названия модуля.
    Замечание. Классы, описанные в глобальном модуле правил и в глобальном модуле скриптов, должны иметь разные имена. Если в модуле Rule Global Script Module описан класс с тем же именем, что и в модуле Export Global Script Module, то при попытке создать экземпляр класса в коде правила возникнет сообщение об ошибке.
  • Если функция имеет опциональные параметры и вы не хотите задавать конкретное значение опционального параметра, то в качестве опционального параметра необходимо передавать System.null или System.Type.Missing.

Замечание. Если скрипт выполняет не в интерактивном режиме (процессом FlexiEx.exe, а не FlexiCapture.exe), то по умолчанию кнопка Debug не отображается в окне Поиск решений (для скриптов, в которых установлен breakpoint). Для того чтобы отобразить кнопку, нажмите на иконку Центр поддержки на панели задач и отметьте опцию Настройка центра поддержки → Параметры отчетов о неполадках → Не проверять на наличие новых решений.

01.12.2020 7:04:04


Please leave your feedback about this article