He desarrollado un complemento ArcMap que requiere un archivo de configuración. Después de pasar un tiempo tratando de leer los valores de configuración de un único archivo App.Config (y siempre quedando nulo), creo que el complemento no puede leer valores desde aquí, ya que es una biblioteca de clases y busca la aplicación de llamada (ArcMap) El archivo de configuración cuando solicito el valor de una clave (de ahí el valor nulo).
Para solucionar esto, utilicé un archivo App.Settings, que la aplicación puede leer bien. La creación de esto también introduce un archivo App.Config en el entorno y Visual Studio parece mantener los dos archivos sincronizados durante el desarrollo.
Ahora que se está implementando el complemento, necesito poder cambiar los valores de configuración (por ejemplo, la ubicación del archivo de registro). Intenté abrir / extraer el archivo .esriaddin y actualizar el archivo App.Config allí, pero el complemento conserva los mismos valores de configuración que tenía cuando se compiló. Sé que los nuevos valores de App.Config se mantienen en el archivo .esriaddin porque puedo verlos nuevamente después de cerrar el archivo.
¿Alguien sabe una forma confiable de configurar un complemento y permitir que esta configuración se pueda actualizar una vez implementada? Cualquier sugerencia es muy bienvenida, ya que parece ridículo que necesite un archivo de configuración personalizado para esto.
Los valores de App.Settings están en el nivel de la aplicación, y actualmente App.Settings y App.Config tienen una acción de compilación: ninguna / no copiar.
fuente
Tomando prestado de una respuesta similar , puede usar esto en su complemento:
fuente
this.GetType().Assembly.Location + ".config"
El archivo de configuración estándar de .NET es por aplicación, no por biblioteca. Esto significa que cuando su complemento se ejecuta dentro del proceso ArcMap, sus ajustes de configuración deben especificarse en ArcMap.exe.config, que debe colocarse además de ArcMap.exe.
Por supuesto, esto no siempre es posible en el entorno de producción y también viola el aislamiento de los complementos, que es una de las razones por las que los complementos se introdujeron en primer lugar.
Deberá almacenar su configuración de manera diferente, ya sea en su propio archivo de configuración (como se indica en la respuesta de Kirk) o en el registro del sistema.
Puede monitorear los cambios en su archivo de configuración de varias maneras, por ejemplo, aprovechando la clase FileSystemWatcher .
fuente
La respuesta de Kirk Kuykendall no funcionó para mí, ya que seguía apuntando al .dll mismo. Usé lo siguiente para señalar el archivo de configuración
fuente
Si bien no he mirado el nuevo modelo para el Complemento ESRI, lo que he hecho y visto hecho por otros es el usuario de UserHive en el registro. Luego puede tener una pantalla en su complemento para actualizar la cantidad de valores que necesita.
El uso de un archivo App.config tiende a requerir que reinicie la aplicación / extensión totalmente para leer nuevos valores; mientras que es más fácil hacer actualizaciones sobre la marcha desde el registro.
fuente
Podría intentar modificar la copia del archivo de configuración ubicado en la caché de ensamblado de complementos . Creo que el esriaddin solo se expande una vez por ArcGIS. Por lo tanto, no se pueden usar modificaciones posteriores (aunque debería notar que el archivo esriaddin es más nuevo que su caché).
Vista / 7: C: \ Users \\ AppData \ Local \ ESRI \ Desktop10.0 \ AssemblyCache
XP: C: \ Documents and Settings \\ Configuración local \ Datos de aplicación \ ESRI \ Desktop10.0 \ AssemblyCache
fuente