Windows アプリ SDK プラットフォームの概要

Windows アプリ SDKでは、アプリ開発用に C#C++ の 2 つの言語がサポートされています。 各言語では、言語プロジェクションを使用して Windows ランタイム (WinRT) API を呼び出し、どちらも XAML (具体的には、Microsoft.UI.Xaml名前空間の WinUI 3 XAML) を使用してユーザー インターフェイスを定義します。 これらのプロジェクションと UI フレームワークが一緒にプラットフォーム レイヤーを形成します。

Windows アプリ SDKおよび WinUI 3 でサポートされているプロジェクションを使用する言語は、C# と C++ のみです。 コミュニティ プロジェクトは他の言語 (Rust など) 用に存在しますが、公式にはサポートされていません。

これについて知る必要がありますか?

Windows アプリ SDKまたは WinUI 3 の標準Visual Studio テンプレートからプロジェクトを作成する場合、言語プロジェクションは既に構成されています。 C# または C++ コードでは、WinRT API を直接呼び出すことができます。プロジェクションのしくみについて考える必要はありません。

通常、プロジェクション レイヤーをさらに詳しく確認する必要があるのは、次の場合です。

  • 他のアプリや言語が使用するWindows ランタイム コンポーネントを作成します。
  • ライブラリを 、WinRT API をラップする NuGet パッケージとして配布します。
  • C++ コードからの低レベルの COM または ABI インターフェイスとの相互運用
  • 生成された相互運用コードまたは WinMD ファイルに関連するビルド エラーのトラブルシューティングを行います。

日常的なアプリ開発の場合、以下の詳細は背景知識です。興味があるが、開始する必要がない場合に役立ちます。

言語プロジェクション

Windows ランタイム API は、Windows メタデータ (.winmd) ファイルを使用して言語に依存しない方法で定義されます。 言語プロジェクションは、そのメタデータを読み取り、C++ または C# から自然に API を呼び出すことができるように、慣用的なバインディングを生成します。

Projection Language それは何か 名前空間パターン
C++/WinRT C++17 WinRT API へのファースト クラス アクセスを提供するヘッダー専用ライブラリ。 C++/CX と Windows ランタイム C++ テンプレート ライブラリ (WRL) が置き換えられます。 winrt::Microsoft::UI::Xaml
C#/WinRT C# (.NET) .winmd ファイルから.NET相互運用機能アセンブリを生成する NuGet パッケージ ツールキット。 これにより、C# で WinRT コンポーネントを利用したり作成したりできます。 Microsoft.UI.Xaml

UI フレームワーク

フレームワーク それは何か 名前空間
XAML (WinUI 3) WinUI 3 ユーザー インターフェイスの宣言型 XML ベースのマークアップ言語。 レイアウト、スタイル、データ バインディング、アニメーションを処理します。 コードビハインドは C# または C++ で記述されます。 Microsoft.UI.Xaml ( Windows.UI.Xamlではなく、UWP)

Important

WinUI 3 XAML では、 Microsoft.UI.Xaml 名前空間が使用されます。 Windows.UI.Xamlを参照しているコードまたはドキュメントが表示される場合、これは別のフレームワークである UWP XAML です。 WinUI 3 プロジェクトで 2 つの名前空間を混在しないでください。

次のステップ

学習したい内容に一致する領域を選択します。