Pregunta

Me preguntaba si había una manera de bloquear por completo mi código durante la depuración dentro de Visual Studio 2008. Los documentos de código se bloquean automáticamente cuando se ejecuta como aplicaciones de 64 bits, que yo prefiero en gran medida; Sin embargo, hago la mayor parte de mi codificación de hacer complementos para Excel, que es de 32 bits. El resultado es que a pesar de que me meta 'Cualquier CPU', el anfitrión VS sabe que se está ejecutando dentro de un proceso de 32 bits y, por lo tanto, el código fuente es no bloqueados mientras se ejecuta el código alojado en Visual estudio.

Puedo desactivar Editar y continuar yendo a Herramientas> Opciones> Depuración> Editar y continuar y, a continuación, desactivando el 'Editar y continuar Habilitado' casilla de verificación. Esto no se bloquea por completo el código, sin embargo. Esto hace prevenir cualquier modificación en el código se ejecute en el actuales plazo, pero no impide que los clics del ratón o pulsaciones de teclas del hecho de cambiar el código.

Una vez más, cuando se trabaja con aplicaciones de 64 bits que esto no ocurre - el código está completamente bloqueado. Yo prefiero en gran medida el código que se ha bloqueado por completo por lo menos un par de razones:

  1. Puedo golpear accidentalmente una tecla o similar durante la depuración, lo que definitivamente no quiero hacer. Es raro, pero es un problema.

  2. Muchos de mis pruebas automatizadas en coche de la interfaz de usuario a través de SendKeys. Cuando paso a paso a través de una prueba de este tipo utilizando el depurador, sin embargo, a veces puedo olvidar que algunos de los aspectos implican SendKeys, lo que significa que las pulsaciones de teclado terminan siendo enviado a la IDE de Visual Studio en lugar de Excel.

En la edición # 2, arriba, la prueba de la unidad falla, lo cual está bien - mi mal -. Pero tener todas las pulsaciones de teclado enviados al módulo de código y la destrucción de mi código es completamente inaceptable

¿Alguien tiene alguna idea aquí? ¿Se puede bloquear por completo el código cuando se ejecuta alojada en Visual Studio mientras compilado con una CPU de 32 bits?

Algunos de los puestos relacionados en esta cuestión, pero ninguna de las cuales dirigirse directamente a esto:

Gracias de antemano por cualquier ayuda o las ideas ...

Mike

¿Fue útil?

Solución

Aquí es lo mejor que podía ocurrir. Funciona, pero hay algunos pasos que usted puede no querer tomar.

En esencia, la técnica es la creación de los archivos de su proyecto de sólo lectura cuando se ejecuta la aplicación, y luego vuelva a establecer grabable una vez que termine su aplicación.

Sin embargo, en VS2k8, por defecto, el establecimiento de un archivo de sólo lectura todavía le permite editar el archivo. Es necesario apagar primero el ajuste "Permitir la edición de archivos de sólo lectura ..." en Herramientas> Opciones> Medio ambiente> Documentos.

En segundo lugar, es necesario agregar la siguiente clave en el registro como DWORD y establezca su valor en 1:

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

Este Todavía no va a funcionar por completo. Lo que entonces tiene que hacer es establecer el control de código fuente para ese proyecto a Visual Source Safe. (<-. Este es el paso que estoy asumiendo que no va a gustar)

A continuación, reinicie VS2k8.

En este punto, si se establece uno de los archivos de sólo lectura, se verá que Visual Studio no le permitirá editar el archivo en absoluto. Cuando intenta, se reproduce la música excepción de su ordenador.

Ahora, para hacer sus archivos de sólo lectura cuando se ejecuta la aplicación, establecer un proceso posterior a la generación de hacerlo. Eso es fácil.

Harder, es establecer de nuevo a se puede escribir una vez que su aplicación termina de ejecutarse. La solución más sencilla es probablemente un acceso directo por lotes.

Otros consejos

Este es un truco que utilizo en Visual Studio 2005 (no tienen la oportunidad de probar en Visual Studio 2008, pero debería funcionar):

  • abrir las propiedades de la asamblea ejecutable
  • Vaya a la Depurar
  • Compruebe el Habilitar depuración de código no administrado casilla de verificación

Los documentos de código deben permanecer bloqueado, incluso cuando se golpea un punto de interrupción, y cualquier intento de cambio que debe dar lugar a una ventana emergente que dice "No se permiten cambios cuando esté habilitada la depuración no administrada" .

Hola - lo siento, no puedo ayudarte con bloqueo por completo su código - Tengo el deseo contrario:. UNLOCK por completo durante la depuración, pero puedo ayudar con su segunda emisión

Sugiero que se tiene en cuenta el control de la ventana activa antes de enviar cualquier clave y si la ventana activa es diferente a su sitio de destino, hacer una pausa en la ejecución de la prueba hasta que el enfoque que se devuelve esa ventana.

Yo sé que no es la solución que desea, pero probablemente no haría daño a prevenir otros problemas similares.

Mucha suerte!

Adam

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top