5 votos

¿Hay alguna forma de controlar qué AddIn de ArcMap se carga primero?

Tengo una DLL compartida que el uso a través de múltiples ArcMap AddIns. Rara vez cambia, pero recientemente he tenido que modificar y empecé a recibir MissingMethodExceptions cada vez que hice llamadas a las clases en ese DLL compartida.

Después de investigar un poco, me di cuenta de que hay otros AddIns de ArcMap que llevaban una versión más antigua de la DLL compartida que se estaban cargando primero. Y si borro todos los demás AddIns y vuelo la caché de ensamblaje, ejecuto por AddIn con la nueva DLL compartida sin problemas.

¿Existe un orden específico de carga de AddIn desde la caché de ensamblaje? En mi caso, parece ser el más antiguo primero. ¿Hay alguna forma de alterar el orden de carga?

Enlaces relacionados:
http://forums.arcgis.com/threads/29870-Add-ins-that-share-same-custom-library

3voto

auramo Puntos 161

Las tres opciones que veo son:

  1. Nombre fuerte todos sus ensamblajes para que sean identificados de forma única y sólo se cargue/referencia el correcto. Esto se menciona como la solución en el hilo que enlazó.
  2. Utilice ILMerge para fusionar el ensamblaje compartido en el ensamblaje principal, lo que simplifica enormemente el despliegue, la gestión de versiones, etc. También puede hacer que esto forme parte de su proceso de construcción .
  3. Una opción mencionada en la página de ILMerge más arriba (y promocionada como una solución mejor) es incrustación los conjuntos secundarios como recursos en el conjunto principal. Esto sólo se discute en el contexto de la incrustación de ensamblados en un ejecutable, pero creo que debería funcionar para incrustar ensamblados en una biblioteca de clases también. Sin embargo, nunca lo he probado.

1voto

jonesdavide Puntos 176

Ampliando la @blah238 de ILMerge:

Pude ejecutar ilmerge y combinar mi ensamblaje compartido con mi ensamblaje AddIn. Tuve que especificar la ruta del ESRI.ArcGIS.Desktop.AddIns y la plataforma de destino.

ilmerge.exe /lib:"C:\Program Files (x86)\ArcGIS\Desktop10.1\bin" /targetplatform:v2 /out:C:\XXXX\bin\Debug\XXXXCombined.dll C:\XXXX\bin\Debug\XXXXX1.dll C:\XXXX\bin\Debug\XXXXX2.dll

Pude reemplazar manualmente la DLL del AddIn + la DLL compartida en el archivo esriAddIn con la única DLL combinada de ILMerge. Funciona a las mil maravillas. Todavía no he resuelto el proceso de construcción.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X