2012-05-17 23 views
8

Suponiendo que tengo el siguiente código en C#:Prevenir editor de Visual Studio de #if reformatear ... #endif

void Func() { 
    int i=3; 

    #if DEBUG 
    ... 
    #endif 

    for (int j=0;j<i;j++) { 
     ... 
    } 
} 

Si uso Edit->Advanced->Format document, que se vuelve a formatear a esta (usando mi código actual configuración de formato) :

void Func() 
{ 
    int i = 3; 

#if DEBUG 
    ... 
#endif 

    for (int j = 0; j < i; j++) 
    { 
     ... 
    } 
} 

¿hay una manera de prevenir los #if y #endif líneas se mueva a la izquierda? No pude encontrar ninguna configuración para estos, pero espero que haya una configuración de registro que controle cómo funciona esto.

Cualquier consejo sería muy apreciado: este comportamiento me vuelve loco ya que mi código tiene varios cientos de dichos bloques, que siguen siendo dañados por VS.

+11

Formatea perfectamente bien :) las # declaraciones NO son parte del código, por lo que no deben sangrarse. –

+3

Esa es su preferencia. Cuando tienes cientos de estos (5-9 por función en promedio) hace que sea muy difícil leer el código. Es casi imposible incluso encontrar el principio/fin de las funciones. – xxbbcc

+5

he aquí una sugerencia: http://msmvps.com/blogs/peterritchie/archive/2011/11/24/if-you-re-using-if-debug-you-re-doing-it-wrong.aspx – hatchet

Respuesta

0

En Herramientas/Opciones, vaya a Editor de texto/C#/Pestañas. En esa página de configuración, cambie la sangría de Smart a Block. Esto detendrá la sangría de las líneas del preprocesador, con la compensación de perder otras características. No soy lo suficientemente experto en esa configuración para decirte qué otras cosas de formato perderás, pero esto da la idea general: http://www.blackwasp.co.uk/VSTabs.aspx

+0

Gracias, ya uso el formato de bloque para las pestañas. Todavía está sucediendo. – xxbbcc

+0

@xxbbcc Veo lo que dices. Block lo dejará donde lo escriba, pero si realiza un reformateo específicamente, entonces pierden cualquier sangría. – hatchet

+0

Sí, lamentablemente, nunca he sido capaz de evitar que esto suceda. – xxbbcc

2

un estilo que he estado usando es agregar espacio a la etiqueta # como esta

void Func() 
{ 
    int i = 3; 

# if DEBUG 
    ... 
# endif 

    for (int j = 0; j < i; j++) 
    { 
     ... 
    } 
} 

..la si el bloque se parece a sus alineado con el código correctamente y volver a formatear código no mover las etiquetas del preprocesador.

+0

@ com3lius: Solo vi tu sugerencia ahora, gracias, intentaré esto. No estoy seguro si me gusta, pero aún se ve mejor que VS matando el diseño. – xxbbcc

Cuestiones relacionadas