Réserver une Démo
Pré. Proc.

Conseils et astuces

Considérations

Item

Détail

Voir aussi

GUID

Le GUID d'enregistrement et le nom utilisés pour enregistrer un Add-In doivent être identiques pour les versions 32 bits et 64 bits Enterprise Architect . Seuls le nom et/ou l'emplacement de la DLL doivent être différents.

Enterprise Architect 64 bits et Add-Ins C++

Outre l'utilisation de la clé d'enregistrement correcte (voir l'étape 4 de la rubrique d'aide Déployer des modules complémentaires ), il n'existe aucune configuration spéciale pour exécuter un object COM 64 bits sous Enterprise Architect 64 bits.

Déployer Add-Ins

Add-Ins .NET

Lors de la génération d'un assemblage .NET , vous devez définir explicitement la « Plateforme cible » sur x86/x64. Le fait de la laisser sur « N'importe quel processeur » peut entraîner des problèmes lors de exécuter Enterprise Architect 32 bits sur une version 64 bits de Windows.

Ajoutez une cible x64 à votre projet et reconstruisez le projet.

Visual Studio rencontre un problème lorsqu'il tente d'enregistrer un assembly .NET lorsque Interop.EA est inclus dans un projet. Il tente d'utiliser regasm pour l' architecture pour laquelle Interop.EA a été créé. Nous avons constaté que l'ajout au script de post-construction aide, si vous décochez l'option « Enregistrer pour COM interop » dans les paramètres du projet (en supposant que vous ayez l'autorisation d'écrire dans le registre).

si $(PlatformName) == x64 ( "%Windir%\Microsoft.NET\Framework64\v4.0.30319\regasm" "$(TargetPath) " )

si $(PlatformName) == x86 ( "%Windir%\Microsoft.NET\Framework64\v4.0.30319\regasm" "$(TargetPath) " )

Note : au moment de la rédaction de cet article, Add-ins .NET ne fonctionneront pas sous Wine et avec Wine-Mono.

API Java

L'API Java charge le dernier Enterprise Architect installé et n'est pas affectée lors de l'utilisation de la version 32 ou 64 de la DLL, à condition que la DLL SSJavaCOM puisse être trouvée par l'environnement d'exécution Java.

Note pour les utilisateurs de Visual Basic 5/6

Les utilisateurs de Visual Basic doivent note que le numéro de version de l'interface Enterprise Architect est stocké dans le fichier de projet VBP sous une forme similaire à celle-ci :

Référence=*\G{64FB2BF4-9EFA-11D2-8307-C45586000000}#2.2#0#..\..\..\..\Program Files\ Sparx Systems \EA\EA.TLB#Enterprise Architect Object Modèle 2.02

Si vous rencontrez des problèmes lors du passage d'une version d' Enterprise Architect à une autre, ouvrez le fichier VBP dans un éditeur de texte et supprimez cette ligne. Ouvrez ensuite le projet dans Visual Basic et utilisez Project-References pour créer une nouvelle référence au modèle Object Enterprise Architect .

Informations State de détention

Il est possible qu'un Add-In contienne des informations d'état, ce qui signifie que les données peuvent être stockées dans des variables membres en réponse à un événement et récupérées lors d'un autre. Cette pratique comporte certains dangers :

  • Les objets d'automatisation Enterprise Architect ne se mettent pas à jour en réponse à l'activité de l'utilisateur, à l'activité sur d'autres postes de travail ou même aux actions d'autres objets dans le même client d'automatisation ; la conservation des handles de ces objets entre les appels peut entraîner l'interrogation par le deuxième événement d'objets qui n'ont aucune relation avec l'état actuel d' Enterprise Architect
  • Lorsque vous fermez Enterprise Architect , tous Add-Ins sont invités à s'arrêter ; s'il existe des clients d'automatisation externes, Enterprise Architect doit rester actif, auquel cas tous les Add-Ins sont rechargés, perdant toutes les données
  • Enterprise Architect agissant en tant que client d'automatisation ne se ferme pas si un Add-In contient toujours une référence à celui-ci (la libération de toutes les références dans l'événement Disconnect() évite ce problème)
Il est recommandé, sauf raison spécifique, que le Add-In utilise le paramètre de référentiel et sa méthode et ses propriétés pour fournir les données nécessaires.

Enterprise Architect ne ferme pas

Problèmes spécifiques .NET

L'automatisation vérifie l'utilisation des objets et ne permet pas qu'aucun d'entre eux soit détruit jusqu'à ce qu'ils ne soient plus utilisés.

Comme indiqué dans la rubrique Interface d'automatisation , si votre contrôleur d'automatisation a été écrit à l'aide du framework .NET , Enterprise Architect ne se ferme pas même après avoir libéré toutes vos références à celui-ci. Pour forcer la libération des pointeurs COM, appelez les fonctions de gestion de la mémoire comme indiqué :

GC.Collect();

GC.WaitForPendingFinalizers();

De plus, étant donné que les clients d'automatisation se connectent à Enterprise Architect , qui crée Add-Ins qui se connectent à leur tour à Enterprise Architect , il est possible de se retrouver dans une situation de blocage dans laquelle Enterprise Architect et les Add-Ins ne se lâcheront pas et ne resteront pas actifs. Un Add-In peut conserver des connexions à Enterprise Architect pour les raisons suivantes :

  • Il conserve une référence privée à un object Enterprise Architect (voir la section précédente Informations sur l' State de conservation ), ou
  • Il a été créé par .NET et le mécanisme GC ne l'a pas encore publié
Deux actions sont nécessaires pour éviter les situations de blocage :
  • Les contrôleurs d'automatisation doivent appeler Référentiel .CloseAddins() à un moment donné (peut-être à la fin du traitement)
  • Add-Ins doivent libérer toutes les références à Enterprise Architect dans l'événement Disconnect() ; consultez la rubrique Événements Add-In pour plus de détails
Il est possible que votre client Automation contrôle une instance en cours d'exécution d' Enterprise Architect où les Add-Ins ne sont pas conformes aux règles. Dans ce cas, vous pouvez appeler Référentiel .Exit() pour mettre fin à Enterprise Architect .

Divers

Lors du développement Add-Ins à l'aide du framework .NET vous devez sélectionner l'interopérabilité COM dans les propriétés du projet pour qu'il soit reconnu comme un Add-In .

Certains environnements de développement n'enregistrent pas automatiquement les DLL COM lors de leur création. Vous devrez peut-être effectuer cette opération manuellement avant Enterprise Architect ne reconnaisse le Add-In .

Vous pouvez utiliser votre clé de Add-In privée (comme requis pour le déploiement Add-In ) pour stocker les informations de configuration pertinentes pour votre Add-In .

Exemples et Conseils Conseils et astuces Événements Add-In