Il supporto predefinito per WinRT viene rimosso da .NET

Il supporto predefinito per l'utilizzo delle API Windows Runtime (WinRT) in .NET viene rimosso.

Versione introdotta

5.0

Descrizione delle modifiche

In precedenza CoreCLR poteva utilizzare i file di metadati Windows (WinMD) per attivare e utilizzare tipi WinRT. A partire da .NET 5, CoreCLR non può più utilizzare direttamente i file WinMD.

Se si tenta di fare riferimento a un assembly non supportato, si otterrà un oggetto FileNotFoundException. Se si attiva una classe WinRT, si otterrà un oggetto PlatformNotSupportedException.

Questa modifica che causa un’interruzione è stata apportata per i motivi seguenti:

  • È quindi possibile sviluppare e migliorare WinRT separatamente dal runtime .NET.
  • Per la simmetria con sistemi di interoperabilità forniti per altri sistemi operativi, ad esempio iOS e Android.
  • Per sfruttare i vantaggi di altre funzionalità .NET, ad esempio funzionalità C#, taglio del linguaggio intermedio (IL) e compilazione anticipata (AOT).
  • Per semplificare la codebase di runtime .NET.
  • Rimuovere i riferimenti al pacchetto Microsoft.Windows.SDK.Contracts. Specificare invece la versione delle API di Windows a cui si vuole accedere tramite la proprietà TargetFramework del progetto. Ad esempio:

    <TargetFramework>net5.0-windows10.0.19041.0</TargetFramework>
    
  • Se si utilizza un componente di runtime di terze parti definito in un file con estensione winmd, aggiungere un riferimento al pacchetto NuGet Microsoft.Windows.CsWinRT. Per informazioni su come generare la proiezione C#, vedere la documentazione di C#/WinRT.

Per altre informazioni, vedere Chiamare le API di Windows Runtime nelle app desktop.

API interessate