Cambios admitidos en el código (C#)
Editar y continuar controla la mayoría de los tipos de cambios de código dentro de los cuerpos de método. Ahora bien, durante la depuración, no es posible efectuar la mayoría de cambios fuera de los cuerpos de método y algunos cambios dentro de estos. Para efectuar dichos cambios no compatibles, es necesario detener la depuración y reiniciar con una versión nueva del código.
Los siguientes cambios no se pueden aplicar al código de C# durante una sesión de depuración:
Cambios en la instrucción actual o en cualquier otra instrucción activa.
Entre las instrucciones activas se incluye cualquier instrucción, en funciones de la pila de llamadas, que haya sido llamada para llegar a la instrucción actual.
Un fondo amarillo marca la instrucción actual en la ventana de código fuente. Un fondo sombreado marca otras instrucciones activas; son de solo lectura. Estos colores predeterminados se pueden cambiar en el cuadro de diálogo Opciones.
Cambios en símbolos globales, incluidos los siguientes:
Agregar nuevos tipos.
Agregar métodos a un tipo.
Cambiar la firma de un tipo.
Agregar campos, eventos o propiedades a un tipo.
Editar un método anónimo o cualquier método que contenga un método anónimo. Un fondo sombreado marca estos métodos.
Agregar un nuevo método anónimo.
Agregar, quitar o cambiar atributos.
Agregar, quitar o cambiar directivas using.
Quitar o cambiar variables locales. Se permite agregar variables locales.
Agregar una directiva foreach, using o lock en torno a la instrucción activa.
Modificar un método que contiene una instrucción yield return o yield break.
Cambiar un constructor con un campo inicializado por un método anónimo.
Código no seguro
Los cambios en el código no seguro tienen las mismas limitaciones que los cambios en el código seguro, con una restricción adicional:
- Editar y continuar no admite cambios en el código no seguro que esté incluido en un método que contiene el operador stackalloc. Esto solo se aplica a los métodos activos. Cuando se está depurando, cualquier función que se encuentre actualmente en la pila de llamadas es una función activa.
Excepciones
Editar y continuar admite cambios en los bloques catch, finally y try, con algunas excepciones para los bloques de los métodos activos, por ejemplo los métodos que se encuentran actualmente en la pila de llamadas.
En una función activa, que es la función más reciente en la pila de llamadas, Editar y continuar no admite:
Agregar un bloque catch, finally o en torno a la instrucción activa.
Agregar controladores de excepciones anidados con niveles de anidamiento mayores que seis.
En una función activa, que no es la función más reciente en la pila de llamadas, Editar y continuar no admite:
Agregar un bloque catch, finally o try en torno a la instrucción activa.
Agregar controladores de excepciones anidados con niveles de anidamiento mayores que seis.
Cambiar el código dentro de un bloque try que contiene la instrucción activa.
Escenarios no admitidos
La opción Editar y continuar no se encuentra disponible en los siguientes escenarios de depuración:
Depurar código LINQ. Para obtener más información, vea Depurar LINQ.
Depuración en modo mixto (nativa o administrada).
Depuración de SQL.
Depuración de un volcado de Dr. Volcado de memoria de Watson.
Editar código después de una excepción no controlada, cuando no se ha seleccionado la opción "Desenredar la pila de llamadas de las excepciones no controladas".
Depuración de una aplicación incrustada en tiempo de ejecución.
Depurar una aplicación que tiene seleccionada la opción Adjuntar a en lugar de ejecutar la aplicación eligiendo Iniciar en el menú Depurar.
Depuración de código optimizado.
Depurar una versión anterior del código cuando no ha sido posible generar una nueva versión debido a errores de compilación.
Vea también
Tareas
Cómo: Utilizar Editar y continuar (C#)