2010-07-28 15 views
4

J'ai une situation plutôt étrange qui est liée à quelque chose d'étonnamment évident, mais qui m'a bloqué.La variable n'existe pas dans le contexte actuel

Tout simplement, je suis en train de charger des données de configuration dans mon application, comme suit:

namespace XMLGrabberCS 
{ 
class Grabber 
{ 

    public static void Main() 
    { 
     string test = "test"; 
     string serverName = ConfigurationManager.AppSettings["ServerName"]; 
     try 
     { 
      //do stuff... 

choses assez simple, sauf que si vous recherchez (par exemple via Espion) soit variable, vous obtenez une erreur variable doesn’t exist in current context.

Si vous regardez ConfigurationManager.AppSettings["ServerName"] il ne retourne la bonne valeur ...

Que diable se passe ici?

+2

Êtes-vous en train de déboguer une release-build? –

+1

D'abord l'évidence - exécutez-vous la version de débogage? Ensuite, les chaînes référencées plus tard dans le code? Sinon, ils pourraient être optimisés (peu probable si vous êtes en débogage, mais ça vaut le coup). – ChrisF

+0

@ChrisF - vous aviez raison - pour des raisons que je ne vais pas entrer, je ne les ai pas référencés, mais dès que je l'ai fait, il n'y avait pas de problème. Postez votre commentaire en guise de réponse et je l'accepterai. – CJM

Répondre

3

Les chaînes référencées plus tard dans le code? Sinon, ils pourraient être optimisés (peu probable si vous êtes en débogage, mais ça vaut le coup).

+0

C'est un petit problème stupide, mais que je n'avais pas remarqué avant ... Merci – CJM

3

Où êtes-vous lorsque vous essayez d'utiliser ceci dans Quick Watch? Si vous n'êtes pas en train de déboguer la méthode Main, alors c'est tout à fait vrai - cette variable n'existe pas.

Dans la vue Stack Trace, vous pouvez définir le niveau de la pile qui vous intéresse. Si vous double-cliquez sur le cadre de la pile avec la méthode "Main", les variables devraient s'afficher sans problème. Malheureusement, vous ne pouvez pas faire cela tant que la fenêtre Quick Watch est ouverte, autant que je sache.

1

Le débogueur s'est-il arrêté dans le contexte lorsque vous avez regardé la variable?
Comme ConfigurationManager est global pour l'application, il fonctionnera quel que soit le contexte, donc ce n'est pas surprenant.

Questions connexes