Toepassingscompatibiliteit in .NET Framework

Compatibiliteit is een belangrijk doel van elke .NET Framework-release. Compatibiliteit zorgt ervoor dat elke versie additief is, zodat eerdere versies blijven werken. Aan de andere kant kunnen wijzigingen in eerdere functionaliteit (bijvoorbeeld om de prestaties te verbeteren, beveiligingsproblemen op te lossen of fouten op te lossen) compatibiliteitsproblemen veroorzaken in bestaande code of bestaande toepassingen die worden uitgevoerd onder een latere versie.

Elke app is gericht op een specifieke versie van .NET Framework door:

  • Een doelframework definiëren in Visual Studio.
  • Het doelframework opgeven in een projectbestand.
  • TargetFrameworkAttribute Een op de broncode toepassen.

Wanneer u migreert van de ene versie van .NET Framework naar een andere, zijn er twee soorten wijzigingen waarmee u rekening moet houden:

Runtimewijzigingen

Runtimeproblemen zijn problemen die zich voordoen wanneer een nieuwe runtime op een computer wordt geplaatst en het gedrag van een app verandert. Wanneer u een nieuwere versie uitvoert dan waarop is gericht, maakt .NET Framework gebruik van gehalveerd gedrag om de oudere doelversie na te bootsen. De app wordt uitgevoerd op de nieuwere versie, maar fungeert alsof deze wordt uitgevoerd op de oudere versie. Veel van de compatibiliteitsproblemen tussen versies van .NET Framework worden beperkt door dit vreemde model. Als een binair bestand bijvoorbeeld is gecompileerd voor .NET Framework 4.0, maar wordt uitgevoerd op een computer met .NET Framework 4.5 of hoger, wordt deze uitgevoerd in de compatibiliteitsmodus .NET Framework 4.0. Dit betekent dat veel van de wijzigingen in de latere versie geen invloed hebben op het binaire bestand.

De versie van .NET Framework waarop een toepassing is gericht, wordt bepaald door de doelversie van de invoerassembly voor het toepassingsdomein waarin de code wordt uitgevoerd. Alle extra assembly's die in dat toepassingsdomein zijn geladen, zijn gericht op die versie. In het geval van een uitvoerbaar bestand is de versie van het uitvoerbare bestand bijvoorbeeld de compatibiliteitsmodus die alle assembly's in dat toepassingsdomein worden uitgevoerd.

Wijzigingen opnieuw brengen

Retargeting wijzigingen zijn wijzigingen die zich voordoen wanneer een assembly opnieuw wordt gecompileerd om een nieuwere versie te bereiken. Als u een nieuwere versie wilt gebruiken, kiest de assembly voor de nieuwe functies en mogelijke compatibiliteitsproblemen voor oude functies.

Impactclassificatie

In de artikelen waarin runtime- en retargetingswijzigingen worden beschreven, bijvoorbeeld wijzigingen in retargeting voor migratie naar .NET Framework 4.8.x, worden afzonderlijke items als volgt geclassificeerd op basis van hun verwachte impact:

Groot
Een belangrijke wijziging die van invloed is op een groot aantal apps of waarvoor een aanzienlijke wijziging van de code is vereist.

Klein
Een wijziging die van invloed is op een klein aantal apps of waarvoor een kleine wijziging van de code is vereist.

Edge-hoofdletters
Een wijziging die van invloed is op apps onder zeer specifieke scenario's die niet gebruikelijk zijn.

Transparante
Een wijziging die geen merkbaar effect heeft op de ontwikkelaar of gebruiker van de app. Vanwege deze wijziging moet de app niet worden gewijzigd.

Zie ook