將 Xamarin.Android、Xamarin.iOS 和 Xamarin.Mac 項目升級至 .NET

若要將 Xamarin 原生項目升級至 .NET,您必須:

  • 將您的項目檔更新為 SDK 樣式。
  • 以 .NET 8 版本更新或取代不相容的相依性。
  • 編譯及測試您的應用程式。

對於大部分的專案,您不需要變更命名空間或進行其他重寫。

若要簡化升級程式,建議您建立與 Xamarin 原生專案相同類型和名稱的新 .NET 專案,然後在程式碼中複製。 這是以下所述的方法。

建立新專案

在 Visual Studio 中,建立與 Xamarin 原生專案相同類型和名稱的新 .NET 專案。 例如,若要從 Xamarin.Android 升級至適用於 Android 的 .NET, 請選取 Android 應用程式 專案範本:

在 Visual Studio 中選取 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 不相容。 不過,適用於Android應用程式的 .NET 可以使用以 和 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 兼容替代方案。

如需在適用於 Android 的 .NET 中移轉 Xamarin.Essentials 程式代碼或適用於 iOS 應用程式的 .NET 的詳細資訊,請參閱 在適用於 Android 的 .NET 中移轉 Xamarin.Essentials 程式代碼和適用於 iOS 應用程式的 .NET。

編譯和疑難解答

一旦解析您的相依性,而且您的程式代碼和資源檔會新增至 .NET 原生專案,您應該建置專案。 任何錯誤都會引導您進行後續步驟。

提示

  • 在 Visual Studio 中開啟和建置專案之前,請先刪除所有 專案的 binobj 資料夾,特別是在變更 .NET 版本時。
  • 從 Android 專案刪除Resource.designer.cs產生的檔案。