Question

Cela devrait aller étant donné que le CLR n'a pas réellement changé ?

Les boîtes exécutant le code C# 2.0 avoir avait déployé .NET 3.5.

Le contexte est que nous avons un service Windows (exe .NET 2.0 construit avec VS2005, déployé sur environ 150 serveurs) qui charge dynamiquement les assemblys (presque comme des plug-ins) pour effectuer divers éléments de travail qui lui sont demandés.Chaque fois que nous déployons une nouvelle version de la logique du bus, nous déposons simplement les assemblys sur un serveur FTP et le service Windows sait comment rechercher, récupérer et stocker les dernières versions.De nouveaux assemblys sont désormais construits à l'aide de VS2008 et ciblant .NET 2.0, nous savons que cela fonctionne bien.Cependant, nous aimerions commencer à profiter des fonctionnalités du langage C# 3.0 telles que LINQ et cibler les assemblys sur .NET 3.5 sans avoir à créer et déployer une nouvelle version du service Windows.

Était-ce utile?

La solution

C#3 et .Net 3.5 ajoute de nouveaux assemblys, mais l'IL reste inchangé.

Cela signifie qu'avec les assemblys .Net 2, vous pouvez compiler et utiliser C#3, à condition de ne pas utiliser Linq ou tout autre élément faisant référence à System.Linq ou System.Core.

yield, var, la syntaxe lambda, les types anon et les initialiseurs sont tous des astuces du compilateur.L’IL qu’ils produisent est compatible entre eux.

Si vous pouvez référencer les nouveaux assemblys pour la version 3.5, tout devrait fonctionner.

Il n'y a pas de nouvelle version d'ASP.Net - elle devrait toujours être 2.0.50727 - mais vous devez toujours compiler pour 3.5

Autres conseils

Le rendement, le var, la syntaxe lambda, les types anon et les initiateurs sont tous une intelligence du compilateur.L’IL qu’ils produisent est Compatibilité croisée.

Un problème mineur, mais le rendement était de toute façon une fonctionnalité 2.0.

C'est une chose intéressante.je regardais Pont Linq hier, après que quelqu'un sur ce forum me l'ait suggéré et ils font la même chose.

Je trouve étrange que Microsoft ait nommé les frameworks 2.0, 3.0 et 3.5 alors qu'ils se compilent tous pour produire le même IL requis par le CLR 2.0.J'aurais pensé qu'ajouter des versions sur 2.0 aurait eu plus de sens, même si je suppose qu'il est également difficile de faire comprendre aux gens qu'il existe différentes versions de runtimes, de compilateurs et de langages.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top