Versionskompatibilität

Abwärtskompatibilität bedeutet, dass eine für eine bestimmte Version einer Plattform entwickelte App in höheren Versionen dieser Plattform ausgeführt werden kann. Im .NET Framework wird versucht, die Abwärtskompatibilität zu maximieren: Quellcode, der für eine bestimmte Version des .NET Framework geschrieben wurde, kann in höheren Versionen des .NET Framework kompiliert werden. Auch Binärdateien, die in einer bestimmten Version des .NET Framework ausgeführt werden, sollten in höheren Versionen des .NET Framework dasselbe Verhalten aufweisen.

Versionskompatibilität für Apps

Standardmäßig wird eine App in der Version des .NET Framework ausgeführt, für die sie erstellt wurde. Wenn diese Version nicht vorhanden ist und die App-Konfigurationsdatei keine unterstützten Versionen definiert, tritt möglicherweise ein .NET Framework-Initialisierungsfehler auf. In diesem Fall schlägt der Versuch fehl, die App auszuführen.

Fügen Sie der Konfigurationsdatei der App ein oder mehrere <supportedRuntime>-Elemente hinzu, um die Versionen zu definieren, in denen die App ausgeführt werden kann. Jedes <supportedRuntime>-Element führt eine unterstützte Version der Laufzeit auf. Dabei gibt das erste Element die bevorzugte Version der Laufzeit an und das letzte die am wenigsten bevorzugte Version.

<configuration>
   <startup>
      <supportedRuntime version="v2.0.50727" />
      <supportedRuntime version="v4.0" />
   </startup>
</configuration>

Weitere Informationen finden Sie unter Vorgehensweise: Konfigurieren einer App zur Unterstützung von .NET Framework 4 oder 4.x.

Versionskompatibilität für Komponenten

Eine App kann die Version von .NET Framework steuern, in der sie ausgeführt wird. Eine Komponente kann das jedoch nicht. Komponenten und Klassenbibliotheken werden im Kontext einer bestimmten App geladen und daher automatisch in der Version von .NET Framework ausgeführt, in der die App ausgeführt wird.

Wegen dieser Einschränkung sind Kompatibilitätsgarantien für Komponenten besonders wichtig. Ab .NET Framework 4 können Sie den Grad der Kompatibilität einer Komponente mit mehreren Versionen angeben. Dazu wenden Sie das System.Runtime.Versioning.ComponentGuaranteesAttribute-Attribut auf diese Komponente an. Tools können mithilfe dieses Attributs potenzielle Verletzungen der Kompatibilitätsgarantie in zukünftigen Versionen einer Komponente erkennen.

Abwärtskompatibilität

.NET Framework 4.5 und höher ist mit Apps abwärtskompatibel, die mit früheren Versionen von .NET Framework erstellt wurden. Das heißt, Apps und Komponenten, die mit früheren Versionen von .NET Framework erstellt wurden, funktionieren ohne weitere Änderung auch in .NET Framework 4.5 und höher. Allerdings werden Apps standardmäßig in der Version der Common Language Runtime ausgeführt, für die sie entwickelt wurden. Daher müssen Sie eine Konfigurationsdatei bereitstellen, damit die App in .NET Framework 4.5 oder höher ausgeführt werden kann. Weitere Informationen finden Sie im Abschnitt Versionskompatibilität für Apps weiter oben in diesem Artikel.

In der Praxis kann diese Kompatibilität von scheinbar belanglosen Änderungen in .NET Framework und von Änderungen in den Programmierverfahren aufgehoben werden. Leistungsverbesserungen an .NET Framework 4.5 können z. B. eine Racebedingung mit sich bringen, die unter früheren Versionen nicht aufgetreten ist. Auf ähnliche Weise sind das Verwenden eines hartcodierten Pfads zu .NET Framework-Assemblys, das Ausführen eines Gleichheitsvergleich mit einer bestimmten Version von .NET Framework und das Abrufen des Werts eines privaten Felds mithilfe einer Reflektion keine abwärtskompatiblen Maßnahmen. Außerdem schließt jede Version von .NET Framework Fehlerkorrekturen und sicherheitsbezogene Änderungen ein, die sich auf die Kompatibilität von einigen Apps und Komponenten auswirken können.

Wenn Ihre Anwendung oder Komponente unter .NET Framework 4.5 oder einer späteren Version nicht wie erwartet funktioniert, verwenden Sie die folgenden Checklisten:

Parallele Ausführung

Wenn Sie keine geeignete Umgehung für das Problem finden können, beachten Sie, dass .NET Framework 4.5 (oder eine der Unterversionen) parallel mit den Versionen 1.1, 2.0 und 3.5 ausgeführt wird und ein direktes Update ist, das Version 4 ersetzt. Sie können für Apps, die auf die Versionen 1.1, 2.0 und 3.5 ausgerichtet sind, die entsprechende Version des .NET Framework auf dem Zielcomputer installieren, um die App in der optimalen Umgebung auszuführen. Weitere Informationen über die parallele Ausführung finden Sie unter Parallele Ausführung.

Siehe auch