Projeções da linguagem Windows Runtime (WinRT)

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

Compreender como funcionam as projeções ajuda-o a decidir se deve consumir APIs WinRT na sua aplicação ou criar os 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 a Microsoft suporta e quando precisa da documentação da projeção.

Como funcionam as projeções linguísticas

Os ficheiros 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 cria um projeto a partir de um modelo padrão do SDK de Aplicações Windows ou WinUI, o modelo já configura a projeção da linguagem, e o seu código em C# ou C++ pode chamar diretamente APIs do WinRT sem trabalhar com os metadados subjacentes ou a interface binária da aplicação (ABI).

Projeções de linguagem suportadas

A Microsoft suporta projeções em linguagens C# e C++ para aplicações do SDK de Aplicações Windows e WinUI. Os projetos comunitários fornecem projeções para outras linguagens, como o Rust, mas a Microsoft não as suporta oficialmente.

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

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

Para a maioria dos desenvolvimentos de aplicações, pode usar APIs WinRT projetadas como outras APIs na sua linguagem escolhida. Utilize a documentação sobre projeção quando:

  • Crie um componente Windows Runtime que outras aplicações ou linguagens consomem.
  • Distribuir uma biblioteca como um pacote NuGet que envolva APIs do WinRT.
  • Trabalhe com interfaces COM ou ABI de baixo nível a partir de código C++.
  • Resolver erros de compilação relacionados com o código de interoperabilidade gerado ou com ficheiros .winmd.