Partager via


La prise en charge intégrée de WinRT est supprimée de .NET

La prise en charge intégrée de la consommation des API Windows Runtime (WinRT) dans .NET est supprimée.

Version introduite

5,0

Description de la modification

Auparavant, CoreCLR pouvait consommer des fichiers de métadonnées Windows (WinMD) pour activer et consommer des types WinRT. À compter de .NET 5, CoreCLR ne peut plus consommer directement les fichiers WinMD.

Si vous tentez de référencer un assembly non pris en charge, vous obtenez un FileNotFoundException. Si vous activez une classe WinRT, vous obtenez un PlatformNotSupportedException.

Ce changement cassant a été effectué pour les raisons suivantes :

  • WinRT peut donc être développé et amélioré séparément du runtime .NET.
  • Pour la symétrie avec les systèmes d’interopérabilité fournis pour d’autres systèmes d’exploitation, comme iOS et Android.
  • Pour tirer parti d’autres fonctionnalités .NET, comme les fonctionnalités C#, la suppression du langage intermédiaire (IL) et la compilation à l’avance (AOT).
  • Pour simplifier le codebase du runtime .NET.
  • Supprimez les références au package Microsoft.Windows.SDK.Contracts. Au lieu de cela, spécifiez la version des API Windows auxquelles vous souhaitez accéder via la propriété TargetFramework du projet. Par exemple :

    <TargetFramework>net5.0-windows10.0.19041.0</TargetFramework>
    
  • Si vous consommez un composant d’exécution tiers défini dans un fichier .winmd, ajoutez une référence au package NuGet Microsoft.Windows.CsWinRT. Pour plus d’informations sur la façon de générer la projection C#, consultez la documentation C#/WinRT.

Pour plus d’informations, consultez Appeler des API Windows Runtime dans les applications de bureau.

API affectées