2010-08-18 11 views
5

Ambiente di sviluppo: - VS2010 - .Net Framework 4.0, 3.5, 2.0Posso utilizzare tutte le funzionalità di C# 4.0 in un progetto destinato a .Net 3.5?

gestione temporanea e di produzione Ambienti: - .Net Framework 3.5, 2.0

Il progetto su cui sto lavorando è il targeting Net Framework 3.5. E oggi ho usato la funzione di parametri opzionali, che è nuova a C# 4, in questo progetto e ha funzionato bene. Penso che VS2010 stia usando il compilatore C# 4 e stia compilando il metodo con parametri opzionali ai corrispondenti metodi di overloading in IL.

Voglio sapere se posso usare anche tutte le nuove funzionalità di C# 4.

+0

+1. Ho appena provato me stesso, e un nuovo progetto 3.5 ha permesso parametri facoltativi in ​​un metodo. Ottima cattura! –

+4

possibile duplicato di [Quali funzionalità di C# 4.0 possono essere utilizzate mentre si sta ancora utilizzando il runtime .NET 3.5?] (Http://stackoverflow.com/questions/245306/what-c-4-0-features-can-be-used -while-ancora-targeting-the-net-3-5-runtime) –

risposta

7

Non è possibile utilizzare la funzione dynamic. Questo si basa sul runtime C# e sulle DLL DLR che sono disponibili solo sulla versione 4.0 del framework .Net. Le versioni del DLR sono disponibili per 3.5 ma non credo che siano compatibili con quello richiesto dal compilatore C#.

Inoltre, non è possibile utilizzare i tipi di intervallo NoPIA/Embedded in uno scenario orientato verso il basso. Questa funzione richiede il supporto CLR aggiunto in 4.0.

Ciò che rende eccezionale il down targeting in Visual Studio 2010 è che non è necessario conoscere ogni limite. Se i progetti sono impostati su una destinazione 3.5 e si utilizza una funzionalità non compatibile, Visual Studio genererà un errore.

+0

Credo che anche tu non possa usare co- e contro-varianza? O il 3.5 CLR giocherà felicemente con quello? – Timwi

+0

AFAIK la macchina virtuale 2.0 conteneva già il supporto per questo. – Dykam

+0

@Timwi, @Dykam è corretto che CLR 2.0 avesse già il supporto per la co e contra variance. Era più di una correzione di bug per il linguaggio C# e VB.Net. – JaredPar

1

Mi sono imbattuto in questo un paio di settimane fa in realtà. Ho usato parametri opzionali anche se il progetto era mirato a. 3.5. Devi stare molto attento a questo perché se installi l'applicazione su un computer che ha solo .net 3.5 runtime installato, il tuo programma potrebbe non funzionare. Nel mio caso, ho usato i parametri facoltativi e il server di compilazione notturno aveva solo 3.5 installato, quindi la compilazione non è riuscita.

+3

Il tuo progetto potrebbe non essere riuscito a * build * utilizzando 3.5, ma se riesci a costruirlo con successo usando 4 ma * con targeting 3.5 *, il codice compilato dovrebbe * eseguire * su 3.5 abbastanza felicemente. – LukeH

Problemi correlati