2013-02-05 10 views
5

Ich hatte dieses Ding, das mich in einigen Teilen des Codes nervt und ich habe keine Ahnung, was es verursacht.VS Direkt-Fenster - Der Name existiert nicht im aktuellen Kontext

Ich habe einen Code-Block, wo ich einen Haltepunkt gesetzt habe. Wenn ich dann den Cursor benutze und den Mauszeiger über eine Variable halte, kann ich normalerweise den Inhalt und die Werte dieser Variablen steuern.

Während einige Variablen, ich kann den Inhalt nicht sehen, nichts erscheint.

Auch, wenn ich die versuchen untersuchen kann ich das Direktfenster nicht durch, es sagt mir The name 'temp' does not exist in the current context

ich gerade wirklich verärgert bin, warum dies geschieht wäre, einige ganze Zahlen, andere aber nicht, einige Klassenobjekte aber nicht andere des gleichen Typs.

Das Schließen von Visual Studio und der Neustart behebt es nicht.

Ich bin in Debug ohne Optimierung ausgeführt.

Nur auf der Suche nach Hilfe mit diesem Problem, also vielen Dank im Voraus.

Hier ist ein Beispiel für den Code, wo es auftritt, keine speziellen Code oder Delegaten. Es kann auch in zufälligen Teilen des Programms vorkommen, selbst wenn nur ein paar Zeilen Code vorhanden sind.

segs2D = ConvertSegmentsTo3DLines(segs2D); 
IList<DSegment2D> segs3D = DSegment2D.Duplicate(segs2D); 
TransformSegments(segs3D, transform); 
foreach (var seg in segs3D) 
    MoveSegmentToSolid(seg, moveNormal, solid, false); 

Dictionary<double, Strategy> strategiesDic = new Dictionary<double, Strategy>(); 

double d1 = (double)(segs3D[0].GetP1Tag() ?? 0); 
double d2= (double)(segs3D[0].GetP2Tag() ?? 0); 
foreach (DSegment2D seg in segs3D) 
{ 
    d1= (double)(seg.GetP1Tag() ?? d1); 
    d2= (double)(seg.GetP2Tag() ?? d2); 
    ...Stuff 
} 

+1

Es könnte hilfreich sein, wenn Sie einige Code-Beispiele veröffentlichen könnten, die das Verhalten zeigen. –

+0

@AndrewCooper Code hinzugefügt. –

+0

Und ... wo ist der aktuelle Haltepunkt. Und welche Variablen können Sie sehen und welche können Sie nicht sehen? –

Antwort

0

Es stellt sich die die schiere Komplexität des Verfahrens und die Anzahl der Einzüge wurde das Problem verursacht zu der Zeit. Ich habe seitdem viel von dem ursprünglichen Code vereinfacht und funktioniert und habe dieses Problem nicht mehr. Ich habe auch ein Upgrade auf VS2012, das auch helfen kann.

0

Vielleicht sind die Variablen noch nicht im Codeblock deklariert oder initialisiert, wo Sie den Haltepunkt erreicht haben (das heißt die Ausführung nicht so weit vor).

Zum Beispiel können sowohl die Schwebe- und Direkt-Fenster Fragen Sie sich in Bezug auf bar in dem folgenden Codeblock auftreten beschrieben, wenn Sie den Haltepunkt:

public class Whatever 
{ 
    public void DoSomething() 
    { 
     string foo = "blah"; // Breakpoint hit and execution stopped here. 

     // Do something. 

     DoSomethingElse(); 
    } 

    public void DoSomethingElse() 
    { 
     string bar = "yack"; 

     // Do something else. 
    } 
} 
+0

Definitiv nicht das Problem. Ich weiß, dass der Haltepunkt in dem Code ist, den ich sehe. –

+2

Vielleicht, @Craig White. Das würde man hoffen. :) Das Gesetz der Sparsamkeit ist oft die Wurzel dieser Probleme, wenn wir uns selbst überzeugt haben, ist alles, was ich sage - vor allem in Code mit dreifach verschachtelten Schleifen. Der Debugger scheint zu denken, dass die Variablen außerhalb des Bereichs sind, und es ist _most_ wahrscheinlich korrekt. – J0e3gan

4

Auch, wenn ich die versuchen untersuchen ich kann es nicht durch die unmittelbaren Fenster, sagt es mir den Namen ‚Temp‘ nicht im aktuellen Kontext existiert

versuchen, den vollständigen Namen der Methode zu verwenden

zum Beispiel:

namespace.class.method();

anstelle von

class.method();

Es scheint auch, dass das unmittelbare Fenster eine Abhängigkeit von der aktuell ausgewählten Datei/Projekt hat.

Hoffnung hilft diese Mathias

0

Ich hatte ein ähnliches Problem.Ich dachte, ich wäre in Debug, aber es gab noch einen einfachen (aber wichtigen) Schritt. Wo "Solutions Configurations" auf "Debug" eingestellt ist, musste ich auch auf den Abwärtspfeil neben "Debug" klicken und "Configuration Manager ..." wählen und dann in dem entsprechenden Popup-Fenster "Configuration" immer noch auf "Release" - I setzen musste das in "Debug" ändern und auf "Schließen" klicken. Von dort aus konnte ich alle Variablen während des Debuggens anzeigen.