Delen via


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 toepassen op de broncode.

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

Runtime-wijzigingen

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. Bijvoorbeeld, in het geval van een uitvoerbaar bestand, is de doelversie van het uitvoerbare bestand de compatibiliteitsmodus waaronder alle assembly's in dat toepassingsdomein draaien.

Wijzigingen in retargeting

Retargeting wijzigingen zijn wijzigingen die zich voordoen wanneer een assembly opnieuw wordt gecompileerd om op een nieuwere versie gericht te zijn. 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:

Belangrijk
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.

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

Doorzichtig
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