¿Hay Ac# Precompiler Definir para la versión CLR?
Pregunta
Necesito compilar el código condicionalmente por la versión CLR.
Por ejemplo, hay un código que necesito compilar solo en CLR 2 (.NET 3.5 VS2008) y no en CLR 4 (.NET 4 VS2010)
¿Existe una directiva precompiladora para la versión CLR actual que puedo usar dentro de una cláusula #IF?
Gracias.
Solución
No como sé.
Intenta usar tu propio, como:
#if CLR_V2
#if CLR_V4
#error You can't define CLR_V2 and CLR_V4 at the same time
#endif
code for clr 2
#elif CLR_V4
code for clr 4
#else
#error Define either CLR_V2 or CLR_V4 to compile
#endif
Y luego puede definir CLR_V2 y/o CLR_V4 en la ventana Propiedades del proyecto de Visual Studio, o argumentos de línea de comandos CSC.
Otros consejos
Siempre puede agregar algo a su script MSBuild que verifique la versión CLR, luego define y pasa condicionalmente en un símbolo de preprocesador al compilador que se puede probar dentro del código con un #IF.
sí hay directivas de compilación condicional se parecen a las cosas del preprocesador C
Editar: Lee completamente mal esa pregunta: tiempo para un descanso
De acuerdo a aquí la respuesta es no. Sin embargo, un truco que usamos es poner el código específico de la versión en ensambles que se cargan en tiempo de ejecución. Luego puede obtener la versión del CLR en tiempo de ejecución System.Runtime.inTeropServices.RuntimeenVironment.GetRuntimedirectory ().
El código específico de la versión se compila utilizando la instalación de orientación disponible desde el C#3.5 en adelante.