none
Depurar WEBSITE con dll's de otro proyecto RRS feed

  • Pregunta

  • Hola a todos 

    quisiera que me pudieran ayudar con este problema estoy tratando de depurar un WebSite que tiene en la carpeta bin con dlls que se generaron en un poyecto aparte, explicando mejor 

    estos dlls estan en el proyecto principal 

    

    se que en en el proyecto externo están todos los métodos y clases es decir reglas de negocio, que hacen la lógica de la aplicación y que en el proyecto 1 se hace la llamada adjuntando estos dlls, lo que no entiendo  es como puedo depurar este website ya que no puedo poner un breakpoint o ver los metodos que están dentro de estos dlls,  un dato adicional este tiene controles telerick, como ven en la siguiente imagen no veo codigo cs en ningun formulario a si que no tengo forma de poner un breakpoint y seguir la depuración, como puedo sabe que hace en cada form de este website, se que estos formularios usan algunos dlls que les pongo la imagen pero no tengo ni idea como depurar esto 

    Cordial saludo a todos, toda ayuda sera bienvenida 

    gracias 


    • Editado hxcbps viernes, 16 de septiembre de 2016 23:28
    viernes, 16 de septiembre de 2016 23:27

Respuestas

  • hola

    la verdad es que no se de donde obtienes esas imagenes, pero estas dejan claro que no tienes los rchivos de debug que el VS necesita para poder navegar hasta el codigo

    >>en los dll que tiene adjuntos que hacen el llamado de la otra aplicación ¿puede que se haya movido la aplicación ?

    no, ya que si se movio pero tienes los pdb te deberia abrir la ventana para buscar el .cs dodne esta el codigo al que necesita navegar

    si te muestra ese mensaje es porque las dll de la liberia externa no tiene junto a esta los .pdb

    >>eso me imagino son los que te refieres que ponga en el bin de la aplicación que hace la llamada, pero en unos dll no se encuentra los pdb

    en el bin no pones ninguna aplicacion, lo que debes copiar son las dll y pdb de la libreria externa que estas queriendo utilizar

    sino se encuentran los pdb es porque debes compilar las dll de estas en  debug para obtenerlos y recine alli copiarlo

    >>¿sera que se hizo en modo release ?

    puede ser

    sino tienes el codigo de estas librerias seguro se compilaron en release, ya que ese es el modo correcto para redistribuirlas

    >>¿ o se perdieron las fuentes de donde se hace el llamado ?

    pero al menos deberias tener los pdb

    no era que tenias el codigo de las librerias que quieres depurar internamente? sino tienes el codigo no vas a poder ingresar debugeando la dll sera una caja negra que invocaras y obtendras el resultado no vas a poder ingresar sin el codigo y las pdb resultantes de la compilacion del mismo

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 20 de septiembre de 2016 1:47

Todas las respuestas

  • ¿Tienes el fuente de todas esas DLLs que se hicieron en otro proyecto? Si es así, lo más sencillo es que añadas todos esos proyectos a la solución en la que construiste la aplicación web. Esto no perjudica a la solución original que tenía esas DLLs, es lícito que un proyecto forme parte de dos soluciones distintas.

    Después de eso, es conveniente que en las Referencias pongas una referencia a esos proyectos en lugar de ponerla directamente a la DLL en disco. De esa manera, Visual Studio tiene la información necesaria para saber que si cambia una de ellas hay que recompilar el proyecto que la consume, y también te funcionarán todos los procesos de depuración, pudiendo poner breakpoints en cualquier sitio.

    sábado, 17 de septiembre de 2016 8:48
  • Hola muchas gracias por tu respuesta

    pues tengo la fuente de un proyecto, pero en realidad no estoy seguro que sea la original fuente de los dll, quisiera hacer una prueba haciendo lo que tu me dices pero realmente no entiendo como hacerlo correctamente, pues doy click izquierdo adjuntando el otro proyecto que esta corriendo perfectamente, pero pues en realidad coloco un breackpoint y no sigue la secuencia que debería 

    ¿como lo debería hacer ? ¿me podrías explicar pofavor ?

    gracias 

    lunes, 19 de septiembre de 2016 1:37
  • coloco un breackpoint y no sigue la secuencia que debería 

    Eso indica que no coincide la versión del fuente que has cargado con el ejecutable que está rodando. Si tienes el fuente, asegúrate de que lo compilas (ocurrirá automáticamente si lo has añadido de forma correcta a la solución), fíjate en que las Referencias apuntan al Proyecto (no al binario en disco de la DLL, que podría ser la versión antigua), y que al ejecutarlo despliegas las DLLs que acabas de compilar (no los binarios antiguos que no coinciden exactamente con ese fuente).
    lunes, 19 de septiembre de 2016 6:52
  • hola

    Si en el \bin ubicas ademas de las dll los .pdb del otro proyecto al momento de debug podras navegar en debug al codigo externo

    pero necesitas ese proyecto externo compilarlo en debug para tener dll y pdb (esto son archivos que usa el VS para debug)

    La primera vez vas a tener que ingresar con F11 a la funcionalidad externa, pero una vez que estes alli despues podras poner breakpoints

    La magia solo podras lograrla si pone los pdb junto a las dll de estos componentes

    Si las dll externas estan compiladas como "release" no aplica, porque la info de debug se remueve

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    lunes, 19 de septiembre de 2016 10:54
  • Hola Leandro 

    Muchas gracias por tu respuesta pues te cuento que había revisado antes que  los  .pdb se generan al momento de compilarse, eso mas o menos lo tenia claro pero en mi carpeta bin no se genera ademas de los dlls los .pdb al momento de hacer el debug, lo que he podido revisar de todo esto: 

    es que al dar click derecho en el Id del metodo y dar just Navigate --->Go to Symbol me aparece el metodo en el que se definió el boton, pero no me permite ir hata alli, que puedo hacer mas para saber donde me trae estos métodos y poder deplorarlo bien que me aconsejan, y bueno si lo dejo release ¿seria un problema muy grande obtener esas otras fuentes?

    gracias de antemano   


    lunes, 19 de septiembre de 2016 17:33
  • Muchas gracias por tu respuesta 

    bueno lo que hice fue agregar los proyectos dando click derecho en el proyecto Add ---> proyecto existente y fui agregando los proyectos que suponía depende esas dells, pero pues cuando compile no se genero nada y lo que hizo fue trabajar otras vistas que no se deberían trabajar, ¿que podría hacer mas ?

    gracias 

    lunes, 19 de septiembre de 2016 17:37
  • hola

    >>pero en mi carpeta bin no se genera ademas de los dlls los .pdb al momento de hacer el debug,

    pero los pdb que menciono son los de la aplicacion externa que debes copiar a la aplicacion que usa estas librerias

    o sea la aplicacion externa la compilas en debug, se generan las dll y pdb que copias a la otra aplicacion

    cuando depures esa otra aplicacion podras con F11 ingresar al metodo y seguir depurando el codig, pero ojo para que funcione debes tener en codigo en la carpeta donde compilaste la libreria externa

    los pdb son basicamente un link del codigo al archivo, pero tambien guarda la ruta fisica del archivos para poder encontrarlo

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 19 de septiembre de 2016 17:51
  • Vale entiendo lo que me dices pero antes de hacerlo quiero salir de una duda

    estaba viendo el origen de los archivos pdb de la aplicacion que hace el llamado, y me encuentro con esto: No se puede encontrar o abrir el archivo pdb en los dll que tiene adjuntos que hacen el llamado de la otra aplicación ¿puede que se haya movido la aplicación ? adjunto la siguiente imagen de la aplicacion que hace el llamado a la otra aplicación que se supone contiene el code behind

      

     Ahora bien a continuación adjunto lo que me genera la aplicación, la cual se supone tiene el codebihind, en esta si se encuentra la ruta de los pdb's a eso me imagino son los que te refieres que ponga en el bin de la aplicación que hace la llamada, pero en unos dll no se encuentra los pdb  ¿sera que se hizo en modo release ? ¿ o se perdieron las fuentes de donde se hace el llamado ?

    lunes, 19 de septiembre de 2016 22:10
  • hola

    la verdad es que no se de donde obtienes esas imagenes, pero estas dejan claro que no tienes los rchivos de debug que el VS necesita para poder navegar hasta el codigo

    >>en los dll que tiene adjuntos que hacen el llamado de la otra aplicación ¿puede que se haya movido la aplicación ?

    no, ya que si se movio pero tienes los pdb te deberia abrir la ventana para buscar el .cs dodne esta el codigo al que necesita navegar

    si te muestra ese mensaje es porque las dll de la liberia externa no tiene junto a esta los .pdb

    >>eso me imagino son los que te refieres que ponga en el bin de la aplicación que hace la llamada, pero en unos dll no se encuentra los pdb

    en el bin no pones ninguna aplicacion, lo que debes copiar son las dll y pdb de la libreria externa que estas queriendo utilizar

    sino se encuentran los pdb es porque debes compilar las dll de estas en  debug para obtenerlos y recine alli copiarlo

    >>¿sera que se hizo en modo release ?

    puede ser

    sino tienes el codigo de estas librerias seguro se compilaron en release, ya que ese es el modo correcto para redistribuirlas

    >>¿ o se perdieron las fuentes de donde se hace el llamado ?

    pero al menos deberias tener los pdb

    no era que tenias el codigo de las librerias que quieres depurar internamente? sino tienes el codigo no vas a poder ingresar debugeando la dll sera una caja negra que invocaras y obtendras el resultado no vas a poder ingresar sin el codigo y las pdb resultantes de la compilacion del mismo

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 20 de septiembre de 2016 1:47
  • Muchas gracias por tus valiosas respuestas, como dijiste los pdb son como un link al código que se llama pero desafortunadamente  ese código no es la ultima versión que están en las librerías del bin, creo que lo extraviaron de alguna forma 

    muchas gracias por tu tiempo y las respuestas me sirvieron mucho mil gracias 

    miércoles, 21 de septiembre de 2016 3:49