Tengo un proyecto (A) que hace referencia a un ensamblaje de una biblioteca de clase 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 deba habilitar en el proyecto B, como información de depuración, etc. para poder ingresar en el momento de depuración desde A?
Gracias por adelantado.
fuente
Esto me ha molestado por algún tiempo. Lo que generalmente termino haciendo es reconstruir mi biblioteca externa usando el modo de depuración, luego copiar los archivos .dll y .pdb al contenedor de mi sitio web. Esto me permite entrar en el código de la biblioteca.
fuente
Asume el camino de
Proyecto
A
Proyecto
B
y el dll de ProjectB está en
Para depurar
ProjectB
desdeProjectA
, haga lo siguienteB
dll con dll.PDB
en elProjectA
directorio de compilación de.ProjectA
. Cuando el código llega a la parte en la que necesita llamar al método o los eventos de dll, etc. durante la depuración, presioneF11
para ingresar al código de dll.NOTA: NO TE PIERDAS COPIAR EL ARCHIVO .PDB
fuente
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, establezca lo siguiente:
Crear 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:
Iniciar programa externo:
C:\<path-to-main>\bin\debug\<AppName>.exe
Directorio de trabajo
C:\<path-to-main>\bin\debug
De esta manera, cada vez que construyo el dll externo, se actualiza en el directorio principal de la aplicación. Si presiono depurar desde el proyecto del dll externo, la aplicación principal se ejecuta, pero el depurador solo alcanza los puntos de interrupción en el dll externo. Si llego a depurar desde el proyecto principal, la aplicación principal se ejecuta con el dll externo construido más recientemente, pero ahora el depurador solo alcanza 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 en línea de esta manera.
fuente
[según Martin Beckett, el tipo que me envió 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' e incluya la ruta a las fuentes de openCV. Luego, asegúrese de que los archivos .pdb para cada dll de depuración estén en el mismo directorio que el dll.
fuente
Estaba teniendo un problema similar porque mis puntos de interrupción en el proyecto (B) no estaban siendo alcanzados. Mi solución fue reconstruir el proyecto (B) y luego depurar el proyecto (A) ya que los dlls debían actualizarse.
Visual Studio debería permitirle depurar en una biblioteca externa.
fuente
Referencias NuGet
Suponga que las referencias -Project_A (produce project_a.dll) -Project_B (produce project_b.dll) y Project_B a Project_A mediante paquetes NuGet, simplemente copie project_a.dll, project_a.pdb a la carpeta Project_B / Packages. En efecto, eso debería copiarse en / bin.
Ahora depure Project_A. Cuando el código llega a la parte en la que necesita llamar al método o los eventos de dll, etc. durante la depuración, presione F11 para ingresar al código de dll.
fuente