Compartir a través de


Novedades de .NET MAUI para .NET 9

El enfoque de la interfaz de usuario de aplicaciones multiplataforma de .NET (.NET MAUI) en .NET 9 es mejorar la calidad del producto. Esto incluye la expansión de la cobertura de pruebas, las pruebas de escenario de un extremo a otro y la corrección de errores. Para obtener más información sobre las mejoras de calidad del producto en la versión preliminar de .NET MAUI 9, consulte estas notas de la versión:

Importante

Debido al trabajo con dependencias externas, como Xcode o Android SDK Tools, la directiva de compatibilidad de .NET MAUI difiere de la directiva de compatibilidad de .NET y .NET Core. Para obtener más información, consulta la directiva de soporte técnico de .NET MAUI .

En .NET 9, .NET MAUI se distribuye como una carga de trabajo de .NET y varios paquetes NuGet. La ventaja de este enfoque es que permite anclar fácilmente los proyectos a versiones específicas, a la vez que te permite obtener una vista previa sencilla de compilaciones no publicadas o experimentales. Al crear un nuevo proyecto .NET MAUI, los paquetes NuGet necesarios se agregan automáticamente al proyecto.

Blazor Hybrid

.NET MAUI 9 Preview 5 agrega una plantilla de proyecto de aplicación .NET MAUI Blazor Hybrid y aplicación web a Visual Studio, que crea una solución con una aplicación .NET MAUI Blazor Hybrid con una aplicación web Blazor, que comparte código común en un proyecto de biblioteca de clases Razor.

La plantilla también se puede usar desde dotnew new:

dotnet new maui-blazor-web -n AllTheTargets

Mejoras de control

.NET MAUI en .NET 9 también incluye mejoras de control.

Compatibilidad con la entrada de teclado flexible

La versión preliminar 4 de .NET MAUI 9 agrega nueva compatibilidad con la entrada de teclado flexible para Password, Date y Time. Se pueden habilitar en los controles Editor y Entry:

<Entry Keyboard="Date" />

Android

.NET for Android 9 Preview, que agrega compatibilidad para API 35, incluye trabajo para reducir los tiempos de compilación y mejorar la capacidad de recorte de las aplicaciones para reducir el tamaño y mejorar el rendimiento. Para obtener más información sobre la versión preliminar de .NET para Android 9, consulte estas notas de la versión:

Paquetes de recursos

.NET para Android 9 Preview 3 presenta la capacidad de colocar recursos en un paquete independiente, conocido como un paquete de recursos. Esto le permite cargar juegos y aplicaciones que normalmente serían mayores que el tamaño de paquete básico permitido por Google Play. Al colocar estos recursos en un paquete independiente, obtiene la capacidad de cargar un paquete que tiene un tamaño de hasta 2 Gb, en lugar del tamaño básico de paquete de 200 Mb.

Importante

Los paquetes de recursos solo pueden contener recursos. En el caso de .NET para Android, esto significa que los elementos que tienen la acción de compilación AndroidAsset.

Las aplicaciones MAUI de .NET definen los recursos a través de la acción de compilación MauiAsset. Un paquete de recursos se puede especificar mediante el atributo AssetPack:

<MauiAsset
    Include="Resources\Raw\**"
    LogicalName="%(RecursiveDir)%(Filename)%(Extension)"
    AssetPack="myassetpack" />

Nota:

Otras plataformas omitirán los metadatos adicionales.

Si tiene elementos específicos que desea colocar en un paquete de recursos, puede usar el atributo Update para definir metadatos AssetPack:

<MauiAsset Update="Resources\Raw\MyLargeAsset.txt" AssetPack="myassetpack" />

Los paquetes de recursos pueden tener diferentes opciones de entrega, que controlan cuándo se instalarán los recursos en el dispositivo:

  • Los paquetes de tiempo de instalación se instalan al mismo tiempo que la aplicación. Este tipo de paquete puede tener un tamaño de hasta 1 Gb, pero solo puede tener uno de ellos. Este tipo de entrega se especifica con metadatos InstallTime.
  • Los paquetes de seguimiento rápido se instalarán en algún momento poco después de que la aplicación haya terminado de instalarse. La aplicación podrá iniciarse mientras se instala este tipo de paquete, por lo que debe comprobar que ha terminado de instalarse antes de intentar usar los recursos. Este tipo de paquete de activos puede tener un tamaño de hasta 512 Mb. Este tipo de entrega se especifica con metadatos FastFollow.
  • Los paquetes a petición nunca se descargarán en el dispositivo a menos que la aplicación lo solicite específicamente. El tamaño total de todos los paquetes de recursos no puede superar los 2 Gb y puede tener hasta 50 paquetes de activos independientes. Este tipo de entrega se especifica con metadatos OnDemand.

En las aplicaciones MAUI de .NET, el tipo de entrega se puede especificar con el atributo DeliveryType en un MauiAsset:

<MauiAsset Update="Resources\Raw\myvideo.mp4" AssetPack="myassetpack" DeliveryType="FastFollow" />

Para obtener más información sobre los paquetes de recursos de Android, consulte Paquetes de recursos de Android.

Compatibilidad con la versión beta de Android 15

.NET for Android Preview 4 agrega enlaces de .NET para la primera versión beta de Android 15 (API 35) con el nombre de código "Vanilla Ice Cream". Para compilar para estas API, actualice la plataforma de destino del proyecto:

<TargetFramework>net9.0-android35</TargetFramework>

.NET para Android Preview 5 amplía estos enlaces a Android 15 beta 2, con mejoras en el rendimiento de inicio y el tamaño de la aplicación.

Métodos serializados de LLVM

Los métodos serializados de máquina virtual de bajo nivel (LLVM) ahora están habilitados de forma predeterminada en .NET for Android Preview 5 en aplicaciones que no son Blazor. Esto ha dado lugar a una mejora aproximada del 10 % en el rendimiento de una aplicación de prueba.

Los métodos serializados de LLVM se pueden deshabilitar en el archivo del proyecto (.csproj):

<PropertyGroup Condition="'$(TargetFramework)' == 'net9.0-android'">
    <AndroidEnableLLVM>false</AndroidEnableLLVM>
    <AndroidEnableLLVMOptimizations>false</AndroidEnableLLVMOptimizations>
</PropertyGroup>

Mejoras de recorte

.NET for Android Preview 5 incluye correcciones para cuando se usa el recorte completo para reducir el tamaño de la aplicación. Por lo general, el recorte completo solo está habilitado para las compilaciones de versión de la aplicación y se puede configurar en el archivo de proyecto (.csproj):

<PropertyGroup Condition="'$(Configuration)' == 'Release' And '$(TargetFramework)' == 'net9.0-android'">
    <TrimMode>Full</TrimMode>
</PropertyGroup>

iOS

La versión preliminar de .NET 9 en iOS, tvOS, Mac Catalyst y macOS usa Xcode 15.2 para las siguientes versiones de la plataforma:

  • iOS: 17.2
  • tvOS: 17.2
  • Mac Catalyst: 17.2
  • macOS: 14,2

Para más información sobre la versión preliminar de .NET 9 en iOS, tvOS, Mac Catalyst y macOS, consulte estas notas de la versión:

Enlaces

.NET para iOS 9 Preview 3 presenta la capacidad de usar versiones de varios destinos de .NET para enlaces iOS. Por ejemplo, un proyecto de biblioteca puede necesitar compilar para dos versiones distintas de iOS:

<TargetFrameworks>net9.0-ios17.0;net9.0-ios17.2</TargetFrameworks>

Esto generará dos bibliotecas, una con enlaces de iOS 17.0 y otra con enlaces de iOS 17.2.

Importante

Un proyecto de aplicación siempre debe tener como destino el SDK de iOS más reciente.

AOT nativo para iOS y Mac Catalyst

En la versión preliminar 4 de .NET para iOS 9, la compilación nativa de Ahead of Time (AOT) para iOS y Mac Catalyst aprovecha el recorte completo para reducir el tamaño del paquete y el rendimiento de inicio de la aplicación. Se trata de una característica de publicación que puede usar cuando esté listo para enviar la aplicación.

Importante

La aplicación y sus dependencias deben ser totalmente recortables para poder usar esta característica.

Consulte también