Criar componentes do Windows Runtime com C#/WinRT

Observação

A criação de componentes do Windows Runtime com C#/WinRT tem suporte no .NET 6 e posterior.

O pacote NuGet C#/WinRT fornece suporte para a criação de seus próprios tipos e componentes do Windows Runtime em C# e para consumi-los de qualquer linguagem compatível com o Windows Runtime, como C++/WinRT ou Rust. O suporte à criação e à hospedagem em C#/WinRT exige o .NET 6 e o Visual Studio 2022, e tem como objetivo dar suporte a cenários de aplicativos da área de trabalho do Windows, incluindo um SDK do Windows e um WinUI3.

Para obter um passo a passo mostrando como criar um componente do Windows Runtime com o .NET 6 e como fazê-lo para um aplicativo de console C++/WinRT, consulte Passo a passo: criar um componente C#/WinRT e consumi-lo a partir do C++/WinRT.

Para obter mais detalhes e para pesquisar ou registrar problemas, consulte o repositório Github do C#/WinRT e Criação de Componentes C#/WinRT.

Declaração de tipos em componentes do Windows Runtime

Ao criar seu componente do Windows Runtime, siga as diretrizes e as restrições de tipo estruturadas na documentação existente da UWP sobre componentes do Windows Runtime (consulte Componentes do Windows Runtime com C# e Visual Basic). O componente pode, em sua maior parte, ser implementado como qualquer outra biblioteca do C#. No entanto, existem restrições quanto aos tipos públicos do componente que serão expostos ao Windows Runtime e declarados no .winmd gerado para serem consumidos por outras pessoas.

Externamente, você pode expor apenas os tipos do Windows Runtime para parâmetros e valores de retorno. Você pode utilizar tipos internos do C# como parte da superfície pública do componente, desde que exista um mapeamento do tipo .NET para o WinRT (consulte mapeamentos .NET de tipos WinRT em C#/WinRT), e eles aparecerão para os usuários do componente como os tipos correspondentes do Windows Runtime. Os tipos do Windows Runtime de outros componentes do Windows Runtime e do SDK do Windows também podem ser utilizados como parte da implementação pública do componente, como parâmetros in, tipos de retorno e herança de classe.

Observação

Existem alguns tipos do Windows Runtime que são mapeados para tipos .NET (consulte mapeamentos .NET de tipos WinRT em C#/WinRT). Esses tipos .NET podem ser utilizados na interface pública do seu componente Windows Runtime e aparecerão para os usuários do componente como os tipos correspondentes do Windows Runtime.