projeções de linguagem Windows Runtime (WinRT)

Windows Runtime (WinRT) é uma arquitetura de aplicativo neutra em linguagem para criar APIs e componentes Windows. Uma projeção de linguagem expõe AS APIs do WinRT de acordo com as convenções de uma linguagem de programação específica, para que seu código C# ou C++ possa chamá-las como outras APIs em seu idioma.

Entender como as projeções funcionam ajuda você a decidir se deve consumir APIs do WinRT em seu aplicativo ou criar seus próprios componentes WinRT reutilizáveis. Este artigo explica como uma projeção de linguagem mapeia metadados do WinRT para C# e C++, quais projeções Microsoft dá suporte e quando você precisa da documentação de projeção.

Como as projeções de linguagem funcionam

Os arquivos de metadados do Windows (.winmd) definem as APIs do WinRT. Uma projeção de linguagem lê esses metadados e expõe as APIs de acordo com as convenções de uma linguagem de programação específica. Quando você cria um projeto com base em um modelo de SDK do Aplicativo Windows ou WinUI padrão, o modelo já configura a projeção de linguagem e seu código C# ou C++ pode chamar APIs WinRT diretamente sem trabalhar com os metadados subjacentes ou a ABI (interface binária do aplicativo).

Projeções de linguagem com suporte

Microsoft dá suporte a projeções de linguagem C# e C++ para aplicativos SDK do Aplicativo Windows e WinUI. Projetos de comunidade fornecem projeções para outros idiomas, como Rust, mas Microsoft não dá suporte oficialmente a eles.

Projection Linguagem O que ele fornece
C++/WinRT C++17 ou posterior Uma projeção de linguagem C++ padrão para consumir e criar APIs e componentes do WinRT.
C#/WinRT C# (.NET) Uma projeção de linguagem .NET para consumir APIs do WinRT e criar componentes do WinRT.

Quando usar a documentação de projeção de idioma

Para a maioria do desenvolvimento de aplicativos, você pode usar APIs do WinRT projetadas como outras APIs no idioma escolhido. Use a documentação sobre projeções quando:

  • Crie um componente Windows Runtime que outros aplicativos ou idiomas consomem.
  • Distribua uma biblioteca como um pacote NuGet que encapsula as APIs do WinRT.
  • Trabalhe com interfaces COM ou ABI de baixo nível do código C++.
  • Solucione erros de compilação relacionados ao código de interoperabilidade gerado ou a arquivos .winmd.