Inbyggt stöd för WinRT tas bort från .NET
Inbyggt stöd för användning av WinRT-API:er (Windows Runtime) i .NET tas bort.
Version introducerad
5,0
Ändra beskrivning
Tidigare kunde CoreCLR använda WinMD-filer (Windows Metadata) för att aktivera och använda WinRT-typer. Från och med .NET 5 kan CoreCLR inte längre använda WinMD-filer direkt.
Om du försöker referera till en sammansättning som inte stöds får du en FileNotFoundException. Om du aktiverar en WinRT-klass får du en PlatformNotSupportedException.
Den här icke-bakåtkompatibla ändringen gjordes av följande skäl:
- WinRT kan därför utvecklas och förbättras separat från .NET-körningen.
- För symmetri med interop-system som tillhandahålls för andra operativsystem, till exempel iOS och Android.
- För att dra nytta av andra .NET-funktioner, till exempel C#-funktioner, trimning av mellanliggande språk (IL) och AOT-kompilering (i förväg).
- För att förenkla .NET-runtime-kodbasen.
Rekommenderad åtgärd
Ta bort referenser till paketet Microsoft.Windows.SDK.Contracts. Ange i stället den version av Windows-API:erna som du vill komma åt via
TargetFramework
projektets egenskap. Till exempel:<TargetFramework>net5.0-windows10.0.19041.0</TargetFramework>
Om du använder en körningskomponent från tredje part som definieras i en .winmd-fil lägger du till en referens till NuGet-paketet Microsoft.Windows.CsWinRT. Information om hur du genererar C#-projektionen finns i C#/WinRT-dokumentationen.
Mer information finns i Anropa Windows Runtime-API:er i skrivbordsappar.