Freigeben über


Anwendungskompatibilität in .NET Framework

Kompatibilität ist ein wichtiges Ziel jeder .NET Framework-Version. Kompatibilität stellt sicher, dass jede Version additiv ist, sodass frühere Versionen weiterhin funktionieren. Andererseits können Änderungen an früheren Funktionen (z. B. zur Verbesserung der Leistung, Zur Behebung von Sicherheitsproblemen oder Zum Beheben von Fehlern) Kompatibilitätsprobleme in vorhandenem Code oder vorhandenen Anwendungen verursachen, die unter einer späteren Version ausgeführt werden.

Jede App zielt auf eine bestimmte Version von .NET Framework ab:

  • Definieren eines Zielframeworks in Visual Studio.
  • Angeben des Zielframeworks in einer Projektdatei.
  • Anwenden eines TargetFrameworkAttribute Auf den Quellcodes.

Beim Migrieren von einer Version von .NET Framework zu einer anderen gibt es zwei Arten von Änderungen, die Sie berücksichtigen sollten:

Laufzeitänderungen

Laufzeitprobleme sind solche, die auftreten, wenn eine neue Laufzeit auf einem Computer platziert wird und sich das Verhalten einer App ändert. Wenn sie auf einer neueren Version ausgeführt wird als das Ziel, verwendet .NET Framework eigenartiges Verhalten, um die ältere Zielversion nachzuahmen. Die App wird auf der neueren Version ausgeführt, fungiert aber so, als ob sie auf der älteren Version ausgeführt wird. Viele der Kompatibilitätsprobleme zwischen .NET Framework-Versionen werden durch dieses eigenwillige Modell abgemildert. Wenn beispielsweise eine Binärdatei für .NET Framework 4.0 kompiliert wurde, aber auf einem Computer mit .NET Framework 4.5 oder höher ausgeführt wird, wird sie im .NET Framework 4.0-Kompatibilitätsmodus ausgeführt. Dies bedeutet, dass sich viele der Änderungen in der späteren Version nicht auf die Binärdatei auswirken.

Die Version von .NET Framework, auf die eine Anwendung abzielt, wird durch die Zielversion der Eintragsassembly für die Anwendungsdomäne bestimmt, in der der Code ausgeführt wird. Alle zusätzlichen Assemblys, die in dieser Anwendungsdomäne für diese Version geladen wurden. Bei einer ausführbaren Datei ist beispielsweise die Version, auf die die ausführbare Datei abzielt, der Kompatibilitätsmodus für alle Assemblys in dieser Anwendungsdomäne.

Neuausrichtungsänderungen

Retargeting changes are those that arise when an assembly is recompiled to target a newer version. Die Ausrichtung auf eine neuere Version bedeutet, dass sich die Assembly für die neuen Features sowie potenzielle Kompatibilitätsprobleme für alte Features entscheidet.

Auswirkungsklassifizierung

In den Artikeln zur Beschreibung von Laufzeit- und Neuzurückungsänderungen, z. B. zum Retargeting von Änderungen für die Migration zu .NET Framework 4.8.x, werden einzelne Elemente nach ihren erwarteten Auswirkungen wie folgt klassifiziert:

Wichtig
Eine erhebliche Änderung, die sich auf eine große Anzahl von Apps auswirkt oder eine wesentliche Änderung des Codes erfordert.

neben
Eine Änderung, die sich auf eine kleine Anzahl von Apps auswirkt oder eine geringfügige Änderung des Codes erfordert.

Edge-Groß-/Kleinschreibung
Eine Änderung, die sich auf Apps unter sehr spezifischen Szenarien auswirkt, die nicht häufig verwendet werden.

Durchsichtig
Eine Änderung, die keine spürbare Auswirkung auf den Entwickler oder Benutzer der App hat. Die App sollte aufgrund dieser Änderung keine Änderung erfordern.

Siehe auch