6

MODIFICA: quando eseguo questo codice in Visual Studio 2013, il debugger mostra Utc, non Local. È un bug in Visual Studio 2015 Debugger.VS2015 Debugger che mostra valori errati?

MODIFICA: ha preso il codice e inserito l'app della console autonoma, ma non può essere riprodotto in nessuna delle versioni di VS. Bummer.

Qualcuno può spiegarmi come è possibile ciò che si vede in questo screenshot ?!

  1. On line 298, endingTimePeriodStartDate viene ridefinito come il suo valore Date ma impostato su DateTimeKind.Utc.
  2. Sulla linea 300, se endingTimePeriodStartDate non è in realtà DateTimeKind.Utc, viene generata un'eccezione.
  3. Il punto di interruzione di debug on line 305 è colpito, cioè l'eccezione sulla linea 302 non è stato gettato, il che significa endingTimePeriodStartDate.Kind == DateTimeKind.Utc
  4. (ho anche fatto un System.Diagnostic.Debug.WriteLine(endingTimePeriodStartDate.Kind) prima linea di 305 e stampe “UTC” nella finestra Output).
  5. quando guardo endingTimePeriodStartDate nei locali e guardare finestre del debugger, e quando il mouse con il mouse sopra la variabile, la proprietà Kind mostra DateTimeKind.Local

enter image description here

+4

Puoi riprodurlo in una app breve ma completa che potremmo provare tutti per noi stessi? –

+3

Mentre si restituisce un 'Task', suppongo che si usi la programmazione' async' -> è possibile che un altro thread cambi 'endingTimePeriodStartDate' nel piccolo spazio tra Ln 300 e 305? – ChrFin

+0

Puoi riprodurlo? Potrebbe essere un brutto errore soft – Bgl86

risposta

2

Di solito il debugger mostrerà i numeri di linea sbagliata, e vai nel vecchio codice se sta eseguendo una versione diversa della dll (una versione precedente) rispetto a quella mostrata dal tuo codice. Questo accade

  • quando v'è una sorta di caching
  • quando la prima versione di rotazione non è stato chiuso correttamente, o è ancora in esecuzione in un altro processo.
  • quando il Visual Studio non punta al codice corretto

solito per risolvere questo problema, è necessario:

(Inizia provando solo un "pulito" e "ricostruire")

  1. Arresta tutti i progetti di Visual Studio in esecuzione o di debug.
  2. Chiudere tutte le soluzioni e le finestre di Visual Studio, in modo che Visual Studio non sia in esecuzione.
  3. (Se il passaggio successivo non risolve il problema, la prossima volta riavvia il computer prima di passare al passaggio successivo)
  4. Riapri solo la soluzione che è necessario eseguire. Colpire "Soluzione pulita". Quindi "Ricostruisci la soluzione".

Verificare se è stato risolto il problema.

  1. Eliminare manualmente le cartelle bin: (se la pulizia/ricostruzione non ha funzionato)

5,1 Se la paura, il backup directory di origine complesso. Dopo che tutto funziona, elimina il backup ...

5.2 andare manualmente nei progetti dipendenti (a cui si fa riferimento nel progetto "codice errato visualizzato") e in ognuno di essi, andare nell'oggetto e nella cartella bin ed eliminare tutto ciò che è stato creato automaticamente da lì - in altre parole, tutto ciò che non hai inserito manualmente. Di solito è tutto. Non preoccuparti, Visual Studio ricrea le directory di Debug e Release e le riempie.

Elimina anche l'oggetto e il cestino del progetto.

Ricostruisci tutto.

Problemi correlati