第 3 部分 - 設定 Xamarin 跨平台解決方案
無論使用何種平臺,Xamarin 項目都會使用相同的解決方案檔格式(Visual Studio .sln 檔格式)。 即使無法載入個別專案,也可以跨開發環境共用解決方案(例如 Visual Studio for Mac 中的 Windows 專案)。
建立新的跨平臺應用程式時,第一個步驟是建立空白解決方案。 本節說明接下來會發生什麼事:設定專案來建置跨平臺行動應用程式。
共用程式碼
如需如何跨平台實作程式代碼共用的詳細描述,請參閱程式 代碼共用選項 檔。
.NET Standard
.NET Standard 專案可讓您輕鬆地跨平臺共用程式碼,產生可在 Windows、Xamarin 平臺 (iOS、Android、Mac) 和 Linux 中使用的元件。 這是共用 Xamarin 解決方案程式碼的建議方式。
其他選項
從歷史上看,Xamarin 使用 可攜式類別庫 (PCLs)和 共用專案。 這兩項都不建議用於新專案;您應該考慮將現有的應用程式移轉至使用 .NET Standard。
填入解決方案
無論使用哪一種方法來共用程式碼,整體解決方案結構都應該實作鼓勵程式代碼共用的分層架構。 Xamarin 方法是將程式代碼分組為兩個項目類型:
- 核心(或「共用」) 專案 – 在一個位置撰寫可重複使用的程式代碼,以跨不同平台共用。 盡可能使用封裝原則來隱藏實作詳細數據。
- 平臺特定應用程式專案 – 盡可能少結合取用可重複使用的程序代碼。 平臺特定功能會在此層級新增,建置在Core專案中公開的元件上。
核心專案
共用程式代碼的核心項目應該是 .NET Standard,而且只參考所有平臺可用的元件, 即。常見的架構命名空間,例如 System
、 System.Core
與 System.Xml
。
核心項目應該盡可能實作非UI功能,這可能包括下列層級:
- 數據層 – 負責實體數據儲存的程序代碼,例如 SQLite-NET 或甚至 XML 檔案。 數據層類別通常只供數據存取層使用。
- 數據存取層 – 定義 API,可支援應用程式功能所需的數據作業,例如存取資料清單的方法、個別數據項,以及建立、編輯和刪除它們。
- 服務存取層 – 提供雲端服務的選擇性層給應用程式。 包含程式代碼,可存取遠端網路資源(Web 服務、影像下載等),以及可能快取結果。
- 商務層 – 模型類別的定義,以及向平臺特定應用程式公開功能的外觀或管理員類別。
平臺特定應用程式專案
平臺特定項目必須參考系結至每個平臺 SDK 所需的元件(Xamarin.iOS、Xamarin.Android、Xamarin.Mac 或 Windows),以及 .NET Standard 專案。
平臺特定項目應該實作:
- 應用層 – 商務層 對象與使用者介面之間的平臺特定功能和系結/轉換。
- 使用者介面層 – 螢幕、自定義使用者介面控件、驗證邏輯的呈現。
專案參考
項目參考會反映專案的相依性。 核心專案會限制它們對通用元件的參考,讓程式代碼易於共用。 平臺特定應用程式項目會參考 .NET Standard 專案,以及他們利用目標平臺所需的任何其他平臺特定元件。
在案例研究中會提供項目結構方式的特定範例。
新增檔案
建置動作
請務必針對特定文件類型設定正確的建置動作。 這個清單顯示一些常見檔案類型的建置動作:
- 所有 C# 檔案 – 建置動作:編譯
- Xamarin.iOS 和 Windows 中的映射 – 建置動作:內容
- Xamarin.iOS 中的 XIB 和分鏡腳本檔案 – 建置動作:InterfaceDefinition
- Android 中的影像和 XML 版面配置 – 建置動作:AndroidResource
- Windows 專案中 的 XAML 檔案 – 建置動作:頁面
- Xamarin.Forms XAML 檔案 – 建置動作:EmbeddedResource
一般而言,IDE 會偵測文件類型,並建議正確的建置動作。
區分大小寫
最後,請記住,某些平臺具有區分大小寫的文件系統(例如 iOS 和 Android),因此請務必使用一致的檔案命名標準,並確定您在程式碼中使用的檔名完全符合文件系統。 對於您在程式代碼中參考的影像和其他資源來說,這特別重要。