Frage

Das sollte in Ordnung sein, da sich die CLR eigentlich nicht geändert hat?

Die Boxen, auf denen der C# 2.0-Code ausgeführt wird haben hatte .NET 3.5 eingeführt.

Der Hintergrund ist, dass wir über einen Windows-Dienst verfügen (.NET 2.0-Exe, erstellt mit VS2005, bereitgestellt auf ca. 150 Servern), der Assemblys (fast wie Plug-Ins) dynamisch lädt, um verschiedene von ihm verlangte Arbeitsaufgaben abzuschließen.Immer wenn wir eine neue Version der Buslogik einführen, legen wir die Assemblys einfach auf einem FTP-Server ab und der Windows-Dienst weiß, wie er nach den neuesten Versionen sucht, diese abruft und speichert.Neue Assemblys werden jetzt mit VS2008 und für .NET 2.0 erstellt. Wir wissen, dass das einwandfrei funktioniert.Wir möchten jedoch damit beginnen, die Sprachfunktionen von C# 3.0 wie LINQ zu nutzen und die Assemblys auf .NET 3.5 auszurichten, ohne eine neue Version des Windows-Dienstes erstellen und bereitstellen zu müssen.

War es hilfreich?

Lösung

C#3 und .Net 3.5 fügen neue Assemblys hinzu, aber die IL bleibt unverändert.

Das bedeutet, dass Sie mit .Net 2-Assemblys C#3 kompilieren und verwenden können, solange Sie nicht Linq oder etwas anderes verwenden, das auf System.Linq oder System.Core verweist

yield, var, Lambda-Syntax, Anon-Typen und Initialisierer sind allesamt Compiler-Klugheit.Die von ihnen produzierte IL ist kreuzkompatibel.

Wenn Sie auf die neuen Assemblys für 3.5 verweisen können, sollte alles funktionieren.

Es gibt keine neue Version von ASP.Net – sie sollte immer noch 2.0.50727 sein – aber Sie sollten immer noch für 3.5 kompilieren

Andere Tipps

Ausbeute, Var, Lambda -Syntax, Anon -Typen und Initialisatoren sind Cleverness.Die IL, die sie produzieren, ist Kreuzkompatible.

Kleiner Kritikpunkt, aber die Ausbeute war trotzdem ein 2,0-Merkmal.

Das ist eine interessante Sache.Ich habe es angeschaut LinqBridge Gestern hat es mir jemand in diesem Forum vorgeschlagen und er macht etwas Ähnliches.

Ich finde es seltsam, dass Microsoft die Frameworks 2.0, 3.0 und 3.5 benannt hat, obwohl sie alle herunterkompiliert wurden, um die gleiche IL zu erzeugen, die von der CLR 2.0 benötigt wird.Ich hätte gedacht, dass das Hinzufügen von Versionen zu 2.0 sinnvoller gewesen wäre, obwohl es meiner Meinung nach auch schwierig ist, den Leuten klarzumachen, dass es verschiedene Versionen von Laufzeiten, Compilern und Sprachen gibt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top