将 Xamarin.Android、Xamarin.iOS 和 Xamarin.Mac 项目升级到 .NET

若要将 Xamarin 本机项目升级到 .NET,必须:

  • 将项目文件更新为 SDK 样式。
  • 使用 .NET 8 版本更新或替换不兼容的依赖项。
  • 编译并测试应用。

对于大多数项目,无需更改命名空间或进行其他重写。

为了简化升级过程,建议创建一个与 Xamarin 本机项目的类型和名称相同的新 .NET 项目,然后在代码中复制。 这是下面概述的方法。

新建项目

在 Visual Studio 中,创建与 Xamarin 本机项目相同类型和名称的新 .NET 项目。 例如,若要从 Xamarin.Android 升级到 .NET for Android,请选择“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>

重要说明

目标框架名字对象 (TFM) 可以表示项目使用的是 .NET,在本例中为 .NET 8。 等效 Xamarin 本机项目的有效 TPM 是 net8.0-android、net8.0-ios、net8.0-macos 和 net8.0-tvos。 有关 SDK 样式项目中目标框架的信息,请参阅 SDK 样式项目中的目标框架

启动应用以确认开发环境可以生成应用。

合并文件

将代码和资源文件从 Xamarin 本机项目的文件夹复制到新应用中的相同文件夹。 应覆盖同名的任何文件。

如果你有其他库项目,则应将其添加到新解决方案,并从新的 .NET 项目向其添加项目引用

对于条件编译参数和代码签名等设置,还需要将某些项目属性从 Xamarin 本机项目复制到新的 .NET 项目。 在单独的 Visual Studio 实例中并行打开项目将使你能够比较项目属性。 或者,可以通过直接编辑新项目文件迁移设置。 有关详细信息,请参阅 Xamarin.Android 项目迁移Xamarin Apple 项目迁移

更新依赖项

通常,除非已使用 .NETTFM 重新编译 Xamarin 本机 NuGet 包,否则它们与 .NET 8 不兼容。 但是,.NET for Android 应用可以使用面向 monoandroidmonoandroidXX.X 框架的 NuGet 包。

对于你正在使用的包,可以通过查看 NuGet 上的“框架”选项卡,以及检查其中是否列出了下表所示兼容框架之一,确认包与 .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 for Android 或 .NET for iOS 应用中迁移 Xamarin.Essentials 代码的信息,请参阅在 .NET for Android 和 .NET for iOS 应用中迁移 Xamarin.Essentials 代码

编译和故障排除

解析依赖项并将代码和资源文件添加到 .NET 本机项目后,应生成项目。 任何错误都会引导你完成后续步骤。

提示

  • 在 Visual Studio 中打开和生成项目之前,请从所有项目中删除所有 binobj 文件夹,尤其是在更改 .NET 版本时。
  • 从 Android 项目中删除 Resource.designer.cs 生成的文件。