Creación de los componentes de Windows Runtime con C#/WinRT

Nota:

La creación de componentes de Windows Runtime con C#/WinRT se admite en .NET 6 y versiones posteriores.

El paquete NuGet de C#/WinRT proporciona compatibilidad para crear sus propios tipos y componentes de Windows Runtime en C#, y consumirlos desde cualquier lenguaje compatible con Windows Runtime, como C++/WinRT o Rust. La compatibilidad con la creación y el hospedaje de C#/WinRT requiere .NET 6 y Visual Studio 2022, y está pensada para admitir escenarios de aplicaciones de escritorio, como Windows App SDK y WinUI3.

Para ver un tutorial que muestra cómo crear un componente de Windows Runtime con .NET 6 y cómo consumirlo desde una aplicación de consola de C++/WinRT, consulte Tutorial: Crear un componente de C#/WinRT y consumirlo desde C++/WinRT.

Para obtener más información y buscar o archivar cualquier problema, consulte el Repositorio de C#/WinRT en GitHub y Crear componentes de C#/WinRT.

Declarar tipos en componentes de Windows en tiempo de ejecución

Al crear el componente de Windows Runtime, sigue las directrices y restricciones de tipos que se describen en la documentación de UWP existente sobre los componentes de Windows Runtime (consulta Componentes de Windows Runtime con C# y Visual Basic). El componente puede implementarse como cualquier otra biblioteca de C#. Sin embargo, hay restricciones en los tipos públicos del componente que se expondrán al Windows Runtime y se declararán en el archivo generado .winmd para que otros lo consuman.

Externamente, solo puede exponer tipos de Windows Runtime para parámetros y valores devueltos. Puede usar tipos de C# integrados como parte de la superficie pública del componente siempre que haya una asignación del tipo de .NET a WinRT (ver Asignaciones de .NET de tipo WinRT en C#/WinRT), y aparecerán a los usuarios del componente como los tipos de Windows Runtime correspondientes. Los tipos de Windows Runtime de otros componentes de Windows Runtime y Windows SDK también se pueden usar como parte de la implementación pública del componente, como parámetros in, tipos de valor devuelto y herencia de clases.

Nota:

Hay algunos tipos de Windows Runtime que se asignan a tipos de .NET (ver Asignaciones de .NET de tipo WinRT en C#/WinRT). Estos tipos de .NET pueden usarse en la interfaz pública de un componente de Windows Runtime y se mostrarán a los usuarios del componente como los tipos correspondientes de Windows Runtime.