Hello, 各位 iT 邦幫忙 的粉絲們大家好~~~
在本系列文會利用目前 Visual Studio 內建的專案樣本建立一個初始的 .NET MAUI 專案,並且透過此 .NET MAUI 專案來把 TopStore App 的開發從 Xamairn.Forms 轉換到 .NET MAUI 上進行。
本篇是 Re: 從零改成用 .NET MAUI 技術來繼續過去用 Xamarin 開發的一個 App : TopStore 系列 系列文的 EP06。
前一篇的部分修正完成後,接著到 .NET MAUI 的專案中來準備替換 XAML 標記碼與 C# 程式碼所引用的 namespace 命名空間。
在 Xamarin.Froms 跟 .NET MAUI 所使用的基底類別庫是完全不同的,所以 XAML 標記碼與 C# 程式碼所引用的 namespace 命名空間要進行調整:
XAML 標記碼:
xmlns="http://xamarin.com/schemas/2014/forms"
<--> xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
C# 程式碼:
using Xamarin.Forms
<--> using Microsoft.Maui
AND using Microsoft.Maui.Controls
using Xamarin.Forms.Xaml
<--> using Microsoft.Maui.Controls.Xaml
而之前在 Xamarin.Forms 時會使用 Xamarin.Essentials 套件所使用到的東西,已經內建到 Maui 的類別庫裡面了,所以只要把 Xamarin.Essentials 的命名空間移除即可。
雖然目前有在開發 .NET Upgrade Assistant (升級小幫手),不過看起來應該還有一段路要走,可參考:
https://github.com/dotnet/maui/wiki/Migrating-from-Xamarin.Forms-(Preview)#wip-net-upgrade-assistant-steps
所以結論...
還是 手動 進行吧!
透過 Visual Studio 2022 在 .NET MAUI 的 TopStoreApp 專案當中進行替換動作,利用快捷鍵 "Ctrl + Shift + F"
叫出 "尋找和取代" 窗格,並切到 "檔案中取代" 來進行以下:
就如同前面說的,來替換 XAML 標記碼的 namespace 命名空間,把 xmlns="http://xamarin.com/schemas/2014/forms"
取代成 xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
:
取代完成,在目前 TopStoreApp 開發到的部分當中會有 5 個取代:
來替換 C# 程式碼的 namespace 命名空間,把 using Xamarin.Forms;
取代成 using Microsoft.Maui;\r\nusing Microsoft.Maui.Controls;
,並且勾選使用規則運算式的使用:
(注意含 ";" 分號)
取代完成,在目前 TopStoreApp 開發到的部分當中會有 9 個取代:
再繼續來替換 C# 程式碼的 namespace 命名空間,把 using Xamarin.Forms.Xaml;
取代成 using Microsoft.Maui.Controls.Xaml;
,並把剛剛勾選使用規則運算式取消:
(注意含 ";" 分號)
取代完成,在目前 TopStoreApp 開發到的部分當中會有 4 個取代:
再繼續來替換掉 Xamarin.Essentials.
成 "空值" :
取代完成,在目前 TopStoreApp 開發到的部分當中會有 5 個取代:
由於在開發 TopStoreApp 時有使用 Xamarin.Essentials 的時候,撰寫習慣都是直接在程式碼寫全名運用,所以是這樣替換。如果是習慣使用 using 命名空間的,請選擇替換 using Xamarin.Essentials;
。
最後再將先前 Xamarin.Forms 所使用 "Xam.Plugin.BaseBindingLibrary" 的 Nuget 套件,要引入的命名空間 Xam.Plugin.BaseBindingLibrary
替換成 Maui.Plugin.BaseBindingLibrary
。
替換掉 Xam.Plugin.BaseBindingLibrary
成為 Maui.Plugin.BaseBindingLibrary
取代完成:
以上針對 TopStoreApp 目前開發到的部分,有運用到的 XAML 標記碼與 C# 程式碼所引用的 namespace 命名空間,全部從 Xamarin.Forms 版本轉換為 .NET MAUI 的版本完畢!
本 EP 介紹所完成的範例程式碼可在此下載。