Freigeben über


Versionskompatibilität

Abwärtskompatibilität bedeutet, dass eine App, die für eine bestimmte Version einer Plattform entwickelt wurde, auf späteren Versionen dieser Plattform ausgeführt wird. .NET Framework versucht, die Abwärtskompatibilität zu maximieren: Quellcode, der für eine Version von .NET Framework geschrieben wurde, sollte in späteren Versionen von .NET Framework kompiliert werden, und Binärdateien, die auf einer Version von .NET Framework ausgeführt werden, sollten sich in späteren Versionen von .NET Framework identisch verhalten.

Versionskompatibilität für Apps

Standardmäßig wird eine App auf der Version von .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, kann ein .NET Framework-Initialisierungsfehler auftreten. In diesem Fall schlägt der Versuch, die App auszuführen, fehl.

Um die spezifischen Versionen zu definieren, auf denen Ihre App ausgeführt wird, fügen Sie der Konfigurationsdatei Ihrer App mindestens ein <unterstütztesRuntime-Element> hinzu. Jedes <supportedRuntime> Element listet eine unterstützte Version der Laufzeit auf, wobei zuerst die am häufigsten bevorzugte Version angegeben wird und die zuletzt die am wenigsten bevorzugte Version angegeben wird.

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

Weitere Informationen finden Sie unter How to: Configure an App to Support .NET Framework 4 or 4.x.

Versionskompatibilität für Komponenten

Eine App kann die Version von .NET Framework steuern, auf der sie ausgeführt wird, aber eine Komponente kann nicht. Komponenten und Klassenbibliotheken werden im Kontext einer bestimmten App geladen, weshalb sie automatisch auf der Version von .NET Framework ausgeführt werden, auf der die App ausgeführt wird.

Aufgrund dieser Einschränkung sind Kompatibilitätsgarantien für Komponenten besonders wichtig. Ab .NET Framework 4 können Sie den Grad angeben, in dem eine Komponente für mehrere Versionen kompatibel bleiben soll, indem Sie das System.Runtime.Versioning.ComponentGuaranteesAttribute Attribut auf diese Komponente anwenden. Tools können dieses Attribut verwenden, um potenzielle Verstöße gegen die Kompatibilitätsgarantie in zukünftigen Versionen einer Komponente zu erkennen.

Abwärtskompatibilität

.NET Framework 4.5 und höhere Versionen sind abwärtskompatibel mit Apps, die mit früheren Versionen von .NET Framework erstellt wurden. Mit anderen Worten, Apps und Komponenten, die mit früheren Versionen erstellt wurden, funktionieren ohne Änderungen an .NET Framework 4.5 und höheren Versionen. Apps werden jedoch standardmäßig auf der Version der common language runtime ausgeführt, für die sie entwickelt wurden. Daher müssen Sie möglicherweise eine Konfigurationsdatei bereitstellen, damit Ihre App auf .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 durch scheinbar inkonsequente Änderungen in .NET Framework und Änderungen an Programmiertechniken unterbrochen werden. Leistungsverbesserungen an .NET Framework 4.5 können z. B. eine Racebedingung mit sich bringen, die unter früheren Versionen nicht aufgetreten ist. Ebenso sind die Verwendung eines hartcodierten Pfads zu .NET Framework-Assemblys, das Durchführen eines Gleichheitsvergleichs mit einer bestimmten Version von .NET Framework und das Abrufen des Werts eines privaten Felds mithilfe der Spiegelung nicht abwärtskompatibel. Darüber hinaus enthält jede Version von .NET Framework Fehlerkorrekturen und sicherheitsrelevante Änderungen, die sich auf die Kompatibilität einiger Apps und Komponenten auswirken können.

Wenn Ihre App oder Komponente unter .NET Framework 4.5 oder einer höheren Version nicht wie erwartet funktioniert, verwenden Sie die folgenden Checklisten:

  • Wenn Ihre App für die Ausführung auf einer beliebigen Version von .NET Framework ab .NET Framework 4.0 entwickelt wurde, lesen Sie die Anwendungskompatibilität , um Listen von Änderungen zwischen Ihrer zielbezogenen .NET Framework-Version und der Version zu generieren, auf der Ihre App ausgeführt wird.

  • Wenn Sie über eine .NET Framework 3.5-App verfügen, lesen Sie auch .NET Framework 4 Migrationsprobleme.

  • Wenn Sie über eine .NET Framework 2.0-App verfügen, lesen Sie auch Die Änderungen in .NET Framework 3.5 SP1.

  • Wenn Sie über eine .NET Framework 1.1-App verfügen, lesen Sie auch Änderungen in .NET Framework 2.0.

  • Wenn Sie vorhandenen Quellcode kompilieren, der auf .NET Framework 4.5 oder den zugehörigen Point Releases ausgeführt werden soll, oder wenn Sie eine neue Version einer App oder Komponente entwickeln, die auf .NET Framework 4.5 oder deren Point Releases von einer vorhandenen Quellcodebasis ausgerichtet ist, überprüfen Sie , was in der Klassenbibliothek veraltet ist, auf veraltete Typen und Member, und wenden Sie die beschriebene Problemumgehung an. (Zuvor kompilierter Code wird weiterhin für Typen und Member ausgeführt, die als veraltet gekennzeichnet wurden.)

  • Wenn Sie feststellen, dass eine Änderung in .NET Framework 4.5 Ihre App beschädigt hat, überprüfen Sie das Laufzeiteinstellungsschema und insbesondere das <AppContextSwitchOverrides-Element>, um zu ermitteln, ob Sie eine Laufzeiteinstellung in der Konfigurationsdatei Ihrer App verwenden können, um das vorherige Verhalten wiederherzustellen.

  • Wenn Sie ein Problem feststellen, das nicht dokumentiert ist, öffnen Sie ein Problem auf der Entwicklercommunity-Website für .NET , oder öffnen Sie ein Problem im GitHub-Repository von Microsoft/dotnet.

Parallele Ausführung

Wenn Sie keine geeignete Problemumgehung für Ihr Problem finden können, denken Sie daran, dass .NET Framework 4.5 (oder eine seiner Point Releases) parallel mit den Versionen 1.1, 2.0 und 3.5 ausgeführt wird und ein direktes Update ist, das Version 4 ersetzt. Für Apps, die auf die Versionen 1.1, 2.0 und 3.5 abzielen, können Sie die entsprechende Version von .NET Framework auf dem Zielcomputer installieren, um die App in ihrer besten Umgebung auszuführen. Weitere Informationen zur parallelen Ausführung finden Sie unter "Parallele Ausführung".

Siehe auch