visual studio puede encuentra debug compile code before archivo abrir visual-studio build-process pdb-files

visual studio - puede - Archivos PDB en carpetas VisualStudio bin / debug



no se encuentra el archivo pdb o no se puede abrir visual studio 2017 (4)

Tengo una solución VS (2008) que consiste en varios proyectos, no todos en el mismo espacio de nombres. Cuando construyo la solución, todos los dlls utilizados por TopProject del proyecto de nivel superior se copian en la carpeta TopProject / bin / debug . Sin embargo, los archivos .pdb correspondientes solo se copian para algunos de los otros proyectos. Esto es un dolor, por ejemplo cuando se usa NDepend .

¿Cómo decide VS qué archivos .pdb copiar en carpetas bin / debug de nivel superior? ¿Cómo puedo obtener VS para copiar los otros también?

Editar:

Las referencias son las siguientes: todos los dlls se copian en una ubicación central, sin sus pdbs. TopProject solo tiene referencias a estos dlls copiados; sin embargo, los propios dlls saben dónde están sus pdbs, y (la mayoría de ellos) se copian correctamente en la carpeta de depuración.


Desde MSDN :

Un archivo de base de datos de programa (PDB) contiene depuración e información de estado del proyecto que permite el enlace incremental de una configuración de depuración de su programa. Se crea un archivo PDB cuando compila un programa C / C ++ con / ZI o / Zi o un programa Visual Basic / C # / JScript .NET con / depuración.

Así que parece que el "problema" aquí (por falta de una mejor palabra) es que algunos de sus archivos DLL se construyen en modo de depuración (y por lo tanto, emiten PDB), y algunos se crean en modo de lanzamiento (por lo tanto, no emiten PDB) . Si ese es el caso, debería ser fácil de solucionar: ingrese a cada proyecto y actualice su configuración de compilación. Este sería el escenario predeterminado, si no ha hecho ningún ajuste de las opciones de línea de comando.

Sin embargo, será más complicado si ese no es el caso. Tal vez estás en modo de liberación o depuración. Ahora necesita mirar las opciones de compilación de línea de comando (especificadas en las propiedades del proyecto) para cada proyecto. Actualízalos a / debug en consecuencia si quieres el depurador, o quítalo si no lo haces.

Editar en respuesta a Editar

Sí, los archivos DLL "saben" que tienen PDB y tienen rutas hacia ellos, pero eso no significa demasiado. Copiar solo archivos DLL a un directorio determinado, como han mencionado otros, no resolverá este problema. Necesitas los PDB también.

Copiar archivos individuales en Windows, con la excepción de ciertos archivos de tipo "paquete" (no lo denomino Microsoft, pero "paquetes HTML completos" son el concepto) no copian los archivos asociados. Las DLL no se ensamblan en el modo "paquete", por lo que copiarlas deja su PDB atrás.

Diría que la única respuesta que tendrá es actualizar su proceso para obtener los archivos DLL en esas ubicaciones centrales, e incluir los PDB ... ¡Me encantaría que se demuestre que estoy equivocado al respecto!


Primero, nunca asumas nada. Limpie la solución, recupérela en modo de depuración y verifique si se crean todos los archivos pdb. Si no, ese es tu problema.

Si se crean y no todos se copian, puede solucionar esto creando un evento posterior a la compilación que copie manualmente los archivos pdb en las ubicaciones deseadas. Esto es solo una solución, por supuesto.

La única otra cosa en la que puedo pensar es que tu archivo de solución se ha dañado. Puede abrir .sln como un archivo xml y examinar los contenidos. Verifique la configuración de los proyectos que están actuando según lo esperado y compárelos con los que no lo están. Si no ve nada, debe repetir esto a nivel de proyecto. Compare los archivos .csproj de trabajo (o lo que sea) de proyecto y los que no funcionan.

Editar en respuesta a la edición :

Si simplemente está copiando cosas manualmente, copie manualmente los pdbs también. Dll no debería "saber" nada sobre pdbs, creo. Solo pégalos en el directorio de destino y ve a tomar una taza de café. Relajarse.


Verifique cuando limpie la solución, que esté realmente limpia. He visto a VS dejar archivos colgados en bin / debug directorios incluso después de la limpieza. Elimine el directorio bin / debug en todos sus proyectos y vuelva a generarlos.


Como han dicho otras publicaciones, es posible que tengas un problema de compilación / corrupción.

Pero, como dijo Will, si los archivos pdb se están creando, pero no se muestran donde los quiere, cree un paso posterior a la compilación. Aquí está el paso posterior a la construcción que defino para cada proyecto en mi solución. Se asegura de que todos los archivos de salida se copien en un directorio común.

Si su archivo de proj se encuentra en / SolutionDir / ProjDir, la primera línea del paso posterior a la compilación copiará los archivos de salida a / Solution / Bin / Release o / Solution / Bin / Debug. La segunda línea copia el archivo pdb si se trata de una compilación de depuración. No copio el archivo pdb para versiones de lanzamiento.

Entonces, / SolutionDir / Bin ahora contiene todos sus archivos de salida en una ubicación.

xcopy /r /y $(TargetPath) $(ProjectDir)../$(OutDir) if $(ConfigurationName) == Debug xcopy /r /y $(TargetDir)$(TargetName).pdb $(ProjectDir)../$(OutDir)