將 Xamarin.Android、Xamarin.iOS 和 Xamarin.Mac 專案升級至 .NET

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

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

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

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

建立新專案

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

Screenshot of selecting the Android app project template in Visual Studio.

新的專案應該提供與您現有專案相同的專案和套件名稱,而且應該放在新的資料夾中。 開啟專案檔將會確認您有 .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 產生的檔案。