2012-03-21 16 views
29

A volte quando eseguo l'analisi rapida di un'espressione in fase di esecuzione, la finestra di Quick Watch mostra un errore che indica che il nome non esiste nel contesto corrente. Lo stesso vale per la finestra immediata. L'espressione che cerco di valutare, tuttavia, è perfettamente riconosciuta dalla classe, senza generare alcun errore di compilazione.Come faccio a fare riferimento a uno spazio dei nomi da utilizzare nell'immediato o quickwatch?

Per esempio, posso avere la seguente riga di codice:

double x = Math.Pow(2,3); 

Se mi fermo il cursore su questa linea e Controllo immediato il "Math.pow (2,3)" parte, mi dà un errore e ho bisogno di inserire un "Sistema". prima della mia espressione; come ho detto, la stessa espressione scorre senza intoppi nella finestra del codice, quindi non sono sicuro di quale sia il "contesto" a cui si riferisce l'errore.

potrebbe essere che questi spazi dei nomi finestre di debug di riferimento dichiarate nella classe, ma non possono fare lo stesso per il namespace importati dal progetto?

+0

funziona per me in un applicazione console. Stai usando un modello di progetto speciale? – Alex

+2

Non puoi semplicemente. Devi prefisso lo spazio dei nomi. – SimpleVar

+0

Funziona anche senza lo spazio dei nomi anche per me. Che versione/versione/service pack di VS stai usando? – adelphus

risposta

4

Nella mia comprensione del Controllo immediato e le finestre immediati sono in esecuzione il codice/espressioni nel contesto di esecuzione corrente, quindi una volta che c'è un using System; in atto nel codice, la finestra Controllo immediato non darà alcun problema. Potresti esserti imbattuto in qualche bug di Visual Studio. Prova a riavviare VisualStudio e ricontrolla.

Non ho riscontrato questo tipo di problema. Questo tipo di problema si affiorano quando si tenta di Controllo immediato Math.Pow(2d, 4d); quando avere il codice come questo System.Math.Pow(2d, 4d);

+13

Lo incontro sempre. Anche i miei colleghi. Utilizzo di VS2010 SP1 con normali progetti di libreria di classe C#. A volte riconosce lo spazio dei nomi, a volte no. Non ho mai trovato il modello. Ho sempre pensato che fosse un problema prevalente in VS e che tutti lo vivessero. –

+0

Avete estensioni relative al debugging in VS2010, poiché anch'io sto usando lo stesso VS2010 e non ci sono riuscito fino ad ora.quindi potrebbe essere a causa di alcune estensioni credo. – Saravanan

+0

No, nessuna estensione di debug. –

3

Soluzione:

Vai al file Program.cs e aggiungere l'usings volete che il vostro finestra immediata per uso, questo funziona sia per console e applicazioni Windows Form

namespace attiene la finestra immediata in una libreria di classi del progetto

Se si utilizza il Im mediate Window in modalità "Design Time" e desiderate fare riferimento ad alcuni namespace, è necessario impostare la modalità ouput su Applicazione Windows e creare un programma che non faccia nulla.

  1. Tasto destro del mouse il progetto in Esplora soluzioni e fare clic su Proprietà
  2. Sotto applicazione, modificare il tipo di uscita: da Class-Library di Applicazione Windows
  3. Aggiungere il seguente dummy-classe al progetto:

Program.cs

using System; 
//Add all the refrences you need immediate window to use here 

namespace YourNamespace 
{ 
    static class Program 
    { 
     static void Main() 
     { 

     } 
    } 
} 
+0

⁺¹, l'aggiunta di uno spazio dei nomi al file «Program.cs» ha fatto davvero il trucco per la finestra Immediata! –

+0

Tranne nel caso del namespace System.Linq e del debugging lambda VS2015, nei file sorgente in cui non è stata ancora eseguita un'espressione linq. Aggiungi una riga 'var temp = Enumerable.Range (1, 1);' prima del punto di interruzione e riavvia per risolvere questo. –

Problemi correlati