Skip to main content

Comportement et limites

  • Les mots-clés supplémentaires ne permettent pas d’accéder aux membres des objets. Par exemple, dans les règles écrites dans des langages .NET, le contexte de la règle est transmis sous la forme d’un paramètre nommé Context.
  • Compilez les assemblys .NET avec Microsoft .NET Framework 4.0 ou une version ultérieure. Vous pouvez définir la version de .NET Framework dans les propriétés de votre projet Visual Studio.
  • Tous les objets FlexiCapture sont des objets COM. Les scripts .NET peuvent donc s’exécuter plus lentement lorsqu’ils accèdent fréquemment aux champs des objets, en raison des transitions entre code managé et code non managé.
  • Les objets FlexiCapture ne prennent pas en charge le multithreading.
  • Lorsqu’un script est compilé, son corps compilé est stocké au même emplacement que le script. Un script .NET peut donc occuper plus d’espace que les autres scripts.
  • Vous pouvez ajouter des assemblys externes afin de les utiliser dans les scripts et les modules globaux. Les assemblys utilisateur standard et compilés sont pris en charge, et toutes leurs classes deviennent disponibles. Pour plus d’informations, consultez Assemblies externes.

Espaces de noms et objets de script

Les objets de script FlexiCapture sont stockés dans les assemblys ControllerInterop.dll et ShellInterop.dll et appartiennent respectivement aux espaces de noms ABBYY.FlexiCapture et ABBYY.FlexiCapture.ClientUI. Les assemblys se trouvent dans le dossier racine d’ABBYY FlexiCapture. Tous les objets de script sont accessibles sous leur propre nom à partir de ces espaces de noms. Par exemple :
Placez les directives using au début du corps du script, avec les commentaires et les lignes vides. Utilisez la même syntaxe que dans le langage de programmation : using pour C#.NET, Import pour JScript.NET et Imports pour VisualBasic.NET. Par exemple :
Dans l’éditeur de scripts, vous pouvez utiliser la directive using à condition que le mot-clé using apparaisse avant la première ligne de code exécutable. Par exemple :

Fonctions des modules globaux

Dans les scripts .NET, les fonctions de tous les modules globaux sont appelées directement, sans le nom du module global. Les classes définies dans le Rule Global Script Module et dans le Export Global Script Module doivent avoir des noms différents. Sinon, une erreur se produit lors de la création d’une instance de la classe dans le code de règle. Pour ignorer un paramètre facultatif, transmettez System.null ou System.Type.Missing à la place de sa valeur.

Déboguer des scripts .NET

Pour déclencher un point d’arrêt, utilisez la méthode System.Diagnostics.Debugger.Break. Le débogage requiert également un fichier *.pdb contenant des informations de débogage. Ce fichier peut être très volumineux ; évitez donc de l’enregistrer dans le projet avec vos scripts. Lorsque vous déboguez un script .NET, spécifiez qu’il doit être compilé avec des informations de débogage. Dans Microsoft Visual Studio 2010, vous pouvez vous attacher au processus qui exécute le code .NET. Pour les scripts qui s’exécutent de manière non interactive (dans le processus FlexiEx.exe plutôt que FlexiCapture.exe), le bouton Debug n’est pas affiché par défaut pour le processus FlexiEx.exe dans la fenêtre Checking for solution, même pour les scripts contenant un point d’arrêt. Pour afficher ce bouton, cliquez sur l’icône Action Center dans la barre des tâches et sélectionnez Change Action Center settings → Problem reporting settings → Never check for solutions.