5

Digamos, por ejemplo, que tengo un proyecto de Visual Studio con una configuración llamada "MyConfig" y tengo el símbolo de compilación MY_CONFIG_SYMBOL definido.¿Es posible usar símbolos de compilación condicional en eventos de compilación VS?

¿Hay una macro o comando para ver si MY_CONFIG_SYMBOL se define en los eventos de compilación pre/post? Algo como #if MY_CONFIG_SYMBOL, pero para el evento de compilación?

+1

¿Tienes suerte para encontrar una respuesta? – Thracx

+0

@Thracx Finalmente encontré una respuesta. Vea abajo. –

Respuesta

2

Finalmente encontré una respuesta. Los siguientes funciona perfectamente:

if "$(DefineConstants.Contains('DEBUG'))" == "True" <command> 

Esto funciona para cualquier constantes definidas en la construcción, pero tenga en cuenta que la constante es entre mayúsculas y minúsculas ('debug' = 'depuración'!).

0

Si se refiere a compilaciones condicionales basadas en los tipos de compilación (Depuración o Liberación), entonces sí. Echa un vistazo a estos hilos:

Conditional Post-build event in Visual Studio 2008

How to run Visual Studio post-build events for debug build only

+3

No, me refiero al uso de los símbolos de compilación condicional definidos en Debug o Release. Para la configuración de depuración, el símbolo principal de compilación condicional, generalmente definido por defecto, es 'DEBUG'. Puede usar esto en el código, pero puede usarlo en un evento de compilación previo o posterior –

0

Bueno, esto no es una solución, tratando de avanzar en estado compartiendo algunos experimentos. (todavía tengo que encontrar una manera de probar símbolos de compilación condicional.)

Esto como una forma de consolidar el cambio de depuración de encendido y apagado:

<#@ include file="debug.incl" #>` 

some text1 
<# if (xdebug) { #> 
    foo = bas; 
<# } #> 
more text 

Dónde debug.incl contiene:

<# 
bool xdebug = true; 
#> 

El condicional (si) en el primer archivo puede ver el valor de xdebug, por lo que la salida se modifica en función de la configuración de xdebug en debug.incl.

Lamentablemente, sin embargo, los archivos de salida no se reconstruyen en los cambios en debug.incl, a pesar de la obvia inclusión de la misma. E incluso una reconstrucción limpia & no parece desencadenar la generación, por lo que se necesita una construcción de compilación independiente para eso ...

(Intenté depurar.tt en lugar de debug.incl en vano, cambiar a .incl de manera que debug.cs no fue creada por debug.tt.)


Esto no funcionó muy bien, ya que no ve los símbolos de compilación condicional, aunque no realmente encender el atributo de cuadro de depuración!

<# 
#if DEBUG 
bool xdebug = true; 
#else 
bool xdebug = false; 
#endif 
#> 

some text1 
<# if (xdebug) { #> 
    foo = bas; 
<# } #> 
more text 

con <#@ template debug="true" #> vs <# template debug=false #> se obtiene la salida condicional o no, respectivamente.

Cuestiones relacionadas