J'ai développé un complément ArcMap qui nécessite un fichier de configuration. Après avoir passé un certain temps à essayer de lire les valeurs de configuration à partir d'un seul fichier App.Config (et toujours à obtenir la valeur nulle), je crois que le complément ne peut pas lire les valeurs d'ici car il s'agit d'une bibliothèque de classes et recherche l'application appelante (ArcMap) du fichier de configuration lorsque je demande la valeur d'une clé (d'où le null).
Pour contourner ce problème, j'ai utilisé un fichier App.Settings, que l'application peut lire correctement. La création de ce fichier introduit également un fichier App.Config dans l'environnement et Visual Studio semble garder les deux fichiers synchronisés pendant le développement.
Maintenant que le complément est en cours de déploiement, je dois pouvoir modifier les valeurs de configuration (par exemple, l'emplacement du fichier journal). J'ai essayé d'ouvrir / d'extraire le fichier .esriaddin et de mettre à jour le fichier App.Config là-dedans, mais le complément conserve les mêmes valeurs de configuration qu'il avait lors de la compilation. Je sais que les nouvelles valeurs App.Config sont conservées dans le fichier .esriaddin car je peux les afficher à nouveau après la fermeture de l'archive.
Quelqu'un connaît-il un moyen fiable de configurer un complément et d'autoriser cette mise à jour une fois déployé? Toutes les suggestions sont les bienvenues car il semble ridicule que j'aie besoin d'un fichier de configuration personnalisé pour cela.
Les valeurs App.Settings sont au niveau de l'application, et actuellement App.Settings et App.Config ont une action de génération: aucune / ne copie pas.
la source
Empruntant à une réponse similaire , vous pouvez utiliser ceci dans votre complément:
la source
this.GetType().Assembly.Location + ".config"
Le fichier de configuration .NET standard est par application, pas par bibliothèque. Cela signifie que lorsque votre complément s'exécute dans le processus ArcMap, vos paramètres de configuration doivent être spécifiés dans ArcMap.exe.config qui doit être placé à côté d'ArcMap.exe.
Bien sûr, cela n'est pas toujours possible dans l'environnement de production et viole également l'isolement des addins, qui est l'une des raisons pour lesquelles les addins ont été introduits en premier lieu.
Vous devrez stocker vos paramètres différemment, soit dans votre propre fichier de configuration (comme indiqué dans la réponse de Kirk) ou dans le registre système.
Vous pouvez surveiller les modifications apportées à votre fichier de configuration de différentes manières, par exemple en tirant parti de la classe FileSystemWatcher .
la source
La réponse de Kirk Kuykendall n'a pas fonctionné pour moi, car elle pointait toujours le fichier .dll lui-même. J'ai utilisé ce qui suit pour pointer vers le fichier de configuration
la source
Bien que je n'aie pas regardé le nouveau modèle pour le complément ESRI, ce que j'ai fait et vu fait par d'autres est l'utilisateur de la UserHive dans le registre. Vous pouvez alors avoir un écran dans votre add-in pour mettre à jour les valeurs dont vous avez besoin.
L'utilisation d'un fichier App.config nécessite généralement de redémarrer l'application / l'extension pour lire de nouvelles valeurs; tandis qu'il est plus facile de faire des mises à jour à la volée à partir du registre.
la source
Vous pouvez essayer de modifier la copie du fichier de configuration situé dans le cache de l'assembly du complément . Je crois que l'esriaddin n'est développé qu'une seule fois par ArcGIS. Par conséquent, les modifications ultérieures ne peuvent pas être utilisées (même s'il convient de noter que le fichier esriaddin est plus récent que son cache).
Vista / 7: C: \ Users \\ AppData \ Local \ ESRI \ Desktop10.0 \ AssemblyCache
XP: C: \ Documents and Settings \\ Local Settings \ Application Data \ ESRI \ Desktop10.0 \ AssemblyCache
la source