Fue un lanzamiento de una moneda si esta pregunta es una pregunta GIS.SE o StackOverflow ... Voy con GIS.SE porque el problema parece estar en ArcCatalog.
Tengo varios complementos que se han escrito para ArcCatalog (y también ArcMap); anteriormente pude F5 depurar el código usando puntos de interrupción ahora todos mis puntos de interrupción están inactivos con el mensaje El punto de interrupción no se alcanzará actualmente. No se han cargado símbolos para este documento :
He probado las sugerencias de Stack Overflow:
El punto de interrupción no se alcanzará actualmente. No se han cargado símbolos para este documento
y también
¿Por qué no se puede "alcanzar" el punto de interrupción al depurar un complemento de ArcGIS 10? Pero esto parece ser un problema diferente.
Como se trata de un complemento (dll), no hay proyecto de inicio. He limpiado todas las otras versiones. Hice un cambio sutil en el archivo Esriaddinx en el message=
para confirmar que se estaban haciendo los cambios, todo bien, no hay una versión anterior.
Durante la limpieza, noté que los complementos para ArcCatalog se copian %USERPROFILE%\Documents\ArcGIS\AddIns\Desktop10.X\{AddInID}\
donde los complementos de ArcMap no. Intenté copiar el archivo pdb en la carpeta de complementos, pero parece que el código ya no se está depurando y ArcCatalog ha cambiado / redirigido a la copia.
¿Hay alguna forma de depurar con complementos de puntos de interrupción para ArcCatalog? Tenga en cuenta que los complementos de ArcMap y las aplicaciones independientes depuran muy bien.
Medio ambiente:
- Windows 7 de 64 bits
- ArcGis 10.1
- Visual Studio 2010 Professional (VB.net y C #)
fuente
Respuestas:
Actualizando mi comentario inicial a una respuesta:
Tuve un problema similar con ArcMap 10.3 en combinación con Visual Studio 2013. Encontré las mismas publicaciones que @ michael-miles-stimson mencionó, y de hecho, en un momento en realidad pude depurar y alcanzar un punto de interrupción. Pero por alguna razón, eso dejó de funcionar después de un tiempo, y no había forma de que volviera a funcionar.
Finalmente, revertí el marco de destino en mi proyecto de .Net 4.5 a .Net 3.5 y configuré el tiempo de ejecución soportado en .exe.config en v2.0.50727. Eso lo resolvió para mí.
Si el complemento ArcCatalog usa 4.5 y ArcMap one 3.5, eso explicaría el comportamiento explicado en la pregunta.
No creo que importe si usa la versión Cliente o Completa, siempre tiendo a usar la Versión Completa, porque en un punto, siempre parece que me falta una clase que no está en la versión Cliente.
fuente
En realidad, los complementos de Arcmap también se copian en esa ubicación después de la instalación (o un Build in Visual studio).
Para resolver este problema, intente estos pasos:
Limpie toda su solución en Visual Studio haciendo clic derecho en la solución y elija Limpiar solución
si su proyecto de complemento de arccatalog depende de otros ensamblados de terceros, asegúrese de que esos ensamblados tengan archivos .pdb (símbolo) junto a ellos
En Visual Studio, si tiene otros proyectos en su solución que su proyecto de arccatalog depende de ellos, agregue su referencia de proyecto en lugar de sus dlls. como esta imagen:
fuente
Ok, acabo de verificar que puedo pasar el código usando este proceso.
Estoy haciendo esto en ArcMap, pero creo que debería aplicarse a ArcCatalog ya que el proceso se ocupa de depurar archivos DLL y no un elemento específico de ESRI.Confirmé esto en ArcMap 10.2.2 y ArcCatalog 10.2.2. Como este es un proceso de Windows que trata directamente con las DLL, las versiones de software ESRI no deberían importar.Estoy usando Visual Studio para adjuntar a un proceso .
Puedo pasar a través de una extensión compilada (DLL) usando este proceso cuando la DLL se invoca en otro programa.
Esto es lo que estoy haciendo ...
En Visual Studio, abra su proyecto de extensión. Construí mi extensión en VS 2010 C # Express, pero estoy usando VS 2013 Ultimate para hacer esto. No estoy seguro de si Adjuntar al proceso es una opción en la versión Express 2010. No lo vi, pero podría estar oculto en algún lugar ya que era la versión Express.
Abra su producto ESRI e instale el complemento. Ahora, de vuelta en VS, haga clic en Adjuntar al proceso y seleccione el proceso de su producto ESRI. El mío fue ArcMap.exe . A partir de aquí, Visual Studio debe adjuntar su depurador al programa y cuando se ejecute la DLL que tiene abierta y los puntos de interrupción establecidos, se detendrá allí. Esto actuará como cualquier otro programa que esté depurando en Visual Studio. Se puede estirar algunos de depuración en algunos de los artículos de ESRI aunque el código es más probable ofuscado por lo que no es tan útil.
Me aseguré de instalar el complemento desde mi directorio de lanzamiento para mi proyecto. Por lo que puedo decir, ESRI no copia la DLL en una de sus carpetas, pero usan su Utilidad de registro de ensamblaje Esri para registrar la ubicación de la DLL para que el sistema sepa dónde encontrarla cuando se hace referencia desde un producto ESRI.
FYI: uso este proceso para depurar bibliotecas de clases que escribo en un proyecto que se están utilizando en otro. La misma teoría allí debería aplicar complementos ESRI ya que son solo bibliotecas de clases (DLL) que se invocan en otro programa. Aparte de Visual Studio, creo que cualquier otro depurador de Windows debería poder conectarse a la DLL.
POR FAVOR publique comentarios sobre este. He pensado que esto funcionaría por un tiempo y tengo mucha curiosidad por ver cómo otros son justos con este método.
EDITAR Acabo de crear un nuevo complemento ArcCatalog, que consiste en un simple botón. Agregué una asignación de cadena
string stophere = "debugger stopped!";
en el controlador de eventos para el evento de clic del botón. A través de ArcCatalog, dejó de usar el método Adjuntar al proceso . La información de Visual Studio 2010 sobre el proceso está aquí .Hay algunas cosas en MSDN sobre la depuración de archivos DLL a través de varios métodos en Visual Studio y Windows Debugger. Personalmente, considero que Attach to Process es mejor que iniciar un método de programa externo y también es mejor que usar el depurador remoto .
El único inconveniente de este método es que pierde el enfoque F5 donde depura directamente desde Visual Studio. Eso significa que debe realizar cambios en su código, instalar la actualización, iniciar ArcCatalog, Adjuntar al proceso y luego alcanzar sus puntos de interrupción. Sin embargo, creo que este método es bastante bueno para saber en caso de que tenga problemas como el que tiene. Este proceso puede ser un poco más largo, pero es un método infalible para obtener sus resultados.
fuente
Este es un archivo que construí durante un par de años discutiendo con extensiones ArcMap y ArcCatalog y luego Complementos:
Cosas que pueden evitar que ArcMap depure complementos en Visual Studio:
fuente
Aquí está la solución:
Intente eliminar SupportedRuntime de arcmap.exe.config, en el directorio bin.
Este es el archivo xml \ ArcGIS \ Desktop10.0 \ bin \ arcmap.exe.config.
¿Por qué no se puede "alcanzar" el punto de interrupción al depurar un complemento de ArcGIS 10?
fuente
Algunos pasos obvios (supongo que ya has probado estos ... pero aún así).
fuente