Sind .NET-Versionen abwärtskompatibel?

8

Im Laufe der Jahre wurden verschiedene Versionen von .NET über WSUS auf meinen Client-Computern bereitgestellt. Nun scheint es, dass sich diese Installationen auf vielen Computern gegenseitig abgespritzt haben und bestimmte .NET-Sicherheitsupdates fehlschlagen.

Ich habe überprüft, ob ich das .NET-Bereinigungstool ausführen kann, um alle .NET-Installationen auf einem Client zu entfernen, und kann dann .NET 3.5 über WSUS veröffentlichen. Dies scheint die Probleme gelöst zu haben, die ich auf dem Computer habe, auf dem ich es ausprobiert habe.

Die Frage ist also: Wenn ich .NET 3.5 habe, gibt es einen Grund, auch frühere Versionen installiert zu haben?

Boden
quelle

Antworten:

14

Abwärtskompatibel ist ein schlechter Begriff. .NET 1.0, 1.1 und 2.0 sind eigene Frameworks, die nicht miteinander kompatibel sind. .NET 3.0 und 3.5 sind Super-Sets des 2.0-Frameworks, das das .NET 2.0-Basisframework verwendet, mit zusätzlichen DLLs, um zusätzliche Funktionen bereitzustellen (3.0 enthielt Dinge wie WCF und WWF, 3.5 hatte Dinge wie LINQ). In Bezug auf die Anwendungsanforderungen:

  • Für 1.0-Apps muss .NET 1.0 installiert sein.
  • Für 1.1-Apps muss .NET 1.1 installiert sein.
  • Für 2.0-Apps muss .NET 2.0, 3.0 oder 3.5 installiert sein.
  • Für 3.0-Apps muss .NET 3.0 oder 3.5 installiert sein.
  • Für 3.5-Apps muss .NET 3.5 installiert sein.

Ich bin mir ziemlich sicher, dass .NET 4.0 dem gleichen Modell wie 2.0 - 3.5 folgt (2.0-Basis mit zusätzlichen Funktions-DLLs). Die Installation von .NET 3.5 deckt Sie also für .NET 2.0 - 3.5-Anwendungen ab. Sie müssen .NET 1.1 installieren, wenn Sie 1.1-Apps ausführen (dasselbe gilt für 1.0-Apps).

Evan M.
quelle
4
Ich bin mir ziemlich sicher, dass .net 4 eine völlig neue CLR ist, die neben allen früheren Versionen läuft - es ist nicht nur ein Erweiterungspaket wie 3 / 3.5
Michael Haren
@ Michael - Ich habe noch keine endgültigen Informationen gefunden, aber es scheint, dass Sie Recht haben. Mein Fehler.
Evan M.
+1. Tolle Antwort. Ich kann Ihnen nicht sagen, wie oft ich dies unseren Support-Ingenieuren erklären musste.
Joeqwerty
2
msdn.microsoft.com/en-us/library/bb822049.aspx ist ein Artikel, der bestätigt, was Sie oben angegeben haben. Und ja, der 4.0 ist eigenständig, hat keine Abhängigkeiten von anderen Versionen.
Larry Smithmier
2

.NET ist bis zu einem gewissen Grad abwärtskompatibel, Sie müssen jedoch zwischen Versionen des Frameworks vergleichen. Was sie sagen, ist, dass es Seite an Seite kompatibel ist, was das Problem ist, mit dem Sie konfrontiert sind. Es gibt definitiv einen Grund, andere Versionen zu installieren. Eine App kann für eine bestimmte Version geschrieben werden. Wenn diese Version auf einem Computer nicht vorhanden ist, schlägt die App fehl.

Squillman
quelle
Das habe ich mir gedacht. Ich denke, ich muss das Maschine für Maschine tun.
Boden
@Boden: Normalerweise können Sie die App so wechseln, dass sie auf ein anderes Framework abzielt. Sie müssen jedoch eine app.config- oder eine web.config-Datei für die App ändern. Ich würde jedoch dringend davon abraten, da dies eine ganze Reihe von Problemen für die App mit sich bringen und sie somit völlig zerstören könnte.
Squillman
Sie werden wahrscheinlich eine wirklich gute Abdeckung erhalten, wenn Sie jetzt 3.5 und 4.0 bereitstellen, wenn es im April veröffentlicht wird. 3.5 hat die gleiche CLR wie 2, sodass Sie nicht 2 und 3.5 ausführen müssen. Nur noch wenige Apps führen 1.1 aus, sodass Sie dies weglassen und nur in dem seltenen Fall einbinden können, in dem es erforderlich ist.
Michael Haren
-1

Nein, .net ist nicht abwärtskompatibel. MS behält sich das Recht vor, Änderungen vorzunehmen. 2,0 u bis 3,5 sind IIRC, aber das ist eher eine "glückliche Seite". Das Concet besteht darin, dass alle benötigten Frameworks installiert sind und eine Anwendung auf das Framework abzielt, gegen das sie kompiliert wurde. Auf diese Weise kann MS neue Versionen bereinigen und nicht kompatible Änderungen einführen.

TomTom
quelle