Suite

Signature du complément ArcGIS avec un événement post-build


J'essaie d'automatiser la signature d'un complément ArcGIS à l'aide d'un événement de post-construction dans Visual Studio qui déclenche un fichier batch (qui déclenche ensuite l'utilitaire ESRISignAddIn). L'exécution manuelle du fichier de commandes via l'invite de commande fonctionne correctement, le complément est signé avec succès. Cependant, si j'essaie d'exécuter le fichier batch dans l'événement post-build, il renvoie une erreur indiquant que le fichier de complément est introuvable. J'ai remarqué qu'au moment où le processus de construction arrive à l'étape de post-construction, seules les DLL sont créées - le fichier de complément ne l'est pas, donc le fichier batch ne peut pas le trouver. Il semble que le fichier de complément soit créé APRÈS l'événement post-build (illogique, je sais).

J'ai essayé d'ajouter les commandes batch à la ligne de commande de l'événement post-build (dans les paramètres du projet > compiler > build events), et j'ai également essayé de l'ajouter directement au fichier de projet XML :

 

Il semble que les événements 'post build' et 'after build' soient tous deux exécutés avant la compilation du fichier esriaddin, inutile !

Quelqu'un a-t-il déjà travaillé avec des événements post-build et des compléments ArcGIS ? Je veux savoir s'il est possible de forcer la création du fichier de complément (my.esriaddin) avant l'événement post-build.

Ma solution de dernier recours consiste à exécuter la génération, puis le fichier de commandes à l'aide d'un exécuteur de génération (par exemple, finalbuilder), mais j'aimerais idéalement tout garder dans le même projet.


J'ai eu un problème similaire en ce sens que je devais copier le fichier de sortie du complément dans un autre répertoire à l'aide d'un événement post-build. Comme vous, j'ai eu un problème en ce que le fichier de complément n'avait pas été créé au moment où l'événement post-build s'est déclenché.

Je crois que j'ai peut-être une solution pour vous. Au lieu de la cible que vous utilisez ci-dessus, essayez ceci :

 

Pour plus de clarté, dans mon fichier .csproj, j'ai une importation (vraisemblablement ajoutée par Esri) qui dit ceci :

Si j'ouvre ce fichier importé, il contient une cible avec un nom RunArcGISPostPackageEvent, qui, pour autant que je sache, est la dernière chose qu'Esri fait pour finir de créer le fichier *.addin. Ainsi, l'utilisation de l'attribut AfterTargets sur une cible personnalisée attendra la fin de cette autre cible avant de s'exécuter. Si ce qui précède ne fonctionne pas, vous pouvez essayerAfterTargets=PackageArcGISAddInContentscar il s'agit d'une autre cible dans le projet importé.

Je ne suis pas un expert, donc il y a peut-être un meilleur moyen, mais cela a fonctionné pour moi.


Voir la vidéo: ArcGIS - Converting a geodatabase to shapefiles (Octobre 2021).