visual-studio - para - visual studio code extensions
¿Cómo depurar proyectos externos de la biblioteca de clases en Visual Studio? (5)
Asumir el camino de
Proyecto A
C:/Projects/ProjectA
Proyecto B
C:/Projects/ProjectB
y el dll de ProjectB está en
C:/Projects/ProjectB/bin/Debug/
Para depurar en ProjectB
desde ProjectA
, haga lo siguiente
- Copie el dll de
B
con el.PDB
de dll en el directorio de compilación delProjectA
. - Ahora depure
ProjectA
. Cuando el código llegue a la parte donde necesita llamar al método o eventos de dll, etc. mientras depura, presioneF11
para ingresar al código del dll.
NOTA: NO PIERDA COPIAR EL ARCHIVO .PDB
Tengo un proyecto (A) que hace referencia a un ensamblaje de una biblioteca de clases de proyecto externo (B) que se encuentra en otra solución vs.
Todavía tengo que entender cómo puedo depurar eficientemente la biblioteca de clases desde B mientras ejecuto el programa desde el proyecto A. ¿Hay algo que tenga que habilitar en el proyecto B, como información de depuración, etc. para que pueda intervenir en el momento de depuración desde A?
Gracias por adelantado.
Ejecuto dos instancias de Visual Studio: una para el dll externo y otra para la aplicación principal.
En las propiedades del proyecto de la dll externa, configure lo siguiente:
Desarrollar eventos:
copy /y "$(TargetDir)$(TargetName).dll" "C:/<path-to-main> /bin/$(ConfigurationName)/$(TargetName).dll"
copy /y "$(TargetDir)$(TargetName).pdb" "C:/<path-to-main> /bin/$(ConfigurationName)/$(TargetName).pdb"
Depurar:
Inicie el programa externo:
C:/<path-to-main>/bin/debug/<AppName>.exe
Directorio de trabajo
C:/<path-to-main>/bin/debug
De esta manera, siempre que construyo el dll externo, se actualiza en el directorio de la aplicación principal. Si presiono depurar desde el proyecto del dll externo, la aplicación principal se ejecuta, pero el depurador solo llega a los puntos de interrupción en el dll externo. Si selecciono la depuración desde el proyecto principal, la aplicación principal se ejecuta con el dll externo más recientemente construido, pero ahora el depurador solo llega a los puntos de interrupción en el proyecto principal.
Me doy cuenta de que un depurador hará el trabajo para ambos, pero me resulta más fácil mantener los dos rectos de esta manera.
Esto me ha molestado por un tiempo. Lo que generalmente termino haciendo es reconstruir mi biblioteca externa usando el modo de depuración, y luego copio tanto .dll como el archivo .pdb en el contenedor de mi sitio web. Esto me permite ingresar al código de la biblioteca.
Intenta deshabilitar Just My Code (JMC).
- Herramientas -> Opciones -> Depurador
- Desmarque "Habilitar solo mi código"
De forma predeterminada, el depurador intenta restringir la vista del mundo al código que solo está contenido en su solución. Esto es realmente bueno a veces, pero cuando quiere depurar código que no está en su solución (como es su situación) necesita deshabilitar JMC para poder verlo. De lo contrario, el código será tratado como externo y en gran parte oculto de su vista.
EDITAR
Cuando está roto en su código intente lo siguiente.
- Depurar -> Windows -> Módulos
- Encuentre la DLL para el proyecto que le interesa
- Haga clic derecho -> Cargar símbolos -> Seleccione la ruta al .PDB para su otro proyecto
[según Martin Beckett, el tipo que me envía esta respuesta]
Puede depurar en una biblioteca externa.
En la pestaña de configuración del proyecto, busque ''directorios de estudio visual'' en el campo ''código fuente'' que incluya la ruta a las fuentes openCV. Luego asegúrese de que los archivos .pdb para cada dll de depuración estén en el mismo directorio que el dll.