языковые проекции среда выполнения Windows (WinRT)

среда выполнения Windows (WinRT) — это нейтральная на языке архитектура приложений для создания WINDOWS API и компонентов. Проекция языка предоставляет API WinRT в соответствии с соглашениями определенного языка программирования, поэтому код C# или C++ может вызывать их, как и другие API на вашем языке.

Понимание работы проекций помогает решить, следует ли использовать API WinRT в приложении или создавать собственные повторно используемые компоненты WinRT. В этой статье объясняется, как проекция языка сопоставляет метаданные WinRT с C# и C++, которые проекции Microsoft поддерживаются и когда вам нужна документация по проекции.

Как работают проекции языка

Windows файлы метаданных (.winmd) определяют API WinRT. Проекция языка считывает метаданные и предоставляет API в соответствии с соглашениями определенного языка программирования. При создании проекта из стандартного шаблона Windows App SDK или WinUI шаблон уже настраивает проекцию языка, а код C# или C++ может вызывать API WinRT напрямую без работы с базовыми метаданными или двоичным интерфейсом приложения (ABI).

Поддерживаемые языковые проекции

Microsoft поддерживает проекции языка C# и C++ для приложений Windows App SDK и WinUI. Проекты сообщества предоставляют проекции для других языков, таких как Rust, но Microsoft официально не поддерживает их.

Projection Language Что он предоставляет
C++ (WinRT) C++17 или более поздней версии Стандартная проекция языка C++ для использования и разработки API и компонентов WinRT.
C#/WinRT C# (.NET) Проекция .NET языка для использования API WinRT и разработки компонентов WinRT.

Когда использовать документацию по языковым проекциям

Для большинства разработки приложений можно использовать проецируемые API WinRT, такие как другие API на выбранном языке. Используйте документацию по проекции, если:

  • Создайте компонент среда выполнения Windows, который используют другие приложения или языки.
  • Распространение библиотеки в виде пакета NuGet, который упаковывает API WinRT.
  • Работа с низкоуровневыми интерфейсами COM или ABI из кода C++.
  • Устраните ошибки сборки, связанные со сгенерированным кодом взаимодействия или файлами .winmd.