Tengo problemas para hacer que Visual Studio se comporte como yo esperaba. Creé 2 perfiles de configuración. Uno tiene el símbolo FOO definido y el otro tiene el símbolo BAR definido. Y tengo este código:Los símbolos de compilación condicional no están definidos
static class MyClass{
#if FOO
public static string const MyData="foo defined";
#endif
#if BAR /*yes, I know #elif would work here too.. just trying to be simple*/
public static string const MyData="bar defined";
#endif
}
y luego más tarde en otro archivo que tengo
if(MyClass.MyData=="foo defined").....
Bueno, en mi solicitud, me sale un error que MyClass.MyData no está definido.
Además, si lo tengo en el perfil FOO y escribo algo como #error test
después del #if FOO
, entonces tendrá un error de compilación, pero si lo elimino se compilará muy bien y cuando vaya a ejecutarlo ' Obtendré un error de compilación de que MyClass no contiene una definición para MyData. Además, esta es una aplicación web ASP.Net.
¿Alguien me puede ayudar a descubrir cómo usar la compilación condicional? Actúa como si Visual Studio lo compilara correctamente con los símbolos de compilación, pero cada vez que el servidor web ASP.Net lo ejecuta, lo recompila sin ningún símbolo ... Pero eso simplemente no tiene ningún sentido por qué lo haría ...
Edit: No importa si utilizo el perfil FOO o BAR, ninguno de ellos parece definir el símbolo MyData como deberían.
Edit2:
Ok, esto es importante para la reproducción !!! Crea una nueva carpeta App_Code
en tu solución y luego agrega un archivo .cs allí y luego agrega MyClass a ella. Esto reproducirá el error trabajando en un proyecto en blanco. De hecho, me he simplificado que hasta sólo
#if !(FOO || BAR)
#error neither foo or bar defined
#endif
Parece que Visual Studio no establece símbolos de compilación condicional para los archivos .cs regulares en el interior de App_Code
He cambiado completamente mi respuesta ... Échale un vistazo. –