Kompatibilität von .NET Framework-VersionenVersion Compatibility in the .NET Framework

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.Backward compatibility means that an app that was developed for a particular version of a platform will run on later versions of that platform. Bei .NET Framework wird versucht, die Abwärtskompatibilität zu maximieren: Für eine Version von .NET Framework geschriebener Quellcode wird auf höheren Versionen von .NET Framework kompiliert, und Binärdateien, die auf einer Version von .NET Framework ausgeführt werden, verhalten sich auch auf höheren Versionen von .NET Framework gleich.The .NET Framework tries to maximize backward compatibility: Source code written for one version of the .NET Framework should compile on later versions of the .NET Framework, and binaries that run on one version of the .NET Framework should behave identically on later versions of the .NET Framework.

Versionskompatibilität für AppsVersion compatibility for apps

Standardmäßig wird eine App in der Version von .NET Framework ausgeführt, für die sie erstellt wurde.By default, an app runs on the version of the .NET Framework that it was built for. Wenn diese Version nicht vorhanden ist und die App-Konfigurationsdatei keine unterstützten Versionen definiert, tritt möglicherweise ein .NET Framework-Initialisierungsfehler auf.If that version is not present and the app configuration file does not define supported versions, a .NET Framework initialization error may occur. In diesem Fall schlägt der Versuch fehl, die App auszuführen.In this case, the attempt to run the app will fail.

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.To define the specific versions on which your app runs, add one or more <supportedRuntime> elements to your app's configuration file. 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.Each <supportedRuntime> element lists a supported version of the runtime, with the first specifying the most preferred version and the last specifying the least preferred version.

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

Weitere Informationen finden Sie unter Gewusst wie: Konfigurieren einer App für die Unterstützung von .NET Framework 4 oder 4.x.For more information, see How to: Configure an App to Support .NET Framework 4 or 4.x.

Versionskompatibilität für KomponentenVersion compatibility for components

Eine App kann die Version von .NET Framework steuern, in der sie ausgeführt wird. Eine Komponente kann das jedoch nicht.An app can control the version of the .NET Framework on which it runs, but a component cannot. 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.Components and class libraries are loaded in the context of a particular app, and therefore automatically run on the version of the .NET Framework that the app runs on.

Wegen dieser Einschränkung sind Kompatibilitätsgarantien für Komponenten besonders wichtig.Because of this restriction, compatibility guarantees are especially important for components. 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.Starting with the .NET Framework 4, you can specify the degree to which a component is expected to remain compatible across multiple versions by applying the System.Runtime.Versioning.ComponentGuaranteesAttribute attribute to that component. Tools können mithilfe dieses Attributs potenzielle Verletzungen der Kompatibilitätsgarantie in zukünftigen Versionen einer Komponente erkennen.Tools can use this attribute to detect potential violations of the compatibility guarantee in future versions of a component.

Abwärtskompatibilität und .NET Framework 4.5Backward compatibility and the .NET Framework 4.5

Die .NET Framework 4.5 und höher sind abwärtskompatibel mit apps, die mit früheren Versionen von .NET Framework erstellt wurden.The .NET Framework 4.5 and later versions are backward-compatible with apps that were built with earlier versions of the .NET Framework. Das heißt, funktioniert apps und Komponenten, die mit früheren Versionen ohne Änderung auf die .NET Framework 4.5 und höher.In other words, apps and components built with previous versions will work without modification on the .NET Framework 4.5 and later versions. Allerdings werden standardmäßig, ausgeführt apps auf die Version der common Language Runtime für die sie entwickelt wurden, daher Sie zum Angeben einer Konfigurationsdatei, damit Ihre Anwendung auf dem .NET Framework 4.5 oder höher ausgeführt müssen.However, by default, apps run on the version of the common language runtime for which they were developed, so you may have to provide a configuration file to enable your app to run on the .NET Framework 4.5 or later versions. Weitere Informationen finden Sie im Abschnitt Versionskompatibilität für Apps weiter oben in diesem Artikel.For more information, see the Version compatibility for apps section earlier in this article.

In der Praxis kann diese Kompatibilität von scheinbar belanglosen Änderungen in .NET Framework und von Änderungen in den Programmierverfahren aufgehoben werden.In practice, this compatibility can be broken by seemingly inconsequential changes in the .NET Framework and changes in programming techniques. Leistungsverbesserungen an .NET Framework 4.5 können z. B. eine Racebedingung mit sich bringen, die unter früheren Versionen nicht aufgetreten ist.For example, performance improvements in the .NET Framework 4.5 can expose a race condition that did not occur on earlier versions. 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.Similarly, using a hard-coded path to .NET Framework assemblies, performing an equality comparison with a particular version of the .NET Framework, and getting the value of a private field by using reflection are not backward-compatible practices. 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.In addition, each version of the .NET Framework includes bug fixes and security-related changes that can affect the compatibility of some apps and components.

Wenn Ihre app oder Komponente nicht ordnungsgemäß funktioniert, wie erwartet auf .NET Framework 4.5 (einschließlich punktreleases, die .NET Framework 4.5.1.NET Framework 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7 oder 4.7.1, verwenden Sie die folgenden Prüflisten:If your app or component does not work as expected on the .NET Framework 4.5 (including its point releases, the .NET Framework 4.5.1.NET Framework 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, or 4.7.1, use the following checklists:

  • Wenn Ihre app entwickelt wurde, um auf eine beliebige Version von .NET Framework beginnend mit .NET Framework 4.0 ausgeführt wird, finden Sie unter Anwendungskompatibilität in .NET Framework zum Generieren von Listen von Änderungen zwischen der Zielversion von .NET Framework und die Version auf der die app ausgeführt wird.If your app was developed to run on any version of the .NET Framework starting with the .NET Framework 4.0, see Application Compatibility in the .NET Framework to generate lists of changes between your targeted .NET Framework version and the version on which your app is running.

  • Wenn Sie eine .NET Framework 3.5-app haben, finden Sie auch unter .NET Framework 4-Migrationsprobleme.If you have a .NET Framework 3.5 app, also see .NET Framework 4 Migration Issues.

  • Wenn Sie eine .NET Framework 2.0-app haben, finden Sie auch unter Änderungen in .NET Framework 3.5 SP1.If you have a .NET Framework 2.0 app, also see Changes in .NET Framework 3.5 SP1.

  • Wenn Sie eine .NET Framework 1.1-app haben, finden Sie auch unter Änderungen in .NET Framework 2.0.If you have a .NET Framework 1.1 app, also see Changes in .NET Framework 2.0.

  • Wenn Sie vorhandenen Quellcode zum Ausführen von auf .NET Framework 4.5 oder dessen Punkt Versionen neu kompilieren müssen, oder entwickeln Sie eine neue Version einer app oder Komponente, die als Ziel verwendet die .NET Framework 4.5.NET Framework 4.5 oder dessen Punktversionen aus einer vorhandenen Quelle Code Basisentität Kontrollkästchen Was ist, dass veraltete Elemente in der Klassenbibliothek veraltete Typen und Member, und weisen Sie die beschriebene problemumgehung.If you are recompiling existing source code to run on the .NET Framework 4.5 or its point releases, or if you are developing a new version of an app or component that targets the .NET Framework 4.5.NET Framework 4.5 or its point releases from an existing source code base, check What's Obsolete in the Class Library for obsolete types and members, and apply the workaround described. (Bereits kompilierter Code wird weiterhin mit Typen und Membern ausgeführt, die als veraltet markiert wurden.)(Previously compiled code will continue to run against types and members that have been marked as obsolete.)

  • Wenn Sie feststellen, dass eine Änderung in .NET Framework 4.5.NET Framework 4.5 das ordnungsgemäße Funktionieren der App verhindert hat, überprüfen Sie im Schema für Laufzeiteinstellungen, ob Sie eine Laufzeiteinstellung in der App-Konfigurationsdatei verwenden können, um das vorherige Verhalten wiederherzustellen.If you determine that a change in the .NET Framework 4.5.NET Framework 4.5 has broken your app, check the Runtime Settings Schema to determine whether you can use a runtime setting in your app's configuration file to restore the previous behavior.

  • Wenn ein Problem auftritt, das nicht dokumentiert ist, melden Sie den Microsoft Connect-Fehler und wenden Sie sich mit der Fehlernummer an netfxcf@microsoft.com.If you encounter an issue that is not documented, file a Microsoft Connect bug and contact netfxcf@microsoft.com with the bug number.

Kompatibilität und parallele AusführungCompatibility and side-by-side execution

Wenn Sie keine geeignete Problemumgehung für das Problem finden können, beachten Sie, dass .NET Framework 4.5 (oder eine seiner Punktreleases) parallel mit den Versionen 1.1, 2.0 und 3.5 ausgeführt werden kann, und ein direktes Update ist, das Version 4 ersetzt.If you cannot find a suitable workaround for your issue, remember that the .NET Framework 4.5 (or one of its point releases) runs side by side with versions 1.1, 2.0, and 3.5, and is an in-place update that replaces version 4. Sie können für Apps, die auf die Versionen 1.1, 2.0 und 3.5 ausgerichtet sind, die entsprechende Version von .NET Framework auf dem Zielcomputer installieren, um die App in der optimalen Umgebung auszuführen.For apps that target versions 1.1, 2.0, and 3.5, you can install the appropriate version of the .NET Framework on the target machine to run the app in its best environment. Weitere Informationen über die parallele Ausführung finden Sie unter Parallele Ausführung.For more information about side-by-side execution, see Side-by-Side Execution.

Siehe auchSee Also

NeuigkeitenWhat's New
Veraltete Elemente in der KlassenbibliothekWhat's Obsolete in the Class Library
AnwendungskompatibilitätApplication Compatibility
Microsoft .NET Framework Support Lifecycle-RichtlinienMicrosoft .NET Framework Support Lifecycle Policy
Migrationsprobleme in .NET Framework 4.NET Framework 4 Migration Issues