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

Conseils et Astuces

Considérations

Item

Détail

Voir également

GUID

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

Add-Ins Enterprise Architect 64 bits et C++

Hormis l'utilisation de la clé d'enregistrement correcte (voir l'étape 4 dans la rubrique d'aide Déployer les compléments), il n'y a pas de configuration spéciale pour obtenir un object COM 64 bits exécuté sous Enterprise Architect 64 bits.

Déployer Add-Ins

Add-Ins .NET

Lors de la génération d'un assemblage .NET , vous devez explicitement définir la 'Target Platform' sur x86/x64. Le laisser sur 'N'importe quel processeur' pourrait causer des problèmes lorsque Enterprise Architect 32 bits est exécuter sur une version 64 bits de Windows.

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

Visual Studio rencontre un problème lors de la tentative d'enregistrement d'un assembly .NET lorsque Interop.EA est inclus dans un projet. Il tentera d'utiliser regasm pour l'architecture pour laquelle Interop.EA a été conçu. Nous avons trouvé l'ajout d'aides au script de post-construction, si vous décochez l'option "S'inscrire pour l'interopérabilité COM" dans les paramètres du projet (en supposant que vous avez l'autorisation d'écrire dans le registre).

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

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

Note : Au moment de la rédaction, les 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é lors de l'utilisation de la version 32 ou 64 de la dll, tant que la DLL SSJavaCOM peut être trouvée par le runtime 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 d' 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 pour passer 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 d' Object Enterprise Architect .

Informations sur 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 dans un autre. Il y a quelques dangers à faire ça :

  • 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 ; conserver les poignées de ces objets entre les appels peut entraîner le deuxième événement interrogeant des objets qui n'ont aucune relation avec l'état actuel d' Enterprise Architect
  • Lorsque vous fermez Enterprise Architect , tous les Add-Ins sont invités à se fermer ; s'il y a 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é qu'à moins qu'il n'y ait une raison spécifique de le faire, le Add-In doit utiliser 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 se ferme pas

Problèmes spécifiques à .NET

L'automatisation vérifie l'utilisation des objets et n'autorisera la destruction d'aucun d'entre eux tant qu'ils ne seront plus utilisés.

Comme indiqué dans la rubrique Interface d'automatisation , si votre contrôleur d'automatisation a été écrit à l'aide du .NET , Enterprise Architect ne se ferme pas même après avoir publié toutes vos références. 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, parce que les clients d'automatisation s'accrochent à Enterprise Architect , qui crée Add-Ins qui à leur tour se raccrochent à Enterprise Architect , il est possible de se retrouver dans une situation de blocage où Enterprise Architect et les Add-Ins ne se lâcheront pas et garderont les uns les autres actifs. Un Add-In peut conserver des crochets dans Enterprise Architect car :

  • Il conserve une référence privée à un object Enterprise Architect (voir plus haut Holding State Information ), 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() ; voir la rubrique Add-In Événements 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 n'ont pas respecté les règles. Dans ce cas, vous pouvez appeler Référentiel .Exit() pour terminer Enterprise Architect .

Divers

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

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

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

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