Editar y continuar: "No se permiten cambios cuando ..."

108

Incluso si creo un proyecto limpio de WinForms, Editar y continuar no funciona y me da el error:

No se permiten cambios cuando el depurador se ha adjuntado a un proceso que ya se está ejecutando o el código que se está depurando se optimizó durante la compilación o la ejecución.

  1. La opción Editar y continuar está marcada en Herramientas → Opciones → Depuración.
  2. La optimización no está habilitada.
  3. Parece que no hay ningún generador de perfiles administrado configurado.
  4. Estoy ejecutando en modo de depuración
  5. Estoy ejecutando una CPU x64 y Windows XP de 32 bits, pero configurar el objetivo de la plataforma en x86 en lugar de AnyCpu no ayuda.
  6. Reparar la instalación de Visual Studio no ayuda.

También encontré este artículo en el sitio web de MSDN:

Escenarios no admitidos

Editar y continuar no está disponible en los siguientes escenarios de depuración:

  • Depurando en Windows 98.

  • Depuración de modo mixto (nativo / administrado).

  • Depuración de SQL.

  • Depurando un volcado de Dr. Watson.

  • Editar código después de una excepción no controlada, cuando la opción "Desenrollar la pila de llamadas en excepciones no controladas" no está seleccionada.

  • Depuración de una aplicación en tiempo de ejecución incorporada.

  • Depurar una aplicación con Adjuntar a en lugar de ejecutar la aplicación con Iniciar desde el menú Depurar.

  • Depuración de código optimizado.

  • Depurar código administrado cuando el destino es una aplicación de 64 bits. Si desea utilizar Editar y continuar, debe establecer el destino en x86. (Propiedades del proyecto, pestaña Compilar, Configuración del compilador avanzado).

  • Depurar una versión anterior de su código después de que no se pudo compilar una nueva versión debido a errores de compilación.

Pero puedo responder "No" a todos los elementos de esta lista.

Funcionó antes, pero hace varios días dejó de funcionar y no sé cuál podría ser la razón.

codificador nocturno
fuente
2
¿Está ejecutando en modo de lanzamiento? ¿Está ejecutando X64?
Sam Saffron
¿El método que está tratando de E&C es realmente corto? tal vez se insertó (aunque creo que la inserción no ocurre en la depuración)
Sam Saffron
No funciona con ningún método, ni muy corto ni muy largo.
codificador nocturno
¿Intentaste una instalación de reparación ya?
Richard Anthony Hein
3
Supongo que debería agregar que E&C es una característica bastante compleja. La matriz de prueba del depurador es enorme y conseguir que E&C funcione en todas las combinaciones sería extremadamente difícil. Pero también es una característica realmente importante, por lo que asumimos muchas limitaciones para asegurarnos de que se distribuyera. Dentro de las limitaciones deliberadas que le pusimos, es una de las características de mayor calidad que enviamos.
Jay Bazuzi

Respuestas:

21

Finalmente pude resolver el problema: DESINSTALAR Gallio

Gallio parece tener bastantes asperezas y es mejor no usar MbUnit 3.0 sino usar el marco MbUnit 2.0 pero usar el corredor gallio, que está ejecutando sin instalar desde el instalador (que también instaló un complemento de Visual Studio).

Por cierto, tuve el problema incluso después de "deshabilitar" el complemento Gallio. Solo la desinstalación resolvió el problema.

PD. Editado por nightcoder: ¡
En mi caso, deshabilitar TypeMock Isolator (marco burlón) finalmente ayudó ! ¡Editar y continuar ahora funciona!

Aquí está la respuesta del soporte de TypeMock:

Después de profundizar en el problema de editar y continuar, y de conversar al respecto con Microsoft, llegamos a la conclusión de que no se puede resolver para Isolator. Isolator implementa un generador de perfiles CLR y, de acuerdo con nuestra investigación, una vez que un generador de perfiles CLR está habilitado y adjunto, editar y continuar se deshabilita automáticamente. Lamento decir que esto ya no se considera un error, sino una limitación de Isolator.

codificador nocturno
fuente
69

Otras soluciones aplicables

A continuación se muestra una lista incompleta y desordenada de posibles soluciones que puede probar si * está tratando de corregir Editar y continuar rápidamente.

  • Asegúrate de estar en modo de depuración
  • Asegúrese de no iniciar un proceso de modo mixto
  • Intente configurar el destino de la CPU en x86 en lugar de AnyCPU (en máquinas x64)
  • Desmarque la casilla de verificación Optimizar código para el modo de depuración en Propiedades del proyecto-> Depurar
  • Desmarque Habilitar optimizaciones en la configuración avanzada del compilador
  • (ASP.NET) Verifique la respuesta del codificador nocturno si es el caso
  • (ASP.NET) Verifique esta respuesta (por matrixugly) si es el caso
  • (ASP.NET) Asegúrese de tener habilitado Editar y continuar en la pestaña Web (vs2010)
  • (ASP.NET) Vaya a Propiedades> Web> Servidores y asegúrese de que Habilitar y continuar esté marcado en Usar servidor de desarrollo de Visual Studio .
  • (ASP.NET WebAPI) Asegúrese de que se ha detenido en el método del controlador utilizando un punto de interrupción, antes de intentar editarlo.
  • (vs2017) Vaya a Herramientas> Opciones> Depuración y desmarque (anule la selección) 'Editar y continuar'. En realidad, esto es lo opuesto al consejo "convencional" (vea algunos otros puntos en esta publicación). No le permite realizar cambios en su programa en ejecución (es decir, no intercambia en caliente los cambios de código que realiza); simplemente le permite editar su código (es decir, evita ese mensaje molesto y "bloquea" su editor ).
  • Vaya a Herramientas> Opciones> Depuración> General y asegúrese de que Requerir que los archivos de origen coincidan exactamente con la versión original esté desmarcado.
  • Marque Habilitar asignador de montón de depuración de Windows (solo nativo) [VS Community 2017]
  • ¿Estás usando Microsoft Fakes? Inhibe Editar y continuar.
  • Elimine todas las instancias * .vshost.exe seleccionando Finalizar árbol de proceso en el Administrador de tareas . VS regenerará una instancia correcta.
  • Elimine todos los puntos de interrupción con Depurar-> Eliminar todos los puntos de interrupción
  • Habilitar y continuar existe en el menú Herramientas> Opciones> Depuración y también en Configuración del proyecto . Asegúrese de comprobar ambos lugares. editar y continuar no es compatible con la configuración ampliada de Intellitrace.
  • Asegúrese de que la Información de depuración en Propiedades del proyecto> Generar> Avanzado> Salida> Información de depuración esté configurada como Completa
  • Es posible que algún complemento esté interfiriendo. Verifique desactivando / desinstalando y luego intente nuevamente las otras soluciones.
  • Si no está prestando suficiente atención, el error que obtiene al intentar solucionarlo puede cambiar a otra cosa que sea más fácil de diagnosticar. Por ejemplo, un método que contiene una expresión lambda no puede admitir editar y continuar.
  • Asegúrese de que la variable del sistema COR_ENABLE_PROFILINGno esté establecida en 1. Algunos perfiladores configuran esto al instalar y lo dejan así después de desinstalar. Abra un símbolo del sistema y escriba setpara verificar rápidamente si su sistema está afectado, si es así, elimine la variable o configúrela en 0:

    • En Windows 8 y superior, busque Sistema (Panel de control).
    • Haga clic en el enlace Configuración avanzada del sistema .
    • Haga clic en Variables de entorno .
    • Eliminar COR_ENABLE_PROFILING
  • Tenga en cuenta los escenarios no admitidos (como se informa en la pregunta) y las ediciones no admitidas .


* por 'usted', me refiero al visitante de la página que está golpeando su cabeza en un teclado para encontrar la solución.


¡Siéntase libre de editar esta respuesta para agregar su solución si no aparece aquí!

beppe9000
fuente
5
Era el COR_ENABLE_PROFILING ... no tengo idea de por qué se configuró. Gracias. Dejando de golpear mi cabeza en el teclado ahora.
Florian Lagg
2
Intenté todo pero funcionó. Luego me di cuenta de que tenía que estar en modo de interrupción (depurar-> romper todo) o en un punto de interrupción. Agregue esto a su lista. msdn.microsoft.com/en-us/library/7932e88z.aspx
Niloofar
1
Funciona para mí, gracias, la cuarta línea "Desmarque la casilla de verificación Optimizar código para el modo de depuración en Propiedades del proyecto-> Depurar"
Aljohn Yamaro
2
Lo único que me resolvió no se menciona aquí: tuve que deshabilitar (desmarcar) la opción "Habilitar editar y continuar" en Herramientas> Opciones> Depuración. Esto es todo lo contrario de lo que pensaría intuitivamente, pero esto es lo que lo solucionó para mí (es decir, evitó ese mensaje molesto y solo me dejó editar mi código).
leo
1
@leo Es un wiki de la comunidad para que pueda editar libremente. ¿No te funciona el botón "editar"? Veo que tienes suficiente reputación para hacer eso. PD. Agregué una referencia a su respuesta para que haya menos dispersión.
beppe9000
23

Si está depurando una aplicación ASP.NET, vaya a propiedades> web> Servidores y asegúrese de que "habilitar y continuar" esté marcado en Usar Visual Studio Development Server.

viggity
fuente
3
también es necesario presionar Pausa durante la depuración, luego poder editar el código
Alexey Obukhov
Si uso iis locales, "habilitar y continuar" está deshabilitado
Khoshtarkib
11

Yo tuve el mismo problema. Incluso reinstalé VS 2008 pero el problema no desapareció. Sin embargo, cuando eliminé todos los puntos de interrupción, comenzó a funcionar.

Debug->Delete All Breakpoints

Creo que estaba sucediendo porque había eliminado una página aspx que tenía puntos de interrupción en su código y luego creé otra página con el mismo nombre. Esto probablemente confundió al VS 2008.

Amer
fuente
5

Un par de cosas para comprobar

  • Asegúrese de que su compilación esté configurada para depurar vs.
  • Asegúrese de no iniciar un proceso de modo mixto
  • Si está en una máquina de 64 bits, asegúrese de establecer el destino de la CPU en x86 en lugar de AnyCPU

EDITAR

No creo que esto deba importar, pero asegúrese de que el proceso de alojamiento esté habilitado para la plataforma de destino. Probablemente no ayude.

Si repros para nuevos proyectos, entonces podría ser algo aún más sutil. Intentaría lo siguiente.

  • Copia de seguridad HKCU: \ Software \ Wow6432Node \ VisualStudio \ 9.0 (tal vez solo cambie el nombre)
  • Eliminar la misma clave
  • Prueba la reproducción de nuevo
JaredPar
fuente
2
¿Qué es un proceso de modo mixto? Incluso probé un nuevo proyecto winforms.
codificador nocturno
No tengo el HKCU: \ Software \ Wow6432Node \ node
nightcoder
@nightcoder, luego intente HKCU: \ Software \ Microsoft \ VisualStudio \ 9.0
JaredPar
5

Ninguna de las soluciones anteriores funcionó para mí (ejecutándose en una máquina 64x).

Finalmente hice clic en 'advanced compiler settings'y DESMARCAR 'enable optimizations 'y ahora puedo recorrer el código y editar mientras depuro.

Nifle
fuente
2
Esto parece ser solo Visual Basic: msdn.microsoft.com/en-us/library/07bysfz2%28v=vs.100%29.aspx
Marcel
¡Funciona para mi! VS2013, VB.Net, Frame 3.5
MiBol
1
¿Y dónde están estos escenarios?
vapcguy
5

"Editar y continuar", cuando está habilitado, solo le permitirá editar código cuando esté en modo de interrupción: por ejemplo, haciendo que la ejecución se detenga por una excepción o al llegar a un punto de interrupción.

¡Esto implica que no puede editar el código cuando la ejecución no está en pausa! Cuando se trata de depurar proyectos web (ASP.NET), esto es muy poco intuitivo, ya que a menudo querrá hacer cambios entre solicitudes. En este momento, el código que su (probablemente) depuración no se está ejecutando, ¡pero tampoco está en pausa!
Para resolver esto, puede hacer clic en "Romper todo" (o presionar Ctrl+ Alt+ Break). Alternativamente, establezca un punto de interrupción en algún lugar (por ejemplo, en su Page_Loadevento), luego vuelva a cargar la página para que la ejecución se detenga cuando llegue al punto de interrupción, y ahora puede editar el código. Incluso código en .csarchivos.

uno
fuente
4

Para mí, por una razón que no entiendo, la configuración "Generar información de depuración" en la "Configuración avanzada del compilador" se estableció en "solo pdb" en lugar de "Completo".

De forma predeterminada, este parámetro siempre se establece en "Completo", pero un misterioso poltergeist ha cambiado este parámetro anoche. :)

PD: estoy en Visual Basic .Net con Visual Studio 2010

Samuel
fuente
4

Si su preocupación es con una aplicación ASP.NET, asegúrese de tener habilitado editar y continuar en la pestaña web (vs2010). También había una configuración separada para la depuración de ASP.NET en versiones anteriores.

Saludos,

Adán.

Adán
fuente
4

Descubrí que a pesar de que en las propiedades del proyecto, la pestaña de compilación y depuración está configurada en Depurar y todas las demás configuraciones son correctas, todavía recibo el mensaje, sin embargo, después de investigar un poco más en el menú Compilar, seleccione Administrador de configuraciones ... y asegúrese de que Depurar esté seleccionado en dos lugares allí también. imagínate ... ¿cuántos lugares diferentes necesitan para configurar la depuración ?????? a pesar de que configuró Proyecto - Configuración en Depurar y luego en Generar - Administrador, no se cambia, por lo que también ha cambiado la misma configuración allí. Configuración del proyecto: parece un problema de Microsoft nuevamente .......

RAL
fuente
4

Este problema se debe a la configuración de Intellitrace

Si Intellitrace está habilitado, asegúrese de que solo el evento Intellitrace esté marcado

De lo contrario, esto no permitirá editar y continuar.

Si hace clic en las opciones de Intellitrace, verá las advertencias.

KuldeepVerma
fuente
¡Este es el problema para mí!
beppe9000
Busqué "Intellitrace" en todas las opciones de Visual Studio Tools y no existe tal opción en VS Community 2017. Un poco más de detalle aquí ayuda.
vapcguy
4

El siguiente disparo me ayudó a usar VS2010:

vaya a Herramientas, Opciones, Depuración, General y asegúrese de que "Requerir que los archivos fuente coincidan exactamente con la versión original" no esté marcado.

Vinay
fuente
3

Eso sucede cuando el depurador no ha alcanzado un punto de interrupción o no ha pulsado Romper todo (pausa). No podría ser tan simple, ¿verdad?

Richard Anthony Hein
fuente
Ocurre cuando el depurador ha alcanzado un punto de interrupción y estoy tratando de cambiar algo en el código.
codificador nocturno
3

El error dice que una posible causa es: "el código que se está depurando se optimizó durante la compilación o la ejecución". Vaya a Propiedades del proyecto-> Depurar y desmarque la casilla Optimizar código para el modo Depurar.

pbalaga
fuente
3

Tuve este problema en Microsoft Visual Studio 2008 y la solución es fácil. cuando ejecute su proyecto, establezca el modo "Depurar", no "Liberar". La solución de otra gente puede ser útil.

usuario2412450
fuente
2

Si creo un nuevo proyecto, las ediciones durante la depuración no funcionan. Si creo un nuevo sitio web, las ediciones durante la depuración funcionan como se esperaba.

Greg
fuente
1

En mi caso, simplemente restablecer la configuración predeterminada del depurador y configurar IntelliTrace-> solo ayuda los eventos de intellytrace

Yuriy Vikulov
fuente
1

Algunas cosas que parecieron ayudar a usar VS2010:

  • vaya a Herramientas, Opciones, Depuración, General y asegúrese de que "Requerir que los archivos fuente coincidan exactamente con la versión original" no esté marcado.
  • se pueden dejar varias instancias de .vshost.exe, por ejemplo, al separar el depurador VS de un proceso detenido. Esto interferirá con los puntos de interrupción y también se compilará. Use el Administrador de tareas, pestaña Procesos para eliminar todas las instancias de .vshost.exe haciendo clic con el botón derecho en cada instancia y seleccionando Finalizar árbol de procesos. VS creará una nueva instancia.
Scott
fuente
1

Eliminé un conjunto de datos de mi proyecto porque no lo usé. Después de eso, pude modificar el programa al depurar.

ashkan_jami
fuente
1

Hice todos los cambios mencionados en todas las demás respuestas y ninguno funcionó. ¿Que aprendi? Habilitar y continuar existe en el menú Herramientas> Opciones> Depuración y también en la configuración del Proyecto. Después de marcar ambos, Habilitar y Continuar funcionaron para mí.

stevebot
fuente
3
¿Qué configuración del proyecto? Eres demasiado vago
Adaptabi
@Adaptabi Querían decir que si haces clic con el botón derecho en el Nombre de tu proyecto, haces clic en Propiedades, luego (si es un proyecto web) haz clic en Web, hay una casilla de verificación para asegurarte de que esté marcada para "Habilitar editar y continuar" allí.
vapcguy
1

Me encontré con esto hoy: resulta que tener la información de depuración configurada en solo pdb (o ninguna, me imagino) evitará que Editar y continuar funcione.

¡Primero asegúrese de que su información de depuración esté configurada como "completa"!

Propiedades del proyecto> Generar> Avanzado> Salida> Información de depuración

Guy Danus
fuente
1

Parece ilógico, pero la única forma fue deshabilitar la edición y continuar desde las opciones de VS 2017 ... Luego, la edición y continuación de AspNet comenzó a funcionar ...

FRK
fuente
¡Exactamente! Es contrario a la intuición, pero lo que también funcionó para mí es deshabilitar "editar y continuar". No "intercambiará en caliente" los cambios que realice, pero al menos puede simplemente editar su código, y luego entrará en vigencia al reiniciar su aplicación.
leo
1

lo que funcionó para mí fue desmarcar "Usar modo de compatibilidad administrada" en

Herramientas -> Opciones -> Depuración

TBN: marcar o desmarcar "Requerir que el archivo fuente coincida exactamente con la versión original" no parece influir en la E&C

Espero que esto pueda ayudar.

B. Cafaro
fuente
1

Habilite la edición y continúe solo para trabajar con IIS Express. No trabaje en ISS local ni en host externo.

Ahmad Aghazadeh
fuente
1

Tuve este problema molesto desde que actualicé mi VS 2019 a 16.4.3 y me causó muchos dolores de cabeza.
Finalmente resolví el problema de esta manera:

1. Detener la depuración
2. Seleccionar la solución en "Explorador de soluciones"
3. En la ventana Propiedades , cambie la propiedad "Configuración activa" de "Liberar | Cualquier CPU" a "Depurar | Cualquier CPU"
4 En Depurar> Opciones> General, marque la casilla Editar y continuar.

Eso funcionó para mí, y espero que también funcione para usted.

Masarwa
fuente
0

incrustar tipos de interoperabilidad visual studio debe establecerse en falso

Wilma Fingerdoo
fuente
0

Hice que esto sucediera en un archivo de clase vinculado. El resto del proyecto permitió E&C, pero obtuve el mismo error al editar el archivo vinculado. La solución fue dividir el archivo vinculado en su propio proyecto y hacer referencia al proyecto.

jlo-gmail
fuente
0

Me enfrenté al mismo problema. Mi problema era que podía modificar un archivo, pero no otro (ambos están en el mismo proyecto). Más tarde descubrí que el archivo que no podía modificar también formaba parte de otro proyecto. Que no se cargó otro proyecto (Prueba unitaria) y que el depurador VS inteligente muestra el error de que no se cargó el ensamblaje para este archivo dado y no se permiten cambios. ¡Que raro!

Por lo tanto, tuve que descargar el proyecto de prueba unitaria y continuar con la depuración de EnC.

Ajay
fuente
0

Tenía un proyecto de base de datos en la solución que impidió que se editara el proyecto de formularios web.

Hice clic en "Descargar" en el proyecto de la base de datos y ahora todo funciona perfectamente.

Adán
fuente
0

Para VS2017 puede ayudar a eliminar el archivo .suo en su solución, funcionó para mí. :)

Nieksa
fuente