Из .NET удалена встроенная поддержка WinRT

Из .NET удалена встроенная поддержка использования API-интерфейсов в среде выполнения Windows (WinRT).

Представленные версии

5,0

Описание изменения

Ранее CoreCLR поддерживал использование файлов метаданных Windows (WinMD) для активации и использования типов WinRT. Начиная с версии .NET 5 поддержка прямого использования файлов WinMD в CoreCLR прекращена.

При попытке добавить ссылку на неподдерживаемую сборку отображается FileNotFoundException. При активации класса WinRT отображается PlatformNotSupportedException.

Это критическое изменение добавлено по следующим причинам:

  • Таким образом, разрабатывать и совершенствовать WinRT можно отдельно от среды выполнения .NET.
  • Для симметрии с системами взаимодействия, которые предоставляются для других операционных систем, таких как iOS и Android.
  • Для использования преимуществ других функций .NET, таких как функции C#, обрезка кода промежуточного языка (IL) и компиляция перед выполнением (AOT).
  • Для упрощения базы кода в среде выполнения .NET.
  • Удалите ссылки на пакет Microsoft.Windows.SDK.Contracts. Вместо этого укажите версию API-интерфейсов Windows, доступ к которым требуется получать с помощью свойства TargetFramework проекта. Например:

    <TargetFramework>net5.0-windows10.0.19041.0</TargetFramework>
    
  • Если вы используете сторонний компонент среды выполнения, определенный в winmd-файле , добавьте ссылку на пакет NuGet Microsoft.Windows.CsWinRT. Сведения о том, как создать проекцию C#, см. в документации по C#/WinRT .

Дополнительные сведения см. в статье Вызов API среды выполнения Windows в классических приложениях.

Затронутые API