Unsupported Edits in Visual Basic Edit and Continue
Note
This article applies to Visual Studio 2015. If you're looking for the latest Visual Studio documentation, see Visual Studio documentation. We recommend upgrading to the latest version of Visual Studio. Download it here
Edit and Continue les you stop program execution in Break mode, make changes to the executing code, and resume program execution with the newly incorporated changes. Declarative code edits that affect the public structure of a class are generally prohibited, but many edits that you might make to a method, property body, or private declarations within a class are allowed.
If you need to make a change that is not supported, you must stop debugging, make the changes, and start a new debugging session.
Method and Property Body Edits
Unsupported Changes to Static Local Variables: Adding or updating a local variable, or removing a static local variable if that would cause a compilation error.
Unsupported Changes to Generics: Changes to the generic method itself or generic method body are not supported. Instantiation of a generic type or calls to existing generic methods can be added, deleted, or changed.
Other Unsupported Changes
Changing the invocation statement of a method that is on the call stack.
Adding a
Try...Catch
block, when the instruction pointer ends up in theCatch
block or theFinally
block.Removing a
Try...Catch
block, when the instruction pointer is in aCatch
block or theFinally
block.Adding a
Using
block around the current instruction pointer.Adding a
SynchLock
block around the current instruction pointer.
Attribute Edits
Edit and Continue does not support modifying attributes. Specifically, Edit and Continue does not support the following changes:
Defining, editing, or deleting an attribute class.
Adding an attribute.
Editing or removing an existing attribute.
Class Declaration Edits
Most changes to class declarations are not allowed by Edit and Continue while in Break mode. Specifically, Edit and Continue does not support the following changes:
Renaming, deleting, or changing the inheritance of an existing class.
Implementing a new interface or removing the implementation of an interface.
Changing modifiers on a class.
Adding, changing, or removing
ComClass
status.Editing any generic class declaration.
Class Member Declaration Edits
Changes to member declarations are prohibited in most Edit and Continue cases. For example, you cannot change the signature or access level of a member, and you cannot completely remove members if that would cause a compilation error. Specifically, Edit and Continue does not support the following changes:
Shadowing an existing member variable by declaring a global or member variable of the same name in the containing block.
Shadowing a static local variable by declaring a new instance inside a block.
Removing handlers for an event. Adding an event handler is allowed.
Adding a new overloading property or method, unless the property or method is
Private
and there are no occurrences of the name in any active statement.Adding or removing the
WithEvents
clause on a member variable.Deleting a member.
Changing a property or method declaration to stop implementing an interface.
Editing any method that uses generics.
Changing the signature or return type of a non-private property or method.
Overriding or shadowing a member in a base class.
Adding a new field in any class marked with
SequentialLayout
orExplicitLayout
.Changing the
MustInherit
orNotOverridable
status of a method.Changing the access modifiers for a property or method.
Changing the type or read-only status of a field.
Changing a public field.
Compiler Option Edits
While using Edit and Continue in Break mode, you cannot change, add, or remove the following compiler options:
Option Strict
Option Explicit
Option Compare
Constants Edits
Changes to constants while in Edit and Continue mode are very limited. Specifically, Edit and Continue does not support the following changes:
Adding or updating a constant variable.
Changing the type or value of a constant.
Removing a constant.
Delegate and Event Declaration Edits
Some changes to delegates and events are not allowed by Edit and Continue during Break mode. Specifically, Edit and Continue does not support the following changes:
Changing or deleting a delegate definition.
Deleting an event.
Enumeration Edits
Changes to enumerations (Enums
) are not allowed by Edit and Continue during Break Mode. Specifically, Edit and Continue does not support the following changes:
Modifying the underlying type of an
Enum
.Adding, changing, or removing an
Enum
member.Changing the access modifier of an
Enum
.
External Declarations Edits
In general, you cannot change the declarations of external methods during Edit and Continue. Specifically, Edit and Continue does not support the following changes:
Adding or removing an external declaration.
Changing the signature or marshaling attributes of an external declaration.
Imports Edits
Edit and Continue does not allow adding, changing, or removing Imports
statements while in Break mode.
Interface Definition Edits
Although you are frequently allowed to make changes to members that implement interfaces, changes to the actual interface definitions are generally not allowed by Edit and Continue. Specifically, Edit and Continue does not support the following changes:
Adding, changing, or removing interface members.
Deleting an existing interface.
Changing the access modifier of an interface.
Changing the interface inheritance hierarchy.
Module Declaration Edits
Most changes to module declarations are not allowed by Edit and Continue while in Break mode. Specifically, Edit and Continue does not support the following changes:
Creating a new module.
Renaming or deleting an existing module.
Changing the access modifier for a module.
Module Member Declaration Edits
Using Edit and Continue, you can make a variety of changes to module members, such as properties, methods, and fields, while in Break mode. Some changes, however, are not supported. Most notably, Edit and Continue does not support adding, deleting, or changing the type or signature of any members.
Specifically, Edit and Continue does not support the following changes:
Adding a new member unless there are no occurrences of the name in any active statement.
Removing a property or method.
Changing the signature of a property or method.
Adding, renaming, moving, or deleting a field.
Editing any method that uses generics.
Changing the access modifiers for a property or method, for example, changing
Public
toPrivate
.Deleting or changing the type of an existing field.
Nested Type Declaration Edits
Edit and Continue does not support moving a nested type to another namespace or type.
Structure Declaration Edits
Most changes to structure declarations are not allowed by Edit and Continue while in Break mode. Specifically, Edit and Continue does not support the following changes:
Renaming or deleting an existing structure.
Implementing a new interface or removing the implementation of an interface.
Changing the access modifier for a structure.
Structure Member Declaration Edits
Using Edit and Continue, you can make a variety of changes to structure members (properties, methods, and fields) while in Break mode. Some changes, however, are not supported, most notably changes that affect the declaration of structure members. Specifically, Edit and Continue does not support the following changes:
Removing a property or method.
Adding or removing a field.
Changing the signature of a property or method.
Editing any method that uses generics.
Changing whether a property or method declaration implements an interface.
Changing the access modifiers of a property or method (for example, changing
Public
to Private).Removing a field.
Changing the type of a field.
See Also
How to: Apply Edits in Break Mode with Edit and Continue
Edit and Continue (Visual Basic)