Ansamblurile consumatoare de cod C # 2.0 compilate cu C # 3.0

Acest lucru ar trebui să fie bine văzând ca CLR nu sa schimbat de fapt?

Cutiile care rulează codul C# 2.0 au au lansat .NET 3.5.

Contextul este că avem un serviciu Windows (.NET 2.0 exe ​​construit cu VS2005, implementat la ~ 150 servere) care încarcă dinamic ansambluri (aproape ca plug-in-uri) pentru a completa diferite articole de lucru cerute de el. Ori de câte ori lansăm o nouă versiune a logicii de autobuz, noi lăsăm ansamblurile pe un server FTP și serviciul Windows știe cum să verifice, să apucă și să stocheze cele mai recente versiuni. Ansamblurile noi sunt construite acum folosind VS2008 și direcționând .NET 2.0, știm că funcționează bine. Cu toate acestea, dorim să începem să profităm de funcțiile limbajului C# 3.0 cum ar fi LINQ și să direcționăm ansamblurile împotriva .NET 3.5, fără a trebui să construim și să implementăm o nouă versiune a serviciului Windows.

0
fr hi bn

3 răspunsuri

Sunt lucruri interesante. M-am uitat la LinqBridge ieri după ce cineva de pe acest forum mi-a sugerat-o și sunt a face un lucru similar.

Mi se pare ciudat faptul ca Microsoft a numit framework-urile 2.0, 3.0 si 3.5 atunci cand toate compilati in jos pentru a produce acelasi IL cerut de 2.0 CLR. Mi-ar fi gandit adaugarea versiunilor pe 2.0 ar fi facut mai mult sens altfel presupun ca este, de asemenea, greu pentru a obtine oameni pentru a obtine capul lor in jurul valorii de faptul ca exista diferite versiuni de runtimes, compilatoare si limbi.

0
adăugat

C # 3 și .Net 3.5 adaugă noi ansambluri, dar IL este neschimbat.

Acest lucru înseamnă că cu .Net 2 asamblări puteți compila și utiliza C# 3, atâta timp cât nu utilizați Linq sau orice altceva care se referă System.Linq sau System.Core

yield, var, lambda syntax, anon types and initialisers are all compiler cleverness. The IL they produce is cross-compatible.

Dacă puteți face referire la noile ansambluri pentru 3.5, toate ar trebui să funcționeze.

Nu există o versiune nouă a ASP.Net - ar trebui să fie încă 2.0.50727 - dar ar trebui să compilați încă pentru 3.5

0
adăugat

randament, var, sintaxa lambda, tipuri Anon   și initializatori sunt toate compilator   istetime. IL care le produc este   eco-compatibil.

Punctul miniatural de culegere, dar randamentul a fost oricum o caracteristică de 2.0.

0
adăugat