C#/WinRT を使用してWindows ランタイム コンポーネントを作成する

C#/WinRT を使用したWindows ランタイム コンポーネントの作成は、.NET 6 以降でサポートされています。

C#/WinRT NuGet パッケージは、独自の Windows ランタイム 型とコンポーネントを C# で作成し、C++/WinRTRust などの Windows ランタイム 互換言語からそれらを利用するためのサポートを提供します。 C#/WinRT の作成とホスティングのサポートには、.NET 6 以降と Visual Studio 2022 以降が必要であり、Windows アプリ SDKWinUI3 などのデスクトップ アプリケーション シナリオをサポートすることを目的としています。

.NET 6 以降でWindows ランタイム コンポーネントを作成する方法と、C++/WinRT コンソール アプリケーションからコンポーネントを使用する方法を示すチュートリアルについては、「Walkthrough: C#/WinRT コンポーネントを作成し、C++/WinRT

詳細についておよび問題の検索または提出については、C#/WinRT GitHub リポジトリおよび C#/WinRT コンポーネントのオーサリング を参照してください。

Windows ランタイム コンポーネントでの型の宣言

Windows ランタイム コンポーネントを作成する際は、Windows ランタイム コンポーネントに関する既存の UWP ドキュメントに記載されているガイドラインおよび型制限に従ってください(C# および Visual Basic による Windows ランタイム コンポーネント を参照してください)。 コンポーネントは、ほとんどの場合、他の C# ライブラリと同様に実装できます。 ただし、コンポーネント内のパブリック型には、Windows ランタイムに公開され、生成された .winmd で他のユーザーが使用できるように宣言される制限があります。

外部では、パラメーターと戻り値のWindows ランタイム型のみを公開できます。 組み込みの C# 型 (types) は、.NET 型から WinRT へのマッピングが存在する限り(「C#/WinRT における WinRT 型の .NET マッピング」を参照)、コンポーネントのパブリック インターフェースの一部として使用でき、コンポーネントのユーザーには対応する Windows ランタイム型として表示されます。 他のWindows ランタイム コンポーネントのWindows ランタイム型と Windows SDK は、in パラメーター、戻り値の型、クラスの継承など、コンポーネントのパブリック実装の一部としても使用できます。

.NET にマッピングされる Windows ランタイム型がいくつかあります(C#/WinRT の WinRT 型の .NET へのマッピングを参照してください)。 これらの.NET型は、Windows ランタイム コンポーネントのパブリック インターフェイスで使用でき、対応するWindows ランタイム型としてコンポーネントのユーザーに表示されます。