2010-08-18 3 views
5

Environnement de développement: - VS2010 - Net Framework 4.0, 3.5, 2.0Puis-je utiliser toutes les fonctionnalités C# 4.0 dans un projet qui cible .Net 3.5?

environnements Mise en scène et production: - Net Framework 3.5, 2.0

Le projet que je travaille sur le ciblage .Net Cadre 3.5. Et aujourd'hui, j'ai utilisé la fonctionnalité des paramètres optionnels, qui est nouvelle à C# 4, dans ce projet et cela a bien fonctionné. Je pense que VS2010 utilise le compilateur C# 4 et compile la méthode avec des paramètres optionnels pour les méthodes surchargées correspondantes dans IL.

Je veux savoir si je peux aussi utiliser toutes les nouvelles fonctionnalités de C# 4.

+0

+1. Juste essayé moi-même, et un nouveau projet 3.5 a permis params facultatifs dans une méthode. Superbe capture! –

+4

duplication possible de [Quelles fonctionnalités de C# 4.0 peuvent être utilisées tout en ciblant le runtime .NET 3.5?] (Http://stackoverflow.com/questions/245306/what-c-4-0-features-can-be-used -pendant-still-targeting-the-net-3-5-runtime) –

Répondre

7

Vous ne pouvez pas utiliser la fonctionnalité dynamic. Cela dépend de l'exécution C# et des DLL DLR qui sont uniquement disponibles sur la version 4.0 du framework .Net. Les versions du DLR sont disponibles pour 3.5 mais je ne crois pas qu'elles soient compatibles avec celle requise par le compilateur C#.

En outre, vous ne pouvez pas utiliser les types d'interopérabilité NoPIA/Embedded dans un scénario ciblé vers le bas. Cette fonctionnalité nécessite le support CLR qui a été ajouté dans 4.0. Ce qui est génial avec le ciblage vers le bas dans Visual Studio 2010, c'est qu'il n'est pas nécessaire de connaître toutes les limitations. Si vos projets sont définis sur la cible 3.5 et que vous utilisez une fonctionnalité incompatible, Visual Studio génère une erreur.

+0

Je crois que vous ne pouvez pas non plus utiliser la co- et la contre-variance? Ou le 3.5 CLR va-t-il jouer avec ça? – Timwi

+0

AFAIK la VM 2.0 contenait déjà le support pour cela. – Dykam

+0

@Timwi, @Dykam est correct que CLR 2.0 avait déjà un support pour la variance co et contra. Il s'agissait plus d'une correction de bogue pour le C# et le langage VB.Net. – JaredPar

1

Je suis tombé sur cela il y a quelques semaines en fait. J'ai utilisé des paramètres facultatifs même si le projet ciblait .net 3.5. Vous devez faire très attention à cela car si vous installez l'application sur un ordinateur qui n'a que .net 3.5 runtime installé, votre programme risque de ne pas fonctionner. Dans mon cas, j'ai utilisé les paramètres facultatifs et le serveur de compilation nocturne n'avait que 3.5 installé donc la construction a échoué.

+3

Votre projet a peut-être échoué à * construire * en utilisant 3.5, mais si vous pouvez le construire avec succès en utilisant 4 mais en ciblant 3.5 *, alors le code compilé devrait * fonctionner * sur 3.5 assez heureusement. – LukeH

Questions connexes