Actualización de proyectos de Xamarin.Android, Xamarin.iOS y Xamarin.Mac a .NET

Para actualizar los proyectos nativos de Xamarin a .NET, debes hacer lo siguiente:

  • Actualizar el archivo del proyecto para que sea un proyecto de tipo SDK.
  • Actualizar o reemplazar las dependencias incompatibles con versiones de .NET 8.
  • Compila y prueba la aplicación.

Para la mayoría de los proyectos, no tendrá que cambiar los espacios de nombres ni realizar otras reescrituras.

Para simplificar el proceso de actualización, se recomienda crear un nuevo proyecto de .NET con el mismo tipo y nombre que el proyecto nativo de Xamarin y, a continuación, copiar en el código. Este es el método que se describe a continuación.

Cree un nuevo proyecto

En Visual Studio, crea un nuevo proyecto de .NET del mismo tipo y nombre que el proyecto nativo de Xamarin. Por ejemplo, para actualizar de Xamarin.Android a .NET para Android, seleccione la plantilla de proyecto Aplicación Android:

Captura de pantalla de la selección de la plantilla de proyecto de aplicación de Android en Visual Studio.

El nuevo proyecto debe tener el mismo nombre de proyecto y paquete que el proyecto existente y debe colocarse en una nueva carpeta. Al abrir el archivo del proyecto, se confirmará que tienes un proyecto de estilo SDK de .NET:

<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>

Importante

El moniker de la plataforma de destino (TFM) es lo que denota el proyecto como mediante .NET, en este caso .NET 8. Los TFM válidos para proyectos nativos de Xamarin equivalentes son net8.0-android, net8.0-ios, net8.0-macos y net8.0-tvos. Para obtener información sobre las plataformas de destino en proyectos de estilo SDK, consulta Plataformas de destino en proyectos de estilo SDK.

Inicia la aplicación para confirmar que tu entorno de desarrollo puede compilar la aplicación.

Combinación de archivos

Copie el código y los archivos de recursos de las carpetas del proyecto nativo de Xamarin en carpetas idénticas dentro de la nueva aplicación. Debes sobrescribir cualquier archivo del mismo nombre.

Si tienes otros proyectos de biblioteca, debes agregarlos a tu nueva solución y agregar referencias de proyecto a ellos desde el nuevo proyecto de .NET.

También tendrás que copiar algunas propiedades del proyecto de tu proyecto nativo de Xamarin en tu nuevo proyecto de .NET para la configuración, como argumentos de compilación condicional y firma de código. Abrir los proyectos en paralelo en instancias independientes de Visual Studio te permitirá comparar las propiedades del proyecto. Como alternativa, puedes migrar la configuración editando el nuevo archivo de proyecto directamente. Para obtener más información, consulta Migración de proyectos de Xamarin.Android y Migración de proyectos de Xamarin Apple.

Actualización de las dependencias

Por lo general, los paquetes NuGet nativos de Xamarin no son compatibles con .NET 8 a menos que se hayan vuelto a compilar mediante TFM de .NET. Sin embargo, las aplicaciones de .NET para Android pueden usar paquetes NuGet destinados a los marcos monoandroid y monoandroidXX.X .

Para confirmar que un paquete es compatible con .NET 8, examina la pestaña Marcos de NuGet para el paquete que usa y comprueba que enumera uno de los marcos compatibles que se muestran en la tabla siguiente:

Marcos compatibles Marcos incompatibles
net8.0-android, monoandroid, monoandroidXX.X
net8.0-ios monotouch, xamarinios, xamarinios10
net8.0-macos monomac, xamarinmac, xamarinmac20
net8.0-tvos xamarintvos
xamarinwatchos

Nota:

Las bibliotecas de .NET Standard que no tienen dependencias en los marcos incompatibles enumerados anteriormente siguen siendo compatibles con .NET 8.

Si un paquete de NuGet indica compatibilidad con cualquiera de los marcos compatibles anteriores, independientemente de incluir también marcos incompatibles, el paquete es compatible. Los paquetes NuGet compatibles se pueden agregar a tu proyecto nativo de .NET mediante el administrador de paquetes NuGet en Visual Studio.

Si no encuentras una versión compatible con .NET 8 de un paquete NuGet, debes:

  • Vuelve a compilar el paquete con TFM de .NET, si posees el código.
  • Busca una versión preliminar de una versión de una versión de .NET 8 del paquete.
  • Reemplaza la dependencia por una alternativa compatible con .NET 8.

Para obtener información sobre cómo migrar código de Xamarin.Essentials en una aplicación .NET para Android o .NET para iOS, consulte Migración de código de Xamarin.Essentials en .NET para Android y .NET para aplicaciones iOS.

Compilación y solución de problemas

Una vez resueltas tus dependencias y agregados tus archivos de código y recursos a tu proyecto de .NET nativo, debes compilar tu proyecto. Los errores te guiarán hacia los pasos siguientes.

Sugerencia

  • Elimina todas las carpetas bin y obj de todos los proyectos antes de abrir y compilar proyectos en Visual Studio, especialmente al cambiar las versiones de .NET.
  • Elimina el archivo generado Resource.designer.cs del proyecto de Android.