Ingebouwde ondersteuning voor WinRT wordt verwijderd uit .NET
Ingebouwde ondersteuning voor het verbruik van WinRT-API's (Windows Runtime) in .NET wordt verwijderd.
Versie geïntroduceerd
5,0
Wijzigingsbeschrijving
Voorheen kon CoreCLR Windows-metagegevensbestanden (WinMD) gebruiken om WinRT-typen te activeren en te gebruiken. Vanaf .NET 5 kan CoreCLR WinMD-bestanden niet meer rechtstreeks verbruiken.
Als u probeert te verwijzen naar een niet-ondersteunde assembly, krijgt u een FileNotFoundException. Als u een WinRT-klasse activeert, krijgt u een PlatformNotSupportedException.
Deze belangrijke wijziging is om de volgende redenen aangebracht:
- WinRT kan dus afzonderlijk van de .NET-runtime worden ontwikkeld en verbeterd.
- Voor symmetrie met interoperabiliteitssystemen die zijn opgegeven voor andere besturingssystemen, zoals iOS en Android.
- Als u wilt profiteren van andere .NET-functies, zoals C#-functies, tussenliggende taal (IL) bijsnijden en vooraf (AOT) compilatie.
- Ter vereenvoudiging van de .NET-runtimecodebase.
Aanbevolen actie
Verwijder verwijzingen naar het pakket Microsoft.Windows.SDK.Contracts. Geef in plaats daarvan de versie op van de Windows-API's die u wilt openen via de
TargetFramework
eigenschap van het project. Voorbeeld:<TargetFramework>net5.0-windows10.0.19041.0</TargetFramework>
Als u een runtimeonderdeel van derden gebruikt dat is gedefinieerd in een WINMD-bestand , voegt u een verwijzing toe naar het Microsoft.Windows.CsWinRT NuGet-pakket. Zie de C#/WinRT-documentatie voor informatie over het genereren van de C#-projectie.
Zie Windows Runtime-API's aanroepen in desktop-apps voor meer informatie.