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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top