Trouver répertoire courant lors de Visual Studio session de débogage?
Comment puis-je trouver le répertoire en cours pour un .NET application
fonctionnant sous le débogueur de Visual Studio?
Mise à jour de 1. Pour être clair: je ne veux pas changer le code
ou obtenir de l'information dans le programme lui-même - je veux juste
obtenez de l'information au sujet de l'application actuellement en cours d'
débogué.
Lors du débogage d'un .NET Windows Forms application (mixte VB.NET et
C#) je n'étais pas sûr de l'emplacement d'un fichier XML était
lire de. J'ai attendu le répertoire courant à l'
l'application d'annuaire. Cependant, l'utilisation de l'Explorateur de Processus,
propriétés pour le résultat du processus:
D:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\
(clic droit sur le processus, et/Propriétés/onglet Image/Répertoire Courant).
Passer le curseur sur les processus dans la vue principale de l'Explorateur de Processus
a révélé un résultat différent (voir ci-dessous une capture d'écran):
D:\dproj\DTASCall\DTASuperCharge\bin\
Ce qui est correct?
Démarrage de l'application autonome affiche les attend
répertoire courant,
D:\dproj\DTASCall\DTASuperCharge\bin\
dans le Processus de l'Explorateur de propriétés du processus de fenêtre.
Annoté capture d'écran de l'Explorateur de Processus:
Le texte d'Alt http://www.pil.sdu.dk/1/until2039-12-31/PEdiscrepancy_2009-09-02.png
OriginalL'auteur Peter Mortensen | 2009-09-02
Vous devez vous connecter pour publier un commentaire.
Dans Visual Studio, dans le cadre du projet de paramètres dans l'onglet débogage, vous pouvez définir le "Répertoire de Travail" si vous le souhaitez.
Pour déterminer le répertoire de travail actuel dans le code ou dans la fenêtre exécution dans un point d'arrêt, essayez
Alternative à la Fenêtre exécution dans le menu Debug/espion express/<entrer dans le champ d'Expression>/Presse Réévaluer. Ou entrer dans la dernière ligne de la colonne Nom d'une Montre classique de la fenêtre, suivi de la touche Retour.
ou dans la fenêtre d'exécution, vous pouvez toujours le faire "? Système.IO.Répertoire.GetCurrentDirectory()"
J'ai utilisé cette réponse, mais modifié pour "? Système::IO::Annuaire::GetCurrentDirectory()" debug CLI\C++.
OriginalL'auteur Philip Rieck
Dans votre code, appelez la fonction
Par défaut, sauf si vous avez modifié les propriétés de Débogage de votre projet, le répertoire courant sera le répertoire bin\Debug de votre projet (où l' .exe fonctionne à partir d').
Hmmm, je vois ce que tu veux dire. Je me suis trompé sur le .vshost - j'ai juste vérifié la même chose et procexp morceaux de mon répertoire de travail en cours sans problèmes. Essayez de comparer la sortie du Système.IO.Répertoire.GetCurrentDirectory () avec la valeur par défaut des paramètres de projet de ce qui devrait être le répertoire bin\Debug de votre application. Si le fichier XML que vous essayez de lire est un élément du projet, assurez-vous de définir l'Action de Construire à la propriété "Contenu", et la Copie vers le Répertoire de Sortie des biens de façon appropriée. Il pourrait également être intéressant de vous lire à partir de votre application à la racine plutôt que le répertoire courant.
Le champ "répertoire de Travail" sur le Débogage de la page est vide. Mais sur la page Compiler le champ de Construire "chemin de sortie" contient "bin\". Devrait-il être vide?. Ce projet a été créé par Visual Studio 2003 et a été par le biais de deux Visual Studio mises à jour depuis lors. Actuellement, l'application commence à partir du répertoire bin, pas bin/Debug
Cela sonne bien. Pour un défaut de projet C#, le chemin de sortie sera bin\Debug, et le champ répertoire de travail est vide.
Le projet de démarrage est un VB.NET projet (et à partir de laquelle j'ai énuméré les paramètres ci-dessus).
OriginalL'auteur Richard
La meilleure façon est d'exécuter l'application dans WinDbg (le débogueur Windows), puis de les associer au processus et à exécuter le
!handle
de commande. Chaque fichier ouvert aura un handle associé. Par le dumping de toutes les poignées correspondantes, vous verrez que le fichier correspondant chemin.Voici un exemple:
Remplacer l'id du processus avec la valeur de votre id de processus. À la place de l'id de processus vous pouvez également utiliser l'adressage du processus. Si cela ne démontre pas l'objet de fichier, puis descripteur de fichier a déjà été fermé. Dans ce cas, vous devez suivre les poignées. Cela peut être fait avec le
!htrace
commande.OriginalL'auteur steve