Condividi tramite


Modifiche al codice supportate (C#)

La funzionalità Modifica e continuazione è in grado di gestire la maggior parte dei tipi di modifiche al codice all'interno del corpo del metodo. Tuttavia, non è possibile applicare durante il debug la maggior parte delle modifiche all'esterno del corpo del metodo nonché alcune modifiche all'interno del corpo del metodo. Per applicare tali modifiche non supportate, interrompere il debug e riavviarlo utilizzando una versione aggiornata del codice.

Le seguenti modifiche non possono essere applicate al codice C# durante una sessione di debug:

  • Modifiche all'istruzione corrente o a qualsiasi altra istruzione attiva.

    Le istruzioni attive includono qualsiasi istruzione, nelle funzioni presenti nello stack di chiamate, che è stata chiamata per ottenere l'istruzione corrente.

    L'istruzione corrente è contrassegnata con uno sfondo giallo nella finestra del codice sorgente. Le altre istruzioni attive sono contrassegnate con uno sfondo ombreggiato e sono di sola lettura. È possibile cambiare i colori predefiniti nella finestra di dialogo Opzioni.

  • Modifiche a simboli globali, tra cui:

    • Aggiunta di nuovi tipi.

    • Aggiunta di metodi a un tipo.

    • Modifica della firma di un tipo.

    • Aggiunta di campi, eventi o proprietà a un tipo.

  • Modifica di un metodo anonimo o di qualsiasi metodo contenente un metodo anonimo. Questi metodi sono contrassegnati con uno sfondo ombreggiato.

  • Aggiunta di un nuovo metodo anonimo.

  • Aggiunta, rimozione o modifica di attributi.

  • Aggiunta, rimozione o modifica delle direttive using.

  • Rimozione o modifica di variabili locali. L'aggiunta di variabili locali è consentita.

  • Aggiunta di foreach, using o lock intorno all'istruzione attiva.

  • Modifica di un metodo che contiene un'istruzione yield return o yield break.

  • Modifica di un costruttore con un campo inizializzato da un metodo anonimo.

Codice di tipo unsafe

Le modifiche al codice di tipo unsafe sono soggette alle stesse limitazioni delle modifiche al codice di tipo safe, con l'aggiunta della seguente:

  • La funzionalità Modifica e continuazione non supporta le modifiche al codice di tipo unsafe esistente all'interno di un metodo che contiene l'operatore stackalloc. Questa limitazione è valida solo per i metodi attivi. Durante il debug, qualsiasi funzione attualmente presente nello stack di chiamate è considerata attiva.

Eccezioni

La funzionalità Modifica e continuazione supporta le modifiche a blocchi catch, finally e try, con alcune eccezioni per i blocchi inclusi nei metodi attivi, ad esempio i metodi attualmente presenti nello stack di chiamate.

  • In una funzione attiva, che è la funzione più recente nello stack di chiamate, la funzionalità Modifica e continuazione non supporta quanto segue:

    • Aggiunta di un blocco catch o finally intorno all'istruzione attiva.

    • Aggiunta di gestori di eccezioni annidati con più di sei livelli di annidamento.

  • In una funzione attiva, che non è la funzione più recente nello stack di chiamate, la funzionalità Modifica e continuazione non supporta quanto segue:

    • Aggiunta di un blocco catch, finally o try intorno all'istruzione attiva.

    • Aggiunta di gestori di eccezioni annidati con più di sei livelli di annidamento.

    • Modifica di codice all'interno di un blocco try contenente l'istruzione attiva.

Scenari non supportati

Modifica e continuazione non è disponibile nei seguenti scenari di debug:

  • Debug di codice LINQ. Per ulteriori informazioni, vedere Debug di LINQ.

  • Debug in modalità mista (nativo/gestito).

  • Debug SQL.

  • Debug di un dump di Dr. Watson.

  • Modifica di codice dopo un'eccezione non gestita, quando l'opzione "Rimuovi stack di chiamate su eccezioni non gestite" non è selezionata.

  • Debug di un'applicazione di runtime incorporata.

  • Debug di un'applicazione che dispone dell'opzione Connetti a invece dell'esecuzione dell'applicazione scegliendo Avvia dal menu Debug.

  • Debug di codice ottimizzato.

  • Debug di una versione precedente del codice dopo l'esito negativo della compilazione di una nuova versione a causa di errori di compilazione.

Vedere anche

Attività

Procedura: utilizzare Modifica e continuazione (C#)

Riferimenti

Modifica e continuazione (Visual C#)