Skapa Windows Runtime komponenter med C#/WinRT

Anmärkning

Redigering av Windows Runtime komponenter med C#/WinRT stöds på .NET 6 och senare.

NuGet-paketet C#/WinRT stödjer skapande av egna typer och komponenter i Windows Runtime i C#, och att använda dem från vilket Windows Runtime-kompatibelt språk som helst, såsom C++/WinRT eller Rust. C#/WinRT-redigering och värdsupport kräver .NET 6 eller senare och Visual Studio 2022 eller senare, och det är avsett att stödja scenarier för skrivbordsprogram, inklusive Windows App SDK och WinUI3.

En genomgång som visar hur du skapar en Windows Runtime komponent med .NET 6 eller senare och hur du använder den från ett C++/WinRT-konsolprogram finns i Walkthrough: Skapa en C#/WinRT-komponent och använda den från C++/WinRT.

Mer information, och för att söka efter eller rapportera problem, finns i C#/WinRT GitHub-repo och Authoring C#/WinRT-komponenter.

Deklarera typer i Windows Runtime komponenter

När du redigerar din Windows Runtime komponent följer du riktlinjerna och typbegränsningarna som beskrivs i den befintliga UWP-dokumentationen om Windows Runtime komponenter (se Windows Runtime komponenter med C# och Visual Basic). Komponenten kan för det mesta implementeras som alla andra C#-bibliotek. Det finns dock begränsningar för de offentliga typerna i komponenten som kommer att exponeras för Windows Runtime och deklareras i den genererade .winmd för andra att använda.

Externt kan du bara exponera Windows Runtime typer för parametrar och returvärden. Du kan använda inbyggda C#-typer som en del av komponentens offentliga yta så länge det finns en mappning från den .NET typen till WinRT (se .NET mappningar av WinRT-typer i C#/WinRT), och de visas för användare av komponenten som motsvarande Windows Runtime typer. Windows Runtime-typerna från andra Windows Runtime-komponenter och Windows SDK kan också användas som en del av den offentliga implementeringen av komponenten, till exempel in parametrar, returtyper och klassarvning.

Anmärkning

Det finns några Windows Runtime typer som mappas till .NET typer (se .NET mappningar av WinRT-typer i C#/WinRT). Dessa .NET typer kan användas i det offentliga gränssnittet för din Windows Runtime komponent, och de visas för användare av komponenten som motsvarande Windows Runtime typer.