C'è un c # precompilatore definire per la versione CLR
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.
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.