Domanda

Ho bisogno di compilare il codice condizionale dalla versione CLR.
per esempio c'è un codice che ho bisogno di compilare solo nel CLR 2 (NET 3.5 VS2008) e non nel CLR 4 (NET 4 VS2010)
Esiste una direttiva precompilatore per la versione CLR corrente che posso usare all'interno di una clausola di #if?

Grazie.

È stato utile?

Soluzione

Non che io sappia.

provare a utilizzare il proprio uno, tali come:

#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

E poi si può definire CLR_V2 e / o CLR_V4 nelle proprietà del progetto finestra di Visual Studio, o argomenti della riga di comando di CSC.

Altri suggerimenti

Si può sempre aggiungere qualcosa al vostro script MSBuild che controlla la versione CLR, quindi definisce condizionale e passa in un simbolo di preprocessore al compilatore che può essere testato all'interno del codice con un #if.

Sì, ci sono direttive di compilazione condizionale sembrano proprio come roba preprocessore C

modifica: frainteso completamente a questa domanda - il tempo per una pausa

qui la risposta è non . Tuttavia un trucco che usiamo è di mettere il codice specifico di versione in assembly che vengono caricati in fase di esecuzione. È quindi possibile ottenere la versione del CLR in fase di esecuzione da System.Runtime.InteropServices.RuntimeEnvironment .GetRuntimeDirectory ().

Il codice specifica versione è compilato utilizzando l'impianto di targeting disponibili presso il C # 3.5 in poi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top