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 つの名前空間を混在しないでください。
次のステップ
学習したい内容に一致する領域を選択します。
Windows developer