ViewModel とサービスの単体テストを有効にするには、別のクラス ライブラリ プロジェクトを作成します。 WinUI 単体テスト プロジェクトでは WinUI アプリ プロジェクトを直接参照できないため、このプロジェクトが必要です。
WinUI クラス ライブラリ テンプレートについて
WinUI クラス ライブラリ プロジェクト テンプレートは、WinUI デスクトップ アプリケーションで使用するために特別に設計された .NET マネージド クラス ライブラリ (DLL) を作成します。 このテンプレートは Windows App SDK の一部であり、標準の .NET クラス ライブラリに含まれていない重要な機能を提供します。
.NET クラス ライブラリとの主な違い
WinUI クラス ライブラリ テンプレートは、いくつかの重要な点で標準の .NET クラス ライブラリとは異なります。
-
Windows 固有のターゲット設定: クロスプラットフォームの .NET フレームワークではなく、Windows 固有のフレームワーク (
net8.0-windows10.0.19041.0など) を対象とし、Windows API にアクセスできるようにします。 -
Windows App SDK の統合:
Microsoft.WindowsAppSDKとMicrosoft.Windows.SDK.BuildToolsNuGet パッケージへの参照が含まれており、WinUI API と Windows App SDK API にアクセスできます。 -
WinUI のサポートが有効: プロジェクトの構成に
<UseWinUI>true</UseWinUI>が含まれており、WinUI 固有のビルド タスクと XAML コンパイルが有効になります。 - Windows ランタイム識別子: Windows 固有のランタイム識別子 (win-x86、win-x64、win-arm64) 用に構成されています。
WinUI クラス ライブラリを使用する理由
ライブラリで次の必要がある場合は、通常の .NET クラス ライブラリの代わりに WinUI クラス ライブラリ テンプレートを使用します。
-
WinUI の型とコントロールの参照: WinUI クラス ライブラリ テンプレートを使用すると、
Microsoft.UI.Xaml名前空間の型と、ライブラリ コード内の他の Windows App SDK API を使用できます。 - XAML リソースを含める: ライブラリに UserControls、カスタム コントロール、またはその他の XAML リソースが含まれている場合、これらのリソースを適切にコンパイルしてパッケージ化するには、WinUI クラス ライブラリ テンプレートが必要です。
- WinUI アプリとの統合: テンプレートは WinUI デスクトップ アプリとシームレスに連携するように構成され、Windows App SDK ランタイムおよびデプロイ モデルとの互換性が確保されます。
- XAML マークアップコンパイルのサポート: テンプレートには、XAML ファイルをライブラリにコンパイルするために必要なビルド タスクが含まれています。
通常の .NET クラス ライブラリを使用する場合
ライブラリの場合は、標準 の .NET クラス ライブラリ プロジェクトを使用します。
- 純粋な .NET コード (ViewModel、モデル、サービス、ユーティリティ) のみを含む
- WinUI または Windows App SDK の種類を参照しません
- XAML ファイルや UI 関連のコードは含まれません
- (WinUI アプリだけでなく) 異なる種類のアプリケーション間で共有する必要がある
- 複数のプラットフォーム (.NET MAUI や ASP.NET Core など) またはオペレーティング システム (Linux や macOS など) を対象としています。
ソリューションへの .NET クラス ライブラリの追加に関するチュートリアルについては、 Visual Studio での C# コンソール アプリの拡張とデバッグに関するページを参照してください。
このチュートリアルでは、 WinUI クラス ライブラリ テンプレートを使用します。これは、今後必要に応じて WinUI 型を参照でき、特に WinUI アプリケーションと統合するように設計されているためです。 現在、ViewModel とサービスには WinUI の種類は必要ありませんが、このテンプレートを使用すると柔軟性が得られ、Windows App SDK 環境との適切な統合が保証されます。
WinUINotes.Bus プロジェクトを作成する
WinUINotes.Busという名前の新しい WinUI クラス ライブラリ プロジェクトを作成して、WinUI アプリ プロジェクトと同じソリューションに ViewModel、モデル、サービスを保持します。
Visual Studio で、 ソリューション エクスプローラーでソリューションを右クリックします。
[ 追加>新しいプロジェクト...] を選択します。
WinUI クラス ライブラリ テンプレートを選択し、[次へ] を選択します。
注
WinUI クラス ライブラリを選択し、クラス ライブラリだけを選択しないようにしてください。 WinUI クラス ライブラリ テンプレートには、Windows App SDK と WinUI フレームワークへの参照が含まれています。
プロジェクトに
WinUINotes.Bus名前を付け、[ 作成] を選択します。既定の
Class1.csファイルを削除します。
プロジェクト参照を追加する
プロジェクト参照を使用すると、WinUI アプリ プロジェクトでクラス ライブラリ プロジェクトで定義されている ViewModel とサービスを使用できます。
- WinUINotes プロジェクトを右クリックし、[追加>Project Reference...] を選択します。
- WinUINotes.Bus プロジェクトを確認し、[OK] を選択します。
Bus プロジェクトには ViewModel、モデル、サービスが含まれているため、UI レイヤーとは別にテストできます。
注
"Bus" という用語は、通信層または中継局として機能するプロジェクトを示します。 これには、UI とは別に共有およびテストできるプレゼンテーション ロジック (ViewModels)、ビジネス ロジック (モデル)、およびサービスが含まれています。
Windows developer