Dela via


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

Berörda API:er