Modifications non prises en charge dans Modifier & Continuer (Visual Basic)
Modifier & Continuer vous permet d'arrêter l'exécution d'un programme en mode Arrêt, d'apporter des modifications à l'exécution de code, puis de continuer l'exécution du programme avec les modifications récemment incorporées. Les modifications de code déclaratif qui affectent la structure publique d'une classe sont interdites, mais de nombreuses modifications que vous pouvez apporter à une méthode, au corps d'une propriété ou à des déclarations privées dans une classe sont autorisées. Autant que possible, Modifier & Continuer marque du code impossible à modifier par la couleur gris clair.
Si vous devez effectuer une modification qui n'est pas prise en charge, arrêtez le débogage, procédez aux modifications et démarrez une nouvelle session de débogage.
Dans cette rubrique
Les sections suivantes décrivent les modifications non prises en charge pour Modifier & Continuer.
Modifications relatives au corps d'une méthode et d'une propriété |
|
Modifications relatives aux déclarations de membre de classe |
|
Modifications relatives aux déclarations de membre de module |
|
Modifications relatives au corps d'une méthode et d'une propriété
Modifications aux variables locales statiques non prises en charge
- Suppression d'une variable locale statique.
Modifications aux constructions d'itération non prises en charge
Modification de la condition d'une boucle While, lorsque le pointeur d'instruction se trouve dans la condition.
Modification de la limite inférieure ou supérieure d'une instruction For, lorsque le pointeur d'instruction se trouve dans l'expression.
Ajout ou suppression d'une boucle Next, lorsque le pointeur d'instruction est utilisé dans l'expression d'énumérateur.
Ajout d'une boucle For Each, lorsque le pointeur d'instruction se trouve dans le corps de la boucle.
Changement de l'itérateur d'une boucle For Each, lorsque le pointeur d'instruction se trouve dans l'expression d'énumérateur ou le corps de la boucle.
Changement de l'expression d'énumérateur d'une boucle For Each, lorsque le pointeur d'instruction se trouve dans l'expression d'énumérateur.
Modifications aux génériques non prises en charge
- Les modifications apportées à la méthode générique elle-même ou au corps de méthode générique ne sont pas prises en charge. L'instanciation d'un type générique ou les appels aux méthodes génériques existantes peuvent être ajoutés, supprimés ou modifiés.
Autres modifications non prises en charge
Modification de l'instruction d'appel d'une méthode située sur la pile des appels.
Ajout d'un bloc Try...Catch, lorsque le pointeur d'instruction finit dans le bloc Catch ou le bloc Finally.
Suppression d'un bloc Try...Catch, lorsque le pointeur d'instruction se trouve dans le bloc Catch ou le bloc Finally.
Ajout d'au moins six instructions Try imbriquées autour du pointeur d'instruction en cours.
Ajout d'un bloc Using autour du pointeur d'instruction en cours.
Ajout d'un bloc SynchLock autour du pointeur d'instruction en cours.
Ajout, suppression ou modification d'un #region défini par l'utilisateur.
Modifications relatives aux attributs
Modifier & Continuer ne prend pas en charge la modification d'attributs. En particulier, la fonctionnalité Modifier & Continuer ne prend pas en charge les modifications suivantes :
définition, modification ou suppression d'une classe d'attributs ;
ajout d'un attribut ;
modification ou suppression d'un attribut.
Modifications relatives aux déclarations de classe
La plupart des modifications apportées aux déclarations de classe ne sont pas autorisées par Modifier & Continuer en mode Arrêt. En particulier, la fonctionnalité Modifier & Continuer ne prend pas en charge les modifications suivantes :
Création d'une nouvelle classe.
Attribution d'un nouveau nom, suppression ou modification de l'héritage d'une classe existante.
Implémentation d'une nouvelle interface ou suppression de l'implémentation d'une interface.
Modification d'un des modificateurs suivants sur une classe : MustInherit, NotInheritable ou Shared.
Ajout, modification ou suppression de l'état ComClass.
Modification du modificateur d'accès d'une classe.
Modification d'une déclaration de classe générique.
Modifications relatives aux déclarations de membre de classe
Les modifications apportées aux déclarations de membre sont interdites dans la plupart des cas de type Modifier & Continuer. Par exemple, vous ne pouvez pas modifier la signature ou le niveau d'accès d'un membre, vous ne pouvez pas déclarer de nouvelle méthode ou propriété non privée et vous ne pouvez pas complètement supprimer des membres en mode Arrêt. En particulier, la fonctionnalité Modifier & Continuer ne prend pas en charge les modifications suivantes :
Occultation d'une variable membre existante en déclarant une variable globale ou membre du même nom dans le bloc conteneur.
Occultation d'une variable locale statique en déclarant une nouvelle instance à l'intérieur d'un bloc.
Ajout d'une propriété ou méthode nouvelle, non privée. Ajout d'une propriété ou méthode Private autorisé.
Ajout d'un nouveau champ, à moins qu'il ne soit Private et qu'il n'y ait pas d'occurrences du nom de champ dans une instruction active.
Ajout d'un nouveau champ Private dans une classe marquée avec SequentialLayout ou ExplicitLayout.
Ajout ou suppression d'un constructeur.
Suppression de gestionnaires pour un événement. L'ajout d'un gestionnaire d'événements est autorisé.
Ajout d'une nouvelle propriété ou méthode de surcharge, à moins que la propriété ou méthode ne soit Private et qu'il n'y ait pas d'occurrences du nom dans une instruction active.
Ajout ou suppression de la clause WithEvents sur une variable membre.
Suppression d'un membre.
Modification d'une déclaration de propriété ou de méthode pour arrêter l'implémentation d'une interface.
Modification de toute méthode qui utilise des génériques.
Modification de la signature ou du type de retour d'une propriété ou méthode non privée.
Substitution ou occultation d'un membre dans une classe de base.
Modification de l'état MustInherit ou NotOverridable d'une méthode.
Modification des modificateurs d'accès pour une propriété ou méthode.
Modification du type ou de l'état en lecture seule d'un champ.
Modification d'un champ public.
Modifications relatives aux options du compilateur
En utilisant Modifier & Continuer en mode arrêt, vous ne pouvez pas changer, ajouter ou supprimer les options de compilateur suivantes :
Option Strict
Option Explicit
Option Compare
Modifications relatives aux compilations conditionnelles
La plupart des modifications aux directives de compilation conditionnelles ne sont pas autorisées en mode Modifier & Continuer. En particulier, la fonctionnalité Modifier & Continuer ne prend pas en charge les modifications suivantes :
Ajout ou suppression de directives de compilation conditionnelles.
Ajout, suppression ou modification de l'expression d'évaluation d'une instruction de compilation conditionnelle.
Modifications relatives aux constantes
Les modifications des constantes en mode Modifier & Continuer sont très limitées. En particulier, la fonctionnalité Modifier & Continuer ne prend pas en charge les modifications suivantes :
La définition d'une nouvelle constante, à moins qu'elle ne soit privée et qu'il n'y ait pas d'occurrences du nom de la constante dans une instruction active.
Modification du type ou de la valeur d'une constante.
Suppression d'une constante.
Modifications relatives aux déclarations Delegate et Event
La plupart des modifications apportées aux délégués et aux événements ne sont pas autorisées par Modifier & Continuer en mode Arrêt. En particulier, la fonctionnalité Modifier & Continuer ne prend pas en charge les modifications suivantes :
Définition d'un nouveau délégué.
Changement ou suppression d'une définition de délégué.
Définition d'un nouvel événement.
Suppression d'un événement.
Modifications relatives aux énumérations
Les modifications apportées aux énumérations (Enums) ne sont pas autorisées par Modifier & Continuer en mode Arrêt. En particulier, la fonctionnalité Modifier & Continuer ne prend pas en charge les modifications suivantes :
Définition d'un nouvel Enum.
Modification du type sous-jacent d'un Enum.
Ajout, changement ou suppression d'un membre Enum.
Modification du modificateur d'accès d'un Enum.
Modifications relatives aux déclarations externes
En général, vous ne pouvez pas modifier les déclarations de méthodes externes pendant Modifier & Continuer. En particulier, la fonctionnalité Modifier & Continuer ne prend pas en charge les modifications suivantes :
Ajout ou suppression d'une déclaration externe.
Modification de la signature ou des attributs de marshaling d'une déclaration externe.
Modifications relatives aux importations
Modifier & Continuer n'autorise pas l'ajout, le changement ou la suppression d'instructions Imports en mode Arrêt.
Modifications relatives aux définitions d'interface
Bien que vous soyez fréquemment autorisés à apporter des modifications aux membres qui implémentent des interfaces, les modifications aux définitions d'interface ne sont pas autorisées en général par Modifier et Continuer. En particulier, la fonctionnalité Modifier & Continuer ne prend pas en charge les modifications suivantes :
Définition d'une nouvelle interface.
Ajout, modification ou suppression de membres d'interface.
Suppression d'une interface existante.
Modification du modificateur d'accès d'une interface.
Modification de la hiérarchie d'héritage de l'interface.
Modifications relatives aux déclarations de module
La plupart des modifications aux déclarations de module ne sont pas autorisées par Modifier & Continuer en mode Arrêt. En particulier, la fonctionnalité Modifier & Continuer ne prend pas en charge les modifications suivantes :
Création d'un nouveau module.
Attribution d'un nouveau nom ou suppression d'un module existant.
Modification du modificateur d'accès d'un module.
Modifications relatives aux déclarations de membre de module
À l'aide de Modifier & Continuer, vous pouvez apporter différentes modifications aux membres de module, tels que propriétés, méthodes et champs, en mode Arrêt. Certaines modifications ne sont toutefois pas prises en charge. Plus particulièrement, Modifier & Continuer ne prend pas en charge l'ajout, la suppression ou la modification du type ou de la signature de membres non privés.
En particulier, la fonctionnalité Modifier & Continuer ne prend pas en charge les modifications suivantes :
Ajout d'un nouveau membre, à moins que ce membre soit Private et qu'il n'existe pas d'occurrence de ce nom dans aucune instruction active.
Suppression d'une propriété ou méthode.
Modification de la signature d'une propriété ou méthode non privée.
Modification de toute méthode qui utilise des génériques.
Modification des modificateurs d'accès d'une propriété ou d'une méthode, par exemple, remplacer Public par Private.
Suppression ou modification du type d'un champ existant.
Modifications relatives aux déclarations de type imbriqué
En général, vous ne pouvez modifier les déclarations de type imbriqué en mode arrêt pendant que vous utilisez Modifier & Continuer. En particulier, la fonctionnalité Modifier & Continuer ne prend pas en charge les modifications suivantes :
Ajout d'un nouveau type imbriqué.
Déplacement d'un type imbriqué à un autre espace de noms ou type.
Modifications relatives aux déclarations de structure
La plupart des modifications aux déclarations de structure ne sont pas autorisées par Modifier & Continuer en mode Arrêt. En particulier, la fonctionnalité Modifier & Continuer ne prend pas en charge les modifications suivantes :
Création d'une nouvelle structure.
Attribution d'un nouveau nom ou suppression d'une structure existante.
Implémentation d'une nouvelle interface ou suppression de l'implémentation d'une interface.
Modification du modificateur d'accès d'une structure.
Modifications relatives aux déclarations de membre de structure
À l'aide de Modifier & Continuer, vous pouvez apporter différentes modifications aux membres de structure (propriétés, méthodes et champs) en mode Arrêt. Toutefois, certaines modifications ne sont pas prises en charge, en particulier celles qui affectent la déclaration de membres de structure. En particulier, la fonctionnalité Modifier & Continuer ne prend pas en charge les modifications suivantes :
L'ajout ou la suppression d'une propriété ou d'une méthode, y compris des méthodes de constructeur (à moins que la méthode ne soit Privée et qu'aucune déclaration active ne contienne d'occurrence du nom de champ).
Modification de la signature d'une propriété ou d'une méthode.
Modification de toute méthode qui utilise des génériques.
Sélection d'une déclaration de propriété ou de méthode pour implémenter une interface.
Modification des modificateurs d'accès d'une propriété ou d'une méthode (par exemple, remplacer Public par Privé).
Ajout ou suppression d'un champ.
Modification d'un type de champ.