2008-09-08 5 views
7

Así que tengo unos 10 archivos cortos css que uso con la aplicación mvc. Hay como error.css login.css etc ... Solo algunos archivos css realmente cortos que facilitan la actualización y la edición (al menos para mí). Lo que quiero es algo que optimice la rama if else y no la incorpore en los bits finales. Quiero hacer algo como esto¿La mejor manera de detectar una compilación de liberación a partir de una compilación de depuración? .net

if(Debug.Mode){ 

<link rel="stylesheet" type="text/css" href="error.css" /> 
<link rel="stylesheet" type="text/css" href="login.css" /> 
<link rel="stylesheet" type="text/css" href="menu.css" /> 
<link rel="stylesheet" type="text/css" href="page.css" /> 
} else { 
<link rel="stylesheet" type="text/css" href="site.css" /> 
} 

Voy a tener una tarea msbuild que combinará todos los archivos CSS, minimizarlos y todas esas cosas buenas. Solo necesito saber si hay una forma de eliminar la rama if else en los bits finales.

+0

Similares preguntas en Stackoverflow, una pregunta, y muchas, muchas respuestas diferentes: http://stackoverflow.com/questions/654450/programatically-detecting-release-debug-mode-net http://stackoverflow.com/questions/798971/how-to-idenfiy-if-the-dll-is-debug-or-release-build-in-net http://stackoverflow.com/questions/194616/how-to-tell-if-net-app-was-compiled-in-debug-or-release-mode http://stackoverflow.com/questions/50900/best-way-to-detect- a-release-build-from-a-debug-build-net http://stackoverflow.com/questions/890459/asp-net-release-build-vs-debug-build – Kiquenet

+0

Consulte mis publicaciones: [Cómo saber si un ensamblado está depurado o liberado] (http: //dave-black.blogspot.com/2011/12/how-to-tell-if-assembly-is-debug-or.html) y [http://stackoverflow.com/questions/798971/how-to -idenfiy-if-the-dll-is-debug-or-release-build-in-net/5316565 # 5316565] (http://stackoverflow.com/questions/798971/how-to-idenfiy-if-the- dll-is-debug-or-release-build-in-net/5316565 # 5316565) –

Respuesta

27

Específicamente, como esto en C#:

#if (DEBUG) 
    Debug Stuff 
#endif 

C# tiene las siguientes directivas del preprocesador:

#if 
#else 
#elif // Else If 
#endif 
#define 
#undef // Undefine 
#warning // Causes the preprocessor to fire warning 
#error // Causes the preprocessor to fire a fatal error 
#line // Lets the preprocessor know where this source line came from 
#region // Codefolding 
#endregion 
5

Debería haber usado google.

#if DEBUG 
    Console.WriteLine("Debug mode.") 
#else 
    Console.WriteLine("Release mode.") 
#endif 

Asegúrese de que la opción "Ajustes de configuración" -> "Construir" "Definir DEBUG constante" en las propiedades del proyecto se comprueba.

1

Constantes del compilador. No recuerdo la sintaxis de C#, pero así es como lo hago en VB:

#If CONFIG = "Debug" Then 
    'do somtehing 
#Else 
    'do something else 
#EndIf 
7
if (System.Diagnostics.Debugger.IsAttached) 
    { 
      // Do this 
    } 
    else 
    { 
      // Do that 
    } 
+5

Esto le indica (en tiempo de ejecución) si hay un depurador conectado, pero no si el ensamblado es una compilación DEBUG (vs RELEASE). – AlfredBr

4

Usted puede tratar de utilizar

HttpContext.Current.IsDebuggingEnabled 

es controlado por un nodo en la configuración. En mi opinión, esta es una solución más agradable que la compilación condicional.

Sin embargo, si desea poder controlar basado en un compilatino, creo que puede utilizar un ConditionalAttribute.

Saludos,

+1

Obviamente, esto solo funciona para aplicaciones ASP.NET. –

Cuestiones relacionadas