解读最新的 Xamarin 更新
微軟中國MSDN??點(diǎn)擊上方藍(lán)字關(guān)注我們
Good news——Visual Studio 2022 包括了 Xamarin 對(duì) Android 12和蘋果最新的 Xcode 13 版本下的 iOS、iPadOS、macOS 和 tvOS 的支持,以及適用于支持它們的最新 Xamarin.Forms 版本。讓我們一起來了解下最新 Xamarin版本,重新審視 Xamarin 的支持政策,并展望2022年第二季度的.NET 6和.NET MAUI。
Visual?Studio 2022中的?Xamarin
Visual Studio 2022有許多改進(jìn)和新的體驗(yàn),Xamarin.Forms 應(yīng)用程序也會(huì)得到一些改善。XAML Live Preview(實(shí)時(shí)預(yù)覽)是最激動(dòng)人心的功能之一,它可以在 Visual Studio 中使您正在運(yùn)行的應(yīng)用程序生成鏡像,并允許添加布局指南和縮放以獲得完美的像素對(duì)齊。實(shí)時(shí)可視化樹可以讓您看到您的UI層次結(jié)構(gòu)和定位 XAML 源代碼,XAML 熱重載也在不斷改進(jìn)。
Visual Studio 2022發(fā)布說明
https://docs.microsoft.com/en-us/visualstudio/releases/2022/release-notes
XAML 熱重載
https://docs.microsoft.com/en-us/visualstudio/releases/2022/release-notes#xaml-hot-reload
XAML 實(shí)時(shí)預(yù)覽
https://docs.microsoft.com/en-us/visualstudio/releases/2022/release-notes#XAMLLivePreview-170
XAML 實(shí)時(shí)可視化樹
https://docs.microsoft.com/en-us/visualstudio/xaml-tools/inspect-xaml-properties-while-debugging?view=vs-2022
Xamarin 的熱啟動(dòng)
https://docs.microsoft.com/en-us/xamarin/xamarin-forms/deploy-test/hot-restar
已知問題
https://docs.microsoft.com/en-us/visualstudio/releases/2022/release-notes#known-issues
Xamarin?支持最新的移動(dòng)版本
在過去幾個(gè)月中,Xamarin 發(fā)布了多個(gè) Xamarin.Forms 服務(wù)版本,以及來自 Google 和 Apple 的測試版和穩(wěn)定版的 .NET 綁定。這些 sdk 可以在 Visual Studio 2022的新穩(wěn)定版和 Visual Studio 2019的最新版中獲得(Xcode 13.1 sdk 支持將在 Visual Studio 2019的下一個(gè)版本中發(fā)布)。
Visual Studio2022(17.0)?
https://visualstudio.microsoft.com/downloads/
?Visual Studio2022 for Mac(17.0)?
https://visualstudio.microsoft.com/downloads/
Visual Studio2019(16.11.6)?
https://visualstudio.microsoft.com/downloads/
Visual Studio2019 for Mac(8.10.12)?
https://visualstudio.microsoft.com/downloads/
Xamarin. Forms 5
Xamarin.Forms 5.0 服務(wù)版本 6 于 10 月 18 日發(fā)布,自首次發(fā)布以來進(jìn)行了145個(gè)修復(fù)。這包括對(duì) Andriod 12和 iOS 15的支持,我們將繼續(xù)保持每6周發(fā)布一次服務(wù)。您可以從 GitHub 和 Azure Pipelines 的任何 pullrequest 和提交中下載構(gòu)建。也可以使用下方鏈接查看完整的發(fā)布說明。今天就用您最喜歡的 NuGet 包管理器更新您的應(yīng)用程序吧,這樣您就能更好地升級(jí)到.NET MAUI。
構(gòu)建說明
https://www.youtube.com/watch?v=tg3pyuIg55k
完整的發(fā)布說明
https://docs.microsoft.com/en-us/xamarin/xamarin-forms/release-notes/
Android 12
谷歌發(fā)布了最新的 Andriod 12穩(wěn)定版,包括全新的 Material You 設(shè)計(jì)語言、更新的小部件設(shè)計(jì)、整體系統(tǒng)性能改進(jìn),以及相機(jī)、圖形和圖像、媒體、安全和隱私、存儲(chǔ)等方面的新功能和api。有關(guān)更新和文檔的完整列表,請(qǐng)?jiān)L問安卓開發(fā)者門戶。
為了支持 Andriod 12,我們已經(jīng)從版本8升級(jí)到 OpenJDK 11,并更新了安卓設(shè)計(jì)器、SDK 管理器和設(shè)備管理器的兼容性。
安卓開發(fā)者門戶
https://developer.android.com/about/versions/12/summary
iOS 15,iPadOS 15,tvOS 15
蘋果已經(jīng)發(fā)布了 Xcode 13,其中包括 iOS 15、iPadOS 15 和 tvOS 15。蘋果還發(fā)布了 Xcode 13.1,它增加了對(duì) macOS Monterey 12 的支持。
Xcode 13發(fā)布說明
https://developer.apple.com/documentation/xcode-release-notes/xcode-13-release-notes
Xcode 13.1發(fā)布說明
https://developer.apple.com/documentation/xcode-release-notes/xcode-13_1-release-notes
Xamarin 兩年的受支持服務(wù)版本
隨著.NET MAUI 發(fā)布時(shí)間表的改變,以及.NET 6對(duì) Android、iOS 和 macOS 的支持,我們想在這個(gè)過渡期間向大家更新 Xamarin 的支持和服務(wù)計(jì)劃。Xamarin 受 Microsoft 現(xiàn)代生命周期管理,該生命周期聲明當(dāng)前 Xamarin 版本在初始版本之后的兩年內(nèi)得到支持,或者直到下一個(gè)更新的穩(wěn)定版本。.NETMAUI 和相關(guān)平臺(tái)將包含在.NET和 .NET Core 支持政策中,畢竟它現(xiàn)在是 .NET 的一個(gè)統(tǒng)一部分。
這意味著,從 Xamarin 的最新版本開始,您將獲得兩年的受支持服務(wù)版本,您可以期待在2023年11月之前獲得支持。這段時(shí)間您可以將現(xiàn)有項(xiàng)目遷移到 .NET 6,我們正在努力為您提供一個(gè)順利的過程。
時(shí)間表
https://devblogs.microsoft.com/dotnet/update-on-dotnet-maui/
現(xiàn)代生命周期
https://dotnet.microsoft.com/en-us/platform/support/policy/xamarin
.NET?和?.NET Core?支持政策
https://dotnet.microsoft.com/en-us/platform/support/policy/dotnet-core
為過渡到.NET 6做準(zhǔn)備
在2022年的第二季度,我們將發(fā)布一個(gè)支持.NET多平臺(tái)應(yīng)用程序界面(MAUI)的版本,這是支持跨平臺(tái)、移動(dòng)和桌面應(yīng)用程序的.NET下一個(gè)版本。這種轉(zhuǎn)變的首要任務(wù)是確保 Xamarin 應(yīng)用程序能夠升級(jí),以利用.NET、c#和 Visual Studio 中的最新更新,而無需重寫。這意味著 Xamarin 項(xiàng)目只需要從.NET Framework 轉(zhuǎn)移到.NET6,您就可以繼續(xù)發(fā)布了。
讓我們首先一步一步地看看這對(duì)任何 Xamarin 應(yīng)用程序意味著什么。
步驟1:.NET 升級(jí)助手
.NET 升級(jí)助手是一個(gè).NET 命令行工具,它可以將你的項(xiàng)目(csproj文件)從 Xamarin .NET Framework 風(fēng)格轉(zhuǎn)換為當(dāng)前的 SDK 風(fēng)格項(xiàng)目(所有其他.NET項(xiàng)目類型都經(jīng)常使用)。正如你所記得的那樣,這一轉(zhuǎn)變將 Xamarin 與 .NET 結(jié)合在一起,所以無論我們正在構(gòu)建什么樣的應(yīng)用程序,我們都可以共享相同的技術(shù)和技能。
步驟2:更新依賴項(xiàng)
轉(zhuǎn)換項(xiàng)目文件格式后,該工具將評(píng)估您的項(xiàng)目依賴關(guān)系,并報(bào)告任何不兼容的地方,以便您重新評(píng)估。如果您正在使用來自組件供應(yīng)商(如 DevExpress、Infragistics、Steema、Syncfusion、Telerik 或其他)的控件,它們可能已經(jīng)可用了??梢詸z查每一個(gè) roadmap 計(jì)劃和可用性。
Xamarin Community Toolkit(社區(qū)工具包)為升級(jí)到.NET 6提供了兩個(gè)選項(xiàng)。第一個(gè)是與.NET 6兼容的工具箱的1對(duì)1兼容版本,第二個(gè)選擇是一個(gè)純粹的.NET 6版本,它利用了.NET中所有的體系結(jié)構(gòu)改進(jìn),盡管可能還沒有達(dá)到與 Xamarin Community Toolkit 1:1的同等水平。
Xamarin.Essentials 現(xiàn)在是 .NET 6 和 .NET MAUI 的一部分,因此您無需任何額外的 NuGet 依賴即可獲得它。
如果您的項(xiàng)目是 Xamarin.Android 或 Xamarin.iOS,那么您很可能在完成上面的步驟后就完成遷移了,只需編譯并測試您的應(yīng)用程序。
步驟3(可選):Xamarin.Forms 到 .NET MAUI
.NETMAUI 使用的控件命名、布局命名、導(dǎo)航模式和 XAML 特性與你的應(yīng)用程序在Xamarin.Forms 中使用的是一樣的。這意味著它將按原樣工作。那么是什么改變了呢?
.NET MAUI 使用命名空間“Microsoft.Maui”而不是“Xamarin.Forms”。.NET 升級(jí)助手將在您的 XAML 和 C# 文件中為您進(jìn)行此更改。如果在上一步中沒有更新 Xamarin.Forms 的 NuGet,那么您現(xiàn)在需要解決這些問題。
您還會(huì)遇到哪些其他差異?
1.?應(yīng)用程序與窗口 – Xamarin.Forms 應(yīng)用程序是單窗口,而 .NET MAUI 應(yīng)用程序可以是多窗口。這意味著應(yīng)用程序的根視圖已經(jīng)從根本上升級(jí)了。我們保留了App.cs(和App.xaml.cs)的樣式,所以你的應(yīng)用程序可以繼續(xù)按原樣工作。
2.?Custom Renderers - .NET MAUI在新的“處理器”架構(gòu)中不再需要它們,但是我們提供了一個(gè)兼容性的方法讓您注冊(cè),以便繼續(xù)使用。為了將來的需求,我們建議學(xué)習(xí)處理程序模式來定制平臺(tái)控件的外觀。例如,假設(shè)您有一個(gè)安卓的自定義渲染器(庫中的CustomEntry)(安卓項(xiàng)目中的CustomEntryRenderer),要告訴.NETMAUI在哪里找到這個(gè)渲染器,以及如何使用這個(gè)渲染器而不是新的處理程序,請(qǐng)打開項(xiàng)目根目錄下的MauiProgram.cs,我們?cè)谀抢锒x了應(yīng)用程序生成器:
appBuilder.UseMauiApp<App>().ConfigureMauiHandlers(handlers =>{ #if __ANDROID__handlers.AddCompatibilityRenderer(typeof(CustomEntry), typeof(Droid.Renderers.CustomEntryRenderer)); #endif});使用條件編譯標(biāo)識(shí)符(如__ANDROID__)為每個(gè)渲染器執(zhí)行此操作。
3.?效果——就像自定義渲染器一樣,你可以在應(yīng)用生成器中注冊(cè)。
appBuilder.UseMauiApp<App>().ConfigureEffects(effects =>{effects.Add<FocusRoutingEffect, FocusPlatformEffect>();});在 Visual Studio 2022中打開項(xiàng)目并開始構(gòu)建。您可能會(huì)遇到一些類型更改或不兼容性。解決這些問題,很快您就會(huì)完成向.NET 6的過渡。根據(jù)應(yīng)用程序的復(fù)雜性和.NET 6兼容依賴的可用性,這可能需要幾個(gè)小時(shí)到幾天的工作時(shí)間。
要立即嘗試遷移,請(qǐng)?jiān)囉?NET 升級(jí)助手并提供反饋,以便我們可以在現(xiàn)在和正式發(fā)布版本之間繼續(xù)改進(jìn)該助手。
有關(guān)將項(xiàng)目從 Xamarin.Forms 遷移到 .NET MAUI 的其他示例,請(qǐng)查看 Javier SuarezRuiz 的存儲(chǔ)庫?Xamarin.Forms 到 .NET MAUI。
.NET?升級(jí)助手
https://github.com/dotnet/maui/wiki/Migrating-from-Xamarin.Forms-(Preview)
Xamarin.Forms?到?.NET?MAUI
https://github.com/dotnet/maui/wiki/Migrating-from-Xamarin.Forms-(Preview)
總結(jié)
.NET MAUI Preview 10 現(xiàn)已在 Visual Studio 2022 預(yù)覽頻道中提供,并且 Xamarin.Forms 5.0 可用。兩者都支持最新的平臺(tái)版本。如果您的項(xiàng)目開發(fā)時(shí)間超過 4 個(gè)月,或者您需要的一切都已在 .NET MAUI 中準(zhǔn)備就緒,那么我們建議從那里開始。
歡迎立即開始使用以下資源:
Visual Studio2022 (17.0)?
https://visualstudio.microsoft.com/downloads/
Visual Studio2022 for Mac (17.0)?
https://visualstudio.microsoft.com/downloads/
Visual Studio2022 預(yù)覽版 (17.1)?
https://visualstudio.microsoft.com/vs/preview/
宣布 .NET MAUI 預(yù)覽版 10
https://devblogs.microsoft.com/dotnet/announcing-net-maui-preview-10/
.NET MAUI 文檔
https://docs.microsoft.com/dotnet/maui
Visual studio 2022
https://visualstudio.microsoft.com/vs/preview/
?下載?Visual?Studio 2022
總結(jié)
以上是生活随笔為你收集整理的解读最新的 Xamarin 更新的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 支付宝 .NET SDK 报错:RSA签
- 下一篇: 如何通过 反射 调用某个对象的私有方法?