Etiqueta: truco

  • Trucos para .NET MAUI (primera parte)

    Pues eso… aquí te muestro algunos trucos para usar con .NET MAUI para que no pierdas la razón como me está pasando a mí 😉

    Para poder mostrarte estos trucos, he creado una aplicación para .NET MAUI con Visual Studio 2022 (community), pero no la versión Preview, ya que a la hora de escribir esto, la tengo desinstalada y así uso el .NET 6.0 (que es el que por ahora me está dando menos problemas, al menos teniendo el .NET 6 y el .NET 7 RC1).
    La versión de Visual Studio 2022 es:
    Microsoft Visual Studio Community 2022 (64-bit) Version 17.3.5

    Acabo de instalar la versión 17.3.6 y sigue funcionando bien 😉

    Truco 1: Crear la aplicación de pruebas y hacer que funcione

    Lo primero es quitar las advertencias en los paquetes de NuGet (ver figura 1).

    Figura 1. Advertencias en las dependencias del proyecto

    Esto se soluciona ejecutando la aplicación (en mi caso para Windows).

    Truco 2: Quitar los tipos de aplicaciones que no quieras usar

    Aunque de paso he quitado el soporte para maccatalyst (ya que no tengo un Mac para poder probarlo). Esto es fácil de hacer, abres el fichero del proyecto (botón secundario sobre el nombre del proyecto, en mi caso Trucos_MAUI) y selecciona Edit Project File (en español será con otro texto: Editar el archivo de proyecto o algo así).

    En la parte superior, busca esta línea: <net6.0-android;net6.0-ios;net6.0-maccatalyst> y cámbiala por esta otra: <net6.0-android;net6.0-ios>.

    Truco 3: Usar la aplicación para iOS (iPhone, etc.)

    Para poder usar la aplicación en iOS debes tener una cuenta en Apple Developer (99€ al año) y configurarlo para que use la versión «individual», es decir, con la definición normal de la cuenta no me funciona, y hay que asignar los valores de forma manual (yo ya los tengo asignados, pero voy a ver si te explico cómo hacerlo).

    En las propiedades del proyecto (botón secundario en el proyecto y Properties del menú desplegable), selecciona en la parte de la izquierda iOS > Bundle Signing y en Scheme selecciona Automatic Provisioning (ver figura 2)

    Figura 2. Configurar Bundle Signing para iOS

    Pulsa en el «enlace» Configure Automatic Provisioning y te mostrará un asistente en el que tendrás que indicar la cuenta de Apple (puede ser que la tengas que indicar antes) y de ahí seleccionar la que hayas definido como cuenta de individual (no la que tiene el ID de Apple, si no la que configures manualmente, (ahora te explico cómo) (ver figura 3)

    Figura 3. Las cuentas para configurar el aprovisionamiento para iOS

    Para configurar la cuenta, pulsa en el enlace Manage Account (figura 2) y ahí tendrás que añadir tu ID de Apple (normalmente una cuenta de correo electrónico).

    En el botón «Add» selecciona «Indivudual Account» (figura 4) y rellena los datos que te pide (en Apple Developer puedes encontrar esos datos y cómo crear el «private key». (figura 5).

    Figura 4. añadir una cuenta individual
    Figura 5. Configurar la cuenta individual

    Nota:
    Si necesitas saber cómo configurar la cuenta individual (figura 5), puedo ayudarte por un módico precio, vamos como una invitación virtual, pero me lo tienen que pedir y ya nos arreglamos con el donativo por PayPal 😉

    Una vez que tienes todo esto, ya solo es compilar y cantar… 😉

    Después sigo explicándote más cosas (pero lo primero era crear el proyecto de pruebas).

    Este proyecto lo publicaré ya está publicado en GitHub para que puedas descargarlo e ir viendo el código y el diseño (ver abajo el enlace).

    Nos vemos.
    Guillermo

    P.S.
    El repositorio de GitHub ya está creado: Trucos_MAUI.

  • Cómo solucionar el error de .NET MAUI: Platform version is not present for one or more target frameworks

    Pues eso, que al crear un proyecto para .NET MAUI con Visual Studio 2022 (no preview), concretamente con Microsoft Visual Studio Community 2022 (64-bit) – Version 17.3.5, al intentar usar el proyecto (incluso sin modificar nada) me soltaba ese error: Platform version is not present for one or more target frameworks (concretamente para ios).

    Buscando en la red de redes (internet) me topé con varias soluciones que no solucionaban nada (o yo no sabía cómo aplicar esas soluciones, todo hay que decirlo), y al final «trasteando» con el comando workload de dotnet (que en su día usé, sin éxito, para intentar instalar el workload de iOS), probé con una de las opciones o comandos que te da. Al usar dotnet workload -h te muestra esto:

    Commands:
      install <WORKLOAD_ID>         Install one or more workloads.
      update                        Update all installed workloads.
      list                          List workloads available.
      search <SEARCH_STRING>        Search for available workloads.
      uninstall <WORKLOAD_ID>       Uninstall one or more workloads.
      repair                        Repair workload installations.
      restore <PROJECT | SOLUTION>  Restore workloads required for a project.
    

    Y de ahí la que he usado es la última, que suena bien…

    Así que, te sitúas en el directorio en el que está el proyecto de .NET MAUI, y escribes (todo esto en la terminal, el shell o línea de comandos, como prefieras llamarlo):

    dotnet workload restore "nombre del proyecto.csproj"

    Por supuesto, debes sustituir «nombre del proyecto.csproj» por el nombre de tu proyecto y no es necesario ponerlo entre comillas.

    Nota:
    Puede ser que a los workloads se le vaya la olla… sí… así que… lo mismo un dotnet workload repair puede que lo tengas que usar.

    Espero que a ti también te funcione.

    Nos vemos.
    Guillermo

  • Cambiar el tamaño de la ventana de Windows (WinUI) en app de .NET MAUI

    Pues eso… ahora le toca lo de cambiar el tamaño de una ventana de Windows (WinUI que es como se llama la plataforma de Windows en .NET MAUI (en Xamarin es UWP), aquí solo te voy a mostrar el código de un tamaño fijo, ya que no me he puesto a experimentar cómo usar el tamaño predeterminado, ya que la forma de hacerlo es con otras APIs y… pues eso… que no me gusta demasiado el .NET MAUI como para dedicarle más tiempo de lo justo y necesario… 😉

    Lo que si te quiero decir, es que precisamente me puse a mirar todo esto de cambiar el tamaño porque a diferencia de las aplicaciones con Xamarin.Forms, als de .NET MAUI «no recuerdan» el tamaño de la ventana en las siguientes veces que se use la aplicación, algo que en las de Xamarin sí hace, es decir, se muestra con el tamaño predeterminado y si cambias el tamaño de la ventana, la próxima vez que se utilice usará ese último tamaño.

    Pero en las aplicaciones de .NET MAUI, siempre usa el tamaño «grande» y… pues como que no, por eso me puse a investigar, primero para hacerlo en .NET MAUI, y ya puestos me puse a mirar para Xamarin.

    ¿Cómo cambiar el tamaño de la ventana de Windows (WinUI) en un proyecto de .NET MAUI?

    Es muy simple, el código se pone en el constructor de la clase App principal (no la del proyecto de Windows) y el código podría ser como este que te muestro para poner la ventana en un tamaño de 800 x 900 (ancho x alto).

    namespace CambiarTamañoWindows_MAUI;
    
    public partial class App : Application
    {
        public App()
        {
             InitializeComponent();
    
    
            // Indicar el tamaño para la app de Windows.
            Microsoft.Maui.Handlers.WindowHandler.Mapper.AppendToMapping(nameof(IWindow), (handler, view) =>
            {
    #if WINDOWS
                // Asignar manualmente el tamaño. 
                int winWidth = 800;
                int winHeight = 900;
    
                            var mauiWindow = handler.VirtualView;
                            var nativeWindow = handler.PlatformView;
                            nativeWindow.Activate();
                            IntPtr windowHandle = WinRT.Interop.WindowNative.GetWindowHandle(nativeWindow);
                            var windowId = Microsoft.UI.Win32Interop.GetWindowIdFromWindow(windowHandle);
                            var appWindow = Microsoft.UI.Windowing.AppWindow.GetFromWindowId(windowId);
                            appWindow.Resize(new Windows.Graphics.SizeInt32(winWidth, winHeight));
    #endif
            });
    
            MainPage = new AppShell();
        }
    }
    

    Y esto es todo lo que hay que hacer… simple, ¿verdad? pues sí, para qué engañarnos, aunque eso de tener que ponerlo en un condicional de compilación es un rollo, pero tiene sentido ya que solo es para un proyecto de Windows. El problema es que no te muestra nada el «intellisense» ni nada de esas monerías que tenía en el proyecto para Xamarin.

    Una captura con el programa en funcionamiento.

    Figura 1. La aplicación en funcionamiento.

    Y esto es todo… ahora subiré el código (o parte de él) a GitHub y después te pondré el enlace.

    Acuérdate de (si quieres) hacer un donativo en PayPal para poder seguir teniendo este sitio en funcionamiento, gracias.

    Nos vemos.
    Guillermo

    P.S.
    El código de ejemplo en GitHub: Cambiar Tamaño de la ventana de Windows (WinUI) con .NET MAUI.