共用方式為


建立類別庫專案

如要啟用 ViewModel 和服務的單元測試,請建立個別的類別程式庫專案。 您需要此專案,因為 WinUI 單元測試專案無法直接參考 WinUI 應用程式專案。

瞭解 WinUI 類別庫範本

WinUI 類別庫專案範本會建立 .NET 受控類別庫 (DLL) ,專為搭配 WinUI 3 傳統型應用程式使用而設計。 此範本是 Windows 應用程式 SDK 的一部分,並提供標準 .NET 類別程式庫不包含的重要功能。

與 .NET 類別庫的主要差異

WinUI 類別庫範本在幾個重要的方面有別於標準 .NET 類別庫。

  • Windows 特定目標:它以 Windows 特定架構 (例如 net8.0-windows10.0.19041.0) 為目標,而不是跨平台 .NET 架構,提供對 Windows API 的存取權。
  • Windows 應用程式 SDK 整合:它包含對 Microsoft.WindowsAppSDKMicrosoft.Windows.SDK.BuildTools NuGet 套件的參考,提供對 WinUI 3 和 Windows 應用程式 SDK API 的存取。
  • 已啟用 WinUI 支援:專案在其設定中包含<UseWinUI>true</UseWinUI>,從而啟用特定於 WinUI 的建置工作和 XAML 編譯。
  • Windows 執行階段識別碼:它是針對 Windows 特定的執行階段識別碼 (win-x86、win-x64、win-arm64) 設定的。

為什麼要使用 WinUI 類別庫?

當您的程式庫需要時,請使用 WinUI 類別程式庫 範本,而不是一般 .NET 類別程式庫

  • 參考 WinUI 3 類型和控制項:WinUI 類別程式庫範本可讓您在程式庫程式碼中使用命名空間中的 Microsoft.UI.Xaml 類型和其他 Windows 應用程式 SDK API。
  • 包含 XAML 資源:如果您的程式庫包含 UserControl、自訂控制項或其他 XAML 資源,您需要 WinUI 類別程式庫範本才能正確編譯和封裝這些資源。
  • 與 WinUI 應用程式整合:範本配置為與 WinUI 3 桌面應用程式無縫協作,確保與 Windows 應用程式 SDK 運行時和部署模型相容。
  • 支援XAML標記編譯:範本包含必要的建置工作,可將XAML檔案編譯到程式庫中。

何時使用一般 .NET 類別庫

使用標準的.NET 類別庫專案當您的程式庫:

  • 僅包含純 .NET 程式碼 (ViewModels、模型、服務、公用程式)
  • 不會參考任何 WinUI 3 或 Windows 應用程式 SDK 類型
  • 不包含任何 XAML 檔案或 UI 相關程式碼
  • 需要在不同的應用程式類型之間共用 (不只是 WinUI 應用程式)
  • 以多個平臺 (例如 .NET MAUI 或 ASP.NET Core) 或作業系統 (例如 Linux 或 macOS) 為目標

如需將 .NET 類別程式庫新增至解決方案的教學課程,請參閱 在 Visual Studio 中擴充 C# 主控台應用程式和偵錯

在本教學課程中,請使用 WinUI 類別庫 範本,因為它可讓您在未來需要時參考 WinUI 類型,而且它是專門設計來與 WinUI 3 應用程式整合。 雖然我們的 ViewModel 和服務目前不需要 WinUI 類型,但使用此範本可提供彈性,並確保與 Windows 應用程式 SDK 環境正確整合。

建立 WinUINotes.Bus 專案

建立名為的新 WinUI 類別庫專案 WinUINotes.Bus ,以將 ViewModel、模型和服務保存在與 WinUI 應用程式專案相同的解決方案中。

  1. 在 Visual Studio 中,以滑鼠右鍵按一下 [方案總管] 中的解決方案。

  2. 選取 [新增>專案...]。

  3. 選擇 WinUI 類別庫 範本,然後選取 [ 下一步]。

    備註

    請確定您選取 WinUI 類別庫,而不只是 [類別庫]。 WinUI 類別程式庫範本包含 Windows 應用程式 SDK 和 WinUI 3 架構的參考。

  4. 將專案命名為 WinUINotes.Bus,然後選取 [建立]。

  5. 刪除預設 Class1.cs 檔案。

新增專案參考

專案參考可讓您的 WinUI 應用程式專案使用類別程式庫專案中定義的 ViewModel 和服務:

  1. 以滑鼠右鍵按一下 WinUINotes 專案,然後選取 [ 新增>專案參考...]。
  2. 檢查 WinUINotes.Bus 專案,然後選取 [確定]。

Bus 專案中包含您的 ViewModels、模型和服務,因此您可以獨立於使用者介面層進行測試。

備註

術語「匯流排」表示充當通訊層或中介的專案。 它包含簡報邏輯 (ViewModels)、商務邏輯 (模型) 和服務,您可以獨立於 UI 共用和測試這些邏輯。