將 Xamarin.Android、Xamarin.iOS 和 Xamarin.Mac 專案升級至 .NET
若要將 Xamarin 原生專案升級至 .NET,您必須:
- 將您的專案檔更新為 SDK 樣式。
- 以 .NET 8 版本更新或取代不相容的相依性。
- 編譯及測試您的應用程式。
對於大部分的專案,您不需要變更命名空間或進行其他重寫。
若要簡化升級程式,建議您建立與 Xamarin 原生專案相同類型和名稱的新 .NET 專案,然後在程式碼中複製。 這是以下所述的方法。
建立新專案
在 Visual Studio 中,建立與 Xamarin 原生專案相同類型和名稱的新 .NET 專案。 例如,若要從 Xamarin.Android 升級至 .NET Android, 請選取 Android 應用程式 專案範本:
新的專案應該提供與您現有專案相同的專案和套件名稱,而且應該放在新的資料夾中。 開啟專案檔將會確認您有 .NET SDK 樣式專案:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0-android</TargetFramework>
<SupportedOSPlatformVersion>21</SupportedOSPlatformVersion>
<OutputType>Exe</OutputType>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<ApplicationId>com.companyname.AndroidApp2</ApplicationId>
<ApplicationVersion>1</ApplicationVersion>
<ApplicationDisplayVersion>1.0</ApplicationDisplayVersion>
</PropertyGroup>
</Project>
重要
目標 Framework Moniker (TFM) 是表示專案使用 .NET 的專案,在此案例中為 .NET 8。 對等 Xamarin 原生專案的有效TFM 為 net8.0-android、net8.0-ios、net8.0-macos 和 net8.0-tvos。 如需 SDK 樣式專案中目標架構的相關資訊,請參閱 SDK 樣式專案中 的目標架構。
啟動應用程式以確認您的開發環境可以建置應用程式。
合併檔案
將程式碼和資源檔從 Xamarin 原生專案的資料夾複製到新應用程式內的相同資料夾。 您應該覆寫同名的任何檔案。
如果您有其他程式庫專案,您應該將它們新增至新的方案,並從 新的 .NET 專案新增專案參考 。
您也需要將某些專案屬性從 Xamarin 原生專案複製到新的 .NET 專案,以進行條件式編譯引數和程式碼簽署等設定。 在個別的 Visual Studio 實例中並存開啟專案,可讓您比較專案屬性。 或者,您可以直接編輯新的專案檔來移轉設定。 如需詳細資訊,請參閱 Xamarin.Android 專案移轉 和 Xamarin Apple 專案移轉 。
更新相依性
一般而言,除非已使用 .NET TFM 重新編譯 Xamarin 原生 NuGet 套件,否則與 .NET 8 不相容。 不過,.NET Android 應用程式可以使用以 和 monoandroidXX.X
架構為目標的 monoandroid
NuGet 套件。
您可以查看 NuGet 上的 [Framework] 索引卷 標,確認套件與 .NET 8 相容 ,並檢查它是否列出下表所示的其中一個相容架構:
相容的架構 | 不相容的架構 |
---|---|
net8.0-android、monoandroid、monoandroidXX.X | |
net8.0-ios | monotouch、xamarinios、xamarinios10 |
net8.0-macos | monomac、xamarinmac、xamarinmac20 |
net8.0-tvos | xamarintvos |
xamarinwatchos |
注意
與上述不相容架構沒有相依性的 .NET Standard 程式庫仍與 .NET 8 相容。
如果 NuGet 上的 套件表示與上述任何相容架構的相容性,不論是否也包含不相容的架構,則套件相容。 您可以使用 Visual Studio 中的 NuGet 套件管理員,將相容的 NuGet 套件新增至 .NET 原生專案。
如果您找不到 .NET 8 相容版本的 NuGet 套件,您應該:
- 如果您擁有程式碼,請使用 .NETTFM 重新編譯套件。
- 尋找 .NET 8 版本的套件預覽版本。
- 將相依性取代為 .NET 8 相容替代方案。
如需在 .NET Android 或 .NET iOS 應用程式中移轉 Xamarin.Essentials 程式碼的相關資訊,請參閱 在 .NET Android 和 .NET iOS 應用程式中 移轉 Xamarin.Essentials 程式碼。
編譯和疑難排解
一旦解析您的相依性,而且您的程式碼和資源檔會新增至 .NET 原生專案,您應該建置專案。 任何錯誤都會引導您進行後續步驟。
提示
- 在 Visual Studio 中開啟和建置專案之前,請先刪除所有 專案的 bin 和 obj 資料夾,特別是在變更 .NET 版本時。
- 從 Android 專案刪除 Resource.designer.cs 產生的檔案。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應