Criar componentes do Windows Runtime com C#/WinRT

Observação

A autoria de componentes Windows Runtime com C#/WinRT é suportada em .NET 6 e versões posteriores.

O pacote NuGet C#/WinRT oferece suporte para criar os seus próprios tipos e componentes de Windows Runtime em C#, e para os consumir de qualquer linguagem compatível com Windows Runtime, como C++/WinRT ou Rust. O suporte à autoria e alojamento em C#/WinRT requer .NET 6 ou posteriores e Visual Studio 2022 ou posteriores, e visa suportar cenários de aplicações desktop, incluindo o SDK de Aplicações Windows e WinUI3.

Para um guia que mostra como criar um componente Windows Runtime com .NET 6 ou posterior, e como consumi-lo a partir de uma aplicação de consola C++/WinRT, veja Walkthrough: Crie um componente C#/WinRT e consome-o a partir de C++/WinRT.

Para mais detalhes, e para procurar ou registar quaisquer problemas, consulte o repositório GitHub C#/WinRT e Authoring C#/WinRT Components.

Declaração de tipos em componentes do Windows Runtime

Ao criar o seu componente Windows Runtime, siga as diretrizes e restrições de tipo descritas na documentação existente do UWP sobre componentes Windows Runtime (veja Windows Runtime componentes com C# e Visual Basic). O componente pode, na maioria das vezes, ser implementado como qualquer outra biblioteca C#. No entanto, existem restrições aos tipos públicos no componente que serão expostos ao Windows Runtime e que são declarados no .winmd gerado para outros utilizarem.

Externamente, só podes expor os tipos de Windows Runtime para parâmetros e valores de retorno. Pode usar tipos C# incorporados como parte da interface pública do componente, desde que haja um mapeamento dos tipos de .NET para WinRT (ver .NET mapeamentos dos tipos WinRT em C#/WinRT), e eles aparecerão aos utilizadores do componente como os tipos de Windows Runtime correspondentes. tipos de Windows Runtime de outros componentes de Windows Runtime e do Windows SDK também podem ser usados como parte da implementação pública do componente, como parâmetros de in, tipos de retorno e herança de classes.

Observação

Existem alguns tipos de Windows Runtime que são mapeados para tipos .NET (ver mapeamentos de tipos WinRT para .NET em C#/WinRT). Estes tipos .NET podem ser usados na interface pública do seu componente Windows Runtime, e aparecerão aos utilizadores do componente como os tipos correspondentes do Windows Runtime.