Partager via


Modifications de code prises en charge (C#)

Modifier & Continuer gère la plupart des types de modifications du code dans le corps des méthodes. Toutefois, la plupart des modifications en dehors du corps des méthodes et quelques autres à l'intérieur ne peuvent pas s'appliquer pendant le débogage. Pour appliquer ces modifications non prises en charge, vous devez arrêter le débogage et redémarrer avec une version nouvelle du code.

Les modifications suivantes ne peuvent pas être appliquées à du code C# pendant une session de débogage :

  • Modifications à l'instruction en cours ou à toute autre instruction active.

    Les instructions actives incluent toutes les instructions, dans les fonctions figurant dans la pile des appels, qui ont été appelées pour parvenir à l'instruction en cours.

    L'instruction en cours est marquée par un arrière-plan jaune dans la fenêtre source. D'autres instructions actives sont marquées par un arrière-plan grisé et sont en lecture seule. Ces couleurs par défaut peuvent être modifiées dans la boîte de dialogue Options.

  • Modifications aux symboles globaux, notamment :

    • Ajout de nouveaux types.

    • Ajout de méthodes à un type.

    • Modification de la signature d'un type.

    • Ajout de champs, d'événements ou de propriétés à un type.

  • Modification d'une méthode anonyme ou de toute méthode qui contient une méthode anonyme. Ces méthodes sont marquées par un arrière-plan grisé.

  • Ajout d'une nouvelle méthode anonyme.

  • Ajout, suppression ou modification d'attributs.

  • Ajout, suppression ou modification de directives using.

  • Suppression ou modification de variables locales. L'ajout de variables locales est autorisé.

  • Ajout d'un foreach, d'un using ou d'un lock autour de l'instruction active.

  • Modification d'une méthode qui contient une instruction yield return ou yield break.

  • Modification d'un constructeur avec un champ initialisé par une méthode anonyme.

Code unsafe

Les modifications apportées à du code unsafe présentent les mêmes restrictions que celles qui portent sur du code sécurisé, avec une restriction supplémentaire :

  • Modifier & Continuer ne prend pas en charge les modifications de code unsafe dans une méthode qui contient l'opérateur stackalloc. Cela s'applique uniquement aux méthodes actives. Lorsque vous déboguez, toute fonction actuellement dans la pile des appels est une fonction active.

Exceptions

Modifier & Continuer prend en charge les modifications aux blocs catch, finally,et try avec quelques exceptions pour les blocs se trouvant dans des méthodes actives, telles que celles qui se trouvent actuellement dans la pile des appels.

  • Dans une fonction active qui est la fonction la plus récente dans la pile des appels, Modifier & Continuer ne prend pas en charge les modifications suivantes :

    • Ajout d'un bloc catch ou finally autour de l'instruction active.

    • Ajout de gestionnaires d'exceptions imbriqués avec des niveaux d'imbrication supérieurs à six.

  • Dans une fonction active qui n'est pas la fonction la plus récente dans la pile des appels, Modifier & Continuer ne prend pas en charge les modifications suivantes :

    • Ajout d'un bloc catch, finally ou tryautour de l'instruction active.

    • Ajout de gestionnaires d'exceptions imbriqués avec des niveaux d'imbrication supérieurs à six.

    • Modification du code dans un bloc tryqui contient l'instruction active.

Scénarios non pris en charge

Modifier & Continuer n'est pas disponible dans les scénarios de débogage suivants :

  • Débogage du code LINQ. Pour plus d'informations, consultez Débogage LINQ.

  • Débogage en mode mixte (natif/managé).

  • Débogage SQL.

  • Débogage d'un dump Dr. Watson.

  • Modification de code après une exception non gérée, lorsque l'option « Dérouler la pile des appels sur les exceptions non gérées » n'est pas sélectionnée.

  • Débogage d'une application runtime incorporée.

  • Débogage d'une application avec Attacher à au lieu d'exécuter l'application en sélectionnant Démarrer dans le menu Déboguer.

  • Débogage de code optimisé.

  • Débogage d'une version ancienne de votre code après l'échec de génération d'une nouvelle version en raison d'erreurs de build.

Voir aussi

Tâches

Comment : utiliser Modifier & Continuer (C#)

Référence

Modifier & Continuer (Visual C#)