.NET 多平台應用程式 UI (.NET MAUI) 是一種跨平台架構,可使用 C# 和 XAML 建立原生行動和傳統型應用程式。
.NET MAUI 可讓您從單一共用程式碼基底,開發可在 Android、iOS、macOS 和 Windows 上執行的應用程式。
.NET MAUI 是開放原始碼,而且是 Xamarin.Forms 的演進,從行動裝置延伸至桌面案例,從頭開始重建 UI 控制項以獲得效能和擴充性。 如果您先前已使用 Xamarin.Forms 來建置跨平臺使用者介面,您會發現 .NET MAUI 有許多相似之處。 不過,也有一些差異。 使用 .NET MAUI,您可以使用單一專案建立多平臺應用程式,但您可以視需要新增平臺特定的原始程式碼和資源。 .NET MAUI 的主要目的之一是讓您在單一程式碼基底中,盡可能實作最多的應用程式邏輯和 UI 版面配置。
.NET MAUI 的身分
.NET MAUI 適用于想要:
在 XAML 和 C# 中,從 Visual Studio 中的單一共用程式碼基底撰寫跨平臺應用程式。
跨平台共用 UI 版面配置和設計。
跨平臺共用程式碼、測試和商務邏輯。
.NET MAUI 的運作方式
.NET MAUI 將 Android、iOS、macOS 和 Windows API 整合成單一 API,以提供「撰寫一次,到處執行」的開發人員體驗,還支援深入存取每個原生平台的所有層面。
.NET 6 或更新版本提供一系列的平臺特定架構來建立應用程式:.NET for Android、適用于 iOS 的 .NET、適用于 macOS 的 .NET 和 Windows UI 3 (WinUI 3) 程式庫。 這些架構全都可以存取相同的 .NET 基類庫 (BCL) 。 此程式庫會從程式碼中抽象化基礎平臺的詳細資料。 BCL 取決於 .NET 執行時間,以提供程式碼的執行環境。 針對 Android、iOS 和 macOS,環境是由 Mono 實作,這是 .NET 執行時間的實作。 在 Windows 上,.NET CoreCLR 會提供執行環境。
雖然 BCL 可讓在不同平臺上執行的應用程式共用常見的商務邏輯,但各種平臺有不同的方式可定義應用程式的使用者介面,並提供不同的模型來指定使用者介面元素的通訊和交互操作方式。 您可以使用適用于 Android 的適當平臺特定架構 (.NET、適用于 iOS 的 .NET、適用于 macOS 的 .NET 或 WinUI 3) 個別製作每個平臺的 UI,但此方法接著會要求您為每個個別的裝置系列維護程式碼基底。
.NET MAUI 提供單一架構來建置行動和傳統型應用程式的 UI。 下圖顯示 .NET MAUI 應用程式架構的高階檢視:
在 .NET MAUI 應用程式中,您撰寫的程式碼主要與 .NET MAUI API (1) 互動。 然後.NET MAUI 會直接取用原生平臺 API (3) 。 此外,如有需要,應用程式程式碼可能會直接練習平臺 API (2) 。
.NET MAUI 應用程式可以在 PC 或 Mac 上撰寫,並編譯成原生應用程式套件:
使用 .NET MAUI 編譯的 Android 應用程式會從 C# 編譯成中繼語言, (IL) ,然後會在應用程式啟動時編譯為原生元件 (JIT) 編譯成原生元件。
使用 .NET MAUI 建置的 iOS 應用程式完全預先 (AOT) 從 C# 編譯成原生 ARM 元件程式碼。
使用 .NET MAUI 建置的 macOS 應用程式會使用 Mac Catalyst,這是 Apple 提供的解決方案,可將以 UIKit 建置的 iOS 應用程式帶入桌面,並視需要使用額外的 AppKit 和平臺 API 來增強它。
使用 .NET MAUI 建置的 Windows 應用程式會使用 Windows UI 3 (WinUI 3) 程式庫來建立以 Windows 桌面為目標的原生應用程式。 如需 WinUI 3 的詳細資訊,請參閱
Windows UI 程式庫
。
建置 iOS 和 macOS 的應用程式需要 Mac。
.NET MAUI 提供的內容
.NET MAUI 提供控制項集合,可用來顯示資料、起始動作、指出活動、顯示集合、挑選資料等等。 除了控制項集合之外,.NET MAUI 也提供:
設計頁面的詳盡版面配置引擎。
多個用於建立豐富瀏覽類型 (例如選單) 的頁面類型。
支援資料系結,以取得更簡潔且可維護的開發模式。
自訂處理常式以增強 UI 元素呈現方式的能力。
用於存取原生裝置功能的跨平臺 API。 這些 API 可讓應用程式存取裝置功能,例如 GPS、加速計,以及電池和網路狀態。 如需詳細資訊,請參閱
裝置功能的跨平臺 API
。
跨平臺圖形功能,提供繪圖畫布,可支援繪製和繪製圖形和影像、撰寫作業,以及繪圖物件轉換。
單一專案系統,使用多重目標來以 Android、iOS、macOS 和 Windows 為目標。 如需詳細資訊,請參閱
.NET MAUI Single 專案
。
.NET 熱重載,讓您可以在應用程式執行時同時修改 XAML 和受控原始程式碼,然後觀察修改的結果,而不需重建應用程式。 如需詳細資訊,請參閱
.NET 熱重載
。
.NET MAUI 提供原生裝置功能的跨平臺 API。 .NET MAUI 用來存取裝置功能的功能範例包括:
存取感應器,例如裝置上的加速計、指南針和陀螺儀。
能夠檢查裝置的網路線上狀態,並偵測變更。
提供應用程式執行所在的裝置相關資訊。
在應用程式之間,將文字複製並貼到系統剪貼簿。
從裝置挑選單一或多個檔案。
將資料安全地儲存為索引鍵/值組。
利用內建的文字轉換語音引擎,從裝置讀取文字。
起始瀏覽器型驗證流程,以接聽特定應用程式已註冊 URL 的回呼。
.NET MAUI 單一專案會採用您在開發應用程式時通常會遇到的平臺特定開發體驗,並將其抽象化成以 Android、iOS、macOS 和 Windows 為目標的單一共用專案。
不論目標平臺為何,.NET MAUI 單一專案都提供簡化且一致的跨平臺開發體驗。 .NET MAUI 單一專案提供下列功能:
以 Android、iOS、macOS 和 Windows 為目標的單一共用專案。
執行 .NET MAUI 應用程式的簡化偵錯目標選取專案。
單一專案內的共用資源檔。
單一應用程式資訊清單,指定應用程式標題、識別碼和版本。
視需要存取平臺特定的 API 和工具。
單一跨平臺應用程式進入點。
.NET MAUI 單一專案是使用多重目標啟用,並使用 SDK 樣式專案。 如需 .NET MAUI 單一專案的詳細資訊,請參閱
.NET MAUI 單一專案
。
熱重新載入
.NET MAUI 包含 .NET 熱重載的支援,可讓您在應用程式執行時修改受控原始程式碼,而不需要手動暫停或叫用中斷點。 然後,您的程式碼編輯可以套用至執行中的應用程式,而不需重新編譯。
.NET MAUI 也包含 XAML 熱重載的支援,可讓您儲存 XAML 檔案,並查看在執行中的應用程式中反映的變更,而不需重新編譯。 此外,您的流覽狀態和資料將會維護,讓您快速逐一查看 UI,而不會遺失應用程式中的位置。