Anwendungskompatibilität im .NET FrameworkApplication Compatibility in the .NET Framework

EinführungIntroduction

Kompatibilität ist ein wichtiges Ziel jedes .NET-Release.Compatibility is a very important goal of each .NET release. Durch Kompatibilität wird sichergestellt, dass jede Version additiv ist; frühere Versionen funktionieren also weiterhin.Compatibility ensures that each version is additive, so previous versions will still work. Auf der anderen Seite können Änderungen an früheren Versionen (zur Leistungssteigerung, Beheben von Sicherheitsproblemen oder Fehlerbehebungen) zu Kompatibilitätsproblemen im vorhandenen Code oder Anwendungen führen, die unter einer späteren Version ausgeführt werden.On the other hand, changes to previous functionality (to improve performance, address security issues, or fix bugs) can cause compatibility problems in existing code or existing applications that run under a later version. .NET Framework erkennt Änderungen der Neuzuweisung und Laufzeitänderungen.The .NET Framework recognizes retargeting changes and runtime changes. Die Neuzuweisung von Änderungen beeinflussen Anwendungen, die auf eine bestimmte .NET Framework-Version abzielen, aber auf einer höheren Version ausgeführt werden.Retargeting changes affect applications that target a specific version of the .NET Framework but are running on a later version. Laufzeitänderungen betreffen alle Anwendungen, die auf einer bestimmten Version ausgeführt werden.Runtime changes affect all applications running on a particular version.

Jede App hat eine bestimmte Version von .NET Framework als Ziel, die durch Folgendes angegeben werden kann:Each app targets a specific version of the .NET Framework, which can be specified by:

  • Definieren eines Zielframeworks in Visual StudioDefining a target framework in Visual Studio.
  • Angeben des Zielframeworks in einer ProjektdateiSpecifying the target framework in a project file.
  • Anwenden einer TargetFrameworkAttribute auf dem QuellcodeApplying a TargetFrameworkAttribute to the source code.

Wenn .NET Framework auf einer neueren Version anstatt auf der beabsichtigten ausgeführt wird, wird ein besonderes Verhalten angewendet, um die ältere Zielversion zu imitieren.When running on a newer version than what was targeted, the .NET Framework will use quirked behavior to mimic the older targeted version. Anders ausgedrückt: Die App wird auf der neueren Version des Framework ausgeführt, sich aber so verhalten, als würde sie auf der älteren Version ausgeführt werden.In other words, the app will run on the newer version of the Framework, but act as if it's running on the older version. Viele Kompatibilitätsprobleme zwischen den .NET Framework-Versionen werden durch dieses besondere Modell minimiert.Many of the compatibility issues between versions of the .NET Framework are mitigated through this quirking model.

LaufzeitänderungenRuntime changes

Laufzeitprobleme tauchen auf, wenn eine neue Laufzeit auf einem Gerät bereitgestellt wird und wenn die gleichen Binärdateien ausgeführt werden, es jedoch zu anderem Verhalten kommt.Runtime issues are those that arise when a new runtime is placed on a machine and the same binaries are run, but different behavior is seen. Wenn eine Binärdatei für .NET Framework 4.0 kompiliert wurde, wird Sie im .NET Framework 4.0-Kompatibilitätsmodus auf 4.5 oder späteren Versionen ausgeführt.If a binary was compiled for .NET Framework 4.0 it will run in .NET Framework 4.0 compatibility mode on 4.5 or later versions. Viele Änderungen, die 4.5 betreffen, werden für 4.0 kompilierte Binärdateien nicht betreffen.Many of the changes that affect 4.5 will not affect a binary compiled for 4.0. Dies ist spezifisch für AppDomain und ist von den Einstellungen der Einstiegsassembly abhängig.This is specific to the AppDomain and depends on the settings of the entry assembly.

NeuausrichtungsänderungenRetargeting changes

Probleme bei der Neuzuweisung erscheinen, wenn eine Assembly, die ursprünglich 4.0 angepeilt hat, nun 4.5 als Ziel hat.Retargeting issues are those that arise when an assembly that was targeting 4.0 is now set to target 4.5. Die Assembly wählt nun die neuen Funktionen sowie die potenziellen Kompatibilitätsprobleme für alte Funktionen.Now the assembly opts into the new features as well as potential compatibility issues to old features. Dies wird erneut von der Einstiegsassembly bestimmt, also von der Konsolen-App, die die Assembly verwendet oder der Website, die auf die Assembly verweist.Again, this is dictated by the entry assembly, so the console app that uses the assembly, or the website that references the assembly.

Diagnose der .NET-Kompatibilität.NET Compatibility Diagnostics

Die Diagnose der .NET Kompatibilität umfasst von Roslyn unterstützte Analyzer, die bei der Erkennung von Anwendungskompatibilitätsproblemen zwischen .NET Framework-Versionen helfen.The .NET Compatibility Diagnostics are Roslyn-powered analyzers that help identify application compatibility issues between versions of the .NET Framework. Diese Liste enthält alle verfügbaren Analyzer, obwohl nur eine Teilmenge auf eine bestimmte Migration angewendet werden kann.This list contains all of the analyzers available, although only a subset will apply to any specific migration. Die Analyzer ermitteln, welche Probleme auf die geplante Migration zutreffen und beschreibt diese nur kurz.The analyzers will determine which issues are applicable for the planned migration and will only surface those.

Jedes Problem umfasst die folgenden Informationen:Each issue includes the following information:

  • Die Beschreibung der Änderungen von einer früheren Version.The description of what has changed from a previous version.

  • Wie sich die Änderung auf Kunden auswirkt und ob Problemumgehungen verfügbar sind, um die Kompatibilität zwischen Versionen beizubehalten.How the change affects customers and whether any workarounds are available to preserve compatibility across versions.

  • Eine Bewertung der Bedeutung der Änderung.An assessment of how important the change is. Anwendungskompatibilitätsprobleme werden wie folgt kategorisiert:Application compatibility issue are categorized as follows:

    HauptversionMajor Eine wesentliche Änderung, die eine große Anzahl von Apps beeinflusst oder erhebliche Änderungen des Codes erforderlich macht.A significant change that affects a large number of apps or requires substantial modification of code.
    NebenversionMinor Eine Änderung, die eine kleine Anzahl von Apps beeinflusst oder geringfügige Änderungen des Codes erforderlich macht.A change that affects a small number of apps or that requires minor modification of code.
    GrenzfallEdge case Eine Änderung, die nur Apps in sehr spezifischen, nicht üblichen Szenarien beeinflusst.A change that affects apps under very specific, uncommon scenarios.
    TransparentTransparent Eine Änderung ohne nennenswerte Auswirkungen auf die Entwickler oder Benutzer der Anwendung.A change with no noticeable effect on the application's developer or user.
  • Die Version gibt an, wann die Änderung zum ersten Mal im Framework auftritt.Version indicates when the change first appears in the framework. Einige der Änderungen werden in einer bestimmten Version eingeführt und in einer späteren Version zurückgesetzt; dies wird ebenso beschrieben.Some of the changes are introduced in a particular version and reverted in a later version; that is indicated as well.

  • Art der Änderung:The type of change:

    NeuzuweisungRetargeting Die Änderung wirkt sich auf Apps aus, die neu kompiliert werden, um auf eine neue Version von .NET Framework ausgerichtet zu werden.The change affects apps that are recompiled to target a new version of the .NET Framework.
    LaufzeitRuntime Die Änderung wirkt sich auf eine vorhandene Anwendung aus, die auf eine frühere Version von .NET Framework ausgerichtet ist, aber unter einer höheren Version ausgeführt wird.The change affects an existing app that targets a previous version of the .NET Framework but runs on a later version.
  • Die betroffenen APIs, falls vorhanden.The affected APIS, if any.

  • Die IDs der verfügbaren Diagnosen.The IDs of the available diagnostics

VerwendungUsage

Um zu starten, wählen Sie unten den Typ der Kompatibilitätsänderung aus:To begin, select the type of compatibility change below:

Siehe auchSee Also