Fichiers PDB dans les dossiers bin \ debug de VisualStudio
J'ai une VS (2008) solution composée de plusieurs projets, pas tous dans le même espace de noms. Quand j'ai créer la solution, toutes les dll utilisées par le haut niveau projet TopProject sont copiés dans le TopProject\bin\debug dossier. Toutefois, le correspondant .fichiers pdb ne sont copiés que pour certains autres projets. C'est une douleur, par exemple lors de l'utilisation de NDepend.
Comment VS décider qui .pdb fichiers à copier dans le niveau supérieur bin\debug dossiers? Comment puis-je obtenir VS copier les autres?
Edit:
Références sont comme suit: toutes les dll sont copiés dans un emplacement central, sans leur pdb. TopProject seulement a des références à ces copié les dll, dll eux-mêmes, cependant, évidemment savoir où leur pdb sont, et (la plupart d'entre eux) sont copiés dans le dossier de débogage correctement.
source d'informationauteur Joel in Gö
Vous devez vous connecter pour publier un commentaire.
De MSDN:
Donc il semble que le "problème" ici (par manque d'un meilleur mot), c'est que certains de vos Dll sont en train d'être construit en mode debug (et donc émettant Pdb), et certains sont en train d'être construit en mode release (donc, pas émettant Pdb). Si c'est le cas, il devrait être facile à corriger -- aller dans chaque projet et de mettre à jour ses paramètres de construction. Ce serait le scénario par défaut, si vous n'avez pas fait de réglage des options de ligne de commande.
Cependant, il sera plus difficile si ce n'est pas le cas. Peut-être que vous êtes tous en release ou debug mode. Maintenant, vous devez regarder à la ligne de commande options de compilation (spécifié dans les propriétés du projet) pour chaque projet. Mise à jour à /debug en conséquence si vous voulez le débogueur, ou de la supprimer si vous n'en avez pas.
Modifier en Réponse à Modifier
Oui, la Dll "savoir" qu'ils ont Pdb, et ont des chemins d'accès, mais cela ne veut pas dire trop. La copie juste les Dll dans un répertoire donné, comme d'autres l'ont mentionné, n'est pas clair cette question. Vous avez besoin de la Pdb.
La copie des fichiers dans Windows, à l'exception de certains "bundle"fichiers de type (je n'ai pas Microsoft du terme, mais "HTML complète des packages" sont le concept) ne copie pas les fichiers associés. Les dll ne sont pas regroupées dans le "bundle", de façon à les copier laisse leur APB derrière.
Je dirais que la seule réponse que vous allez avoir à mettre à jour votre processus pour obtenir les Dll à ces endroits centraux, et inclure la Pdb ... j'aimerais avoir tort sur ce point, si!
Que les autres postes ont dit, vous pouvez avoir un compilateur/problème de la corruption.
Mais, comme dit, si les fichiers pdb sont en cours de création, mais pas là où vous le souhaitez, créer une étape de post-construction. Voici l'étape de post-construction-je définir pour chaque projet dans ma solution. Elle fait en sorte que tous les fichiers de sortie sont copiés dans une commune de la dir.
Si votre proj fichier dans \SolutionDir\ProjDir, puis la première ligne de l'étape de post-construction va copier les fichiers de sortie pour \Solution\Bin\Release \Solution\Bin\Debug.
Le deuxième ligne des copies le fichier pdb si c'est une version de Débogage. Je ne copie pas le fichier pdb pour la Release.
Donc, \SolutionDir\Bin contient maintenant tous vos fichiers de sortie dans un seul endroit.
Tout d'abord, ne jamais rien prendre pour acquis. Nettoyer la solution, de le reconstruire dans le mode de débogage, et de vérifier si tous les fichiers pdb sont créés. Si pas, c'est votre problème.
S'ils sont créés, et ils ne sont pas tout copié, vous pouvez contourner ce problème en créant un événement post-construction qui copie manuellement les fichiers pdb à l'endroit désiré. C'est juste une solution de contournement, bien sûr.
La seule autre chose que je peux penser, c'est que votre fichier de solution à la corruption. Vous pouvez ouvrir votre .la sln dans un fichier xml et d'examiner le contenu. Vérifiez la configuration pour les projets qui sont en agissant comme prévu et de les comparer à celles qui ne le sont pas. Si vous ne voyez rien, vous répétez cette procédure au niveau du projet. Comparer de travail .csproj (ou autre), les fichiers de projet et le non-travail.
Modifier en réponse à modifier:
Si vous êtes juste en copiant manuellement les trucs autour, puis copiez manuellement le pdb. Dll de ne pas "savoir" quelque chose à propos de pdb, je crois. Juste collez-les dans le répertoire de destination et d'aller prendre une tasse de café. Vous détendre.
Vérifier lorsque vous nettoyez la solution, que c'est en fait nettoyée. J'ai vu VS laisser des fichiers de traîner dans bin\debug répertoires, même après le nettoyage. Supprimer le répertoire bin\debug sur l'ensemble de vos projets et de les reconstruire.