¿Hay una manera de * completamente * deshabilitar Editar y Continuar?

Me preguntaba si habría una manera de bloquear completamente mi código mientras lo depuraba dentro de Visual Studio 2008. Los documentos de código se bloquean automáticamente cuando se ejecutan como aplicaciones de 64 bits, lo cual prefiero mucho; sin embargo, yo hago la mayor parte de mi encoding haciendo complementos para Excel, que es de 32 bits. El resultado es que aunque me dirijo a ‘AnyCPU’, el host de VS sabe que se está ejecutando en un proceso de 32 bits y, por lo tanto, el código fuente no se bloquea mientras el código se ejecuta alojado en Visual Studio.

Puedo desactivar Editar y Continuar yendo a Herramientas> Opciones> Depurar> Editar y Continuar, y luego desmarque la checkbox ‘Habilitar Edición y Continuar’. Sin embargo, esto no bloquea completamente el código. Esto evita que las ediciones en el código se ejecuten en la ejecución actual , pero no evita que los clics del mouse o las pulsaciones del teclado cambien realmente el código.

Nuevamente, cuando se trabaja con aplicaciones de 64 bits, esto no ocurre, el código está completamente bloqueado. Prefiero que el código esté completamente bloqueado por al menos un par de razones:

  1. Accidentalmente puedo presionar una tecla o algo similar durante la depuración, que definitivamente no quiero hacer. Es raro, pero es un problema.

  2. Muchas de mis pruebas automáticas manejan la interfaz de usuario a través de SendKeys. Sin embargo, al pasar por una prueba de este tipo con el depurador, a veces puedo olvidar que algunos de los aspectos involucran a las SendKeys, lo que significa que las pulsaciones de tecla se envían al IDE de Visual Studio en lugar de a Excel.

En el número 2, arriba, la prueba de la unidad falla, lo cual está bien, mi error, pero el hecho de que se hayan enviado todas las pulsaciones al módulo de código y se haya destruido mi código es totalmente inaceptable.

¿Alguien tiene alguna idea aquí? ¿Se puede bloquear completamente el código cuando se ejecuta alojado en Visual Studio mientras se comstack contra una CPU de 32 bits?

Algunas publicaciones relacionadas con este tema, pero ninguna de las cuales abordan esto directamente:

  • Cómo: habilitar y deshabilitar editar y continuar
  • “Los cambios en las aplicaciones de 64 bits no están permitidos” al depurar en Visual Studio 2008
  • ¿Cómo habilito la edición de archivos en el modo de depuración de Visual Studio?
  • ¿Cómo funciona “Editar y continuar” en Visual Studio?
  • ¿Podemos editar nuestro código mientras ejecutamos la aplicación?
  • Edición de C # durante la depuración

Gracias de antemano por cualquier ayuda o ideas …

Micro

Aquí está lo mejor que pude encontrar. Funciona, pero hay algunos pasos que tal vez no quiera tomar.

Esencialmente, la técnica consiste en establecer los archivos de su proyecto en Sólo lectura cuando ejecuta la aplicación, y luego volver a configurarlos para que puedan escribirse una vez que la aplicación finalice.

Sin embargo, en VS2k8, de forma predeterminada, la configuración de un archivo en Sólo lectura todavía le permite editar el archivo. Primero debe desactivar la configuración “Permitir la edición de archivos de solo lectura …” en Herramientas> Opciones> Entorno> Documentos.

En segundo lugar, debe agregar la siguiente clave al registro como DWORD y establecer su valor en 1:

HKCU\Sofware\Microsoft\Visual Studio\9.0\Source Control\UncontrolledInMemoryEditDialogSuppressed 

Esto todavía no funcionará completamente. Lo que luego debe hacer es configurar su Control de código fuente para ese proyecto en Visual Source Safe. (<- este es el paso que asumo que no te gustará).

Luego reinicie VS2k8.

En este punto, si configura uno de sus archivos en solo lectura, verá que Visual Studio no le permitirá editar este archivo en absoluto. Cuando lo intentas, reproduce la música de excepción de tu computadora.

Ahora, para hacer que sus archivos sean de solo lectura cuando ejecute la aplicación, establezca un proceso posterior a la comstackción para hacer esto. Eso es fácil.

Más difícil es volver a escribirlos una vez que la aplicación termine de ejecutarse. La solución más simple es probablemente un acceso directo de archivo por lotes.

Aquí hay un truco que uso en Visual Studio 2005 (no tengo la oportunidad de probar en Visual Studio 2008, pero debería funcionar):

  • Abrir las propiedades del ensamblado ejecutable.
  • Ir a la pestaña de depuración
  • Marque la checkbox Habilitar depuración de código no administrado

Los documentos de código deben permanecer bloqueados, incluso cuando se alcanza un punto de interrupción, y cualquier bash de cambiarlo debería desencadenar una ventana emergente que dice “No se permiten cambios cuando la depuración no administrada está habilitada” .

Hola, lo siento, no puedo ayudarte a bloquear completamente tu código. Tengo el deseo opuesto: Desbloquearlo completamente durante la depuración, pero puedo ayudarte con tu segundo problema.

Le sugiero que considere revisar la ventana activa antes de enviar cualquier clave y si la ventana activa es diferente a su sitio de destino, detenga la ejecución de su prueba hasta que el foco devuelva esa ventana.

Sé que no es la solución que desea, pero probablemente no estaría de más evitar otros problemas similares.

¡La mejor de las suertes!

Adán