SlideShare a Scribd company logo
Migrating your
Xamarin.Forms app
to .NET MAUI
Luis Beltrán
• Researcher at Tomás Bata
University in Zlín, Czech Republic
• Lecturer at Tecnológico Nacional
de México en Celaya, Mexico
• Microsoft MVP (AI + Developer
Technologies)
@darkicebeam
luis@luisbeltran.mx
Xamarin
An open source Microsoft platform to build iOS, Android, macOS,
Windows, watchOS, & tvOS modern and high-performant
apps with .NET.
Xamarin.Forms
Xamarin.Forms
Xamarin Traditional
iOS C# UI Windows C# UI
Android C# UI
Shared C# Logic Shared C# Logic
Xamarin.Forms
Shared codebase • 100% access to Native APIs • High performance
.NET MAUI
• Native UI, multiplatform
• Single Project system
• One shared codebase
• Deploy on multiple devices: mobile & desktop
• .NET 6
.NET 6
.NET Multi-platform App UI
WinUI
Mac
Catalyst
Android
iOS
iOS
macOS
github.com/dotnet/maui
https://docs.microsoft.com/en-us/dotnet/maui/
Designing UI in .NET MAUI
XAML, C#, y MVVM
Customize .NET controles with handlers
Customizing controls
#if ANDROID
Handlers.EntryHandler
.EntryMapper[nameof(IEntry.BackgroundColor)] = (h, v) =>
{
(h.NativeView as global::Android.Views.Entry).UnderlineVisible =
false
};
#endif
#ifdef if platform specific
Access the handler from anywhere
Dictionary of all props
Single Project
• Simplified app development.
• One project
• Deploy to multiple devices and
platforms
• Single location for resources:
(fonts, images, App Icons,
splash screens, assets)
• Platform-code organization
Fundamentals
• App Class  App entry point
• MauiProgram Class
• Font registration
• Handlers registration
• Renderers registration
Maui.Essentials
Use Maui.Essentials to access device
services in all .NET MAUI targets.
“Evolution” of Xamarin.Essentials
Migrating from Xamarin.Forms –
Manual steps
• Convert the projects from .NET Framework to .NET SDK Style
• Update code namespaces
• Update any incompatible NuGet packages
• Address any breaking API changes
https://github.com/dotnet/maui/wiki/Migrating-from-Xamarin.Forms-(Preview)
• Copy the code files (except App.xaml) into your project.
• Find and Replace:
• using Xamarin.Forms 
using Microsoft.Maui & using Microsoft.Maui.Controls
• using Xamarin.Forms.Xaml 
using Microsoft.Maui.Controls.Xaml
• xmlns="http://xamarin.com/schemas/2014/forms" 
xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
• Pass false to UseFormsCompatibility.
• Emulator, simulator, or device should be up and running.
Demo – Migrating a
Xamarin.Forms app to .NET
MAUI
Demo
Back2LearnApp Xamarin.Forms
https://github.com/icebeam7/Back2LearnApp
Back2LearnApp .NET MAUI project
https://github.com/icebeam7/Back2LearnMauiApp
.NET Upgrade Assistant is here to help!
• Install the .NET Upgrade Assistant dotnet tool:
dotnet tool install --global upgrade-assistant -
-version 0.3.242703
• Start the upgrade process and follow the instructions:
upgrade-assistant upgrade <Path to csproj/sln>
• Beware!
• Preview version
• Use source control
https://github.com/dotnet/maui/wiki/Migrating-from-Xamarin.Forms-(Preview)
https://github.com/dotnet/upgrade-assistant/
Limitations
• Your app bust be on Xamarin.Forms 4.8 or higher
• Only works with Xamarin.Forms .slns
• Will not work with binding or library projects
• You’ll still have to do some manual changes too
Demo – .NET Upgrade
Assistant
Prerequisites
For a better chance of success when migrating to .NET 6 it is
recommended to:
• Upgrade any PCL project to .NET Standard
• Upgrade Xamarin.Forms projects to version 5.0
• Update packages.config to PackageReference
Know your project dependencies
How do I know if a NuGet dependency needs to be updated or
replaced?
Case 1
.NET Standard Nugets which do not reference any Xamarin.Forms
type will likely work as they are.
Case 2
NuGets that reference Xamarin.Forms types must be updated to
Microsoft.Maui.Controls types and republished with .NET 6 Target
Frameworkd
Should the project be migrated to
"Single Project"?
• No, your existing projects will continue to work without
Single Project.
• You can migrate existing projects to the .NET 6 common
project system.
• Documentation will be provided if you want to adopt Single
Project manually.
Do I need to rewrite my custom
renderers?
No. Custom Renderers will continue working as they are.
Xamarin.Forms  Microsoft.Maui
.NET MAUI can run Effects and Custom Renderers
Update the namespaces in your platform code to Microsoft.Maui
1. Register your Effect in Startup.cs:
2. Register your Renderer in Startup.cs:
No change required in XAML
appBuilder.ConfigureEffects(builder => {
builder.Add<FocusRoutingEffect, FocusPlatformEffect>();
});
appBuilder.ConfigureMauiHandlers(builder => {
#if __ANDROID__
handlers.AddCompatibilityRenderer(typeof(CustomEntry),
typeof(Droid.Renderers.CustomEntryRenderer));
#endif
});
Xamarin.Forms  Microsoft.Maui
(Optional)
• Migrate Effects and Renderers to the Handlers new
architecture
• Migrate Multiple Project solutions to Single project
Examples and resources: https://github.com/jsuarezruiz/xamarin-forms-to-net-maui
Will third-party UI libraries still work?
Yes! At a minimum, they will need to recompile by adding a
target for .NET 6.
What "flavor" of XAML will .NET MAUI use?
• The same XAML you use in Xamarin.Forms today.
• Previews will provide insight on any name changes.
Xamarin.Forms  Microsoft.Maui
.NET MAUI uses the same
XAML and controls as
Xamarin.Forms
Q & A
Thank you for your attention!
Luis Beltrán
Tomás Bata University in Zlín
Tecnológico Nacional de México en Celaya
about.me/luis-beltran/

More Related Content

What's hot

What is Flutter
What is FlutterWhat is Flutter
What is Flutter
Malan Amarasinghe
 
Jornada 10 años ASP NET en Español - Implementación de Notificaciones Push...
Jornada 10 años ASP NET en Español - Implementación de Notificaciones Push...Jornada 10 años ASP NET en Español - Implementación de Notificaciones Push...
Jornada 10 años ASP NET en Español - Implementación de Notificaciones Push...
Luis Beltran
 
Mobile Test Automation - Appium
Mobile Test Automation - AppiumMobile Test Automation - Appium
Mobile Test Automation - Appium
Maria Machlowska
 
Appium ppt
Appium pptAppium ppt
Appium ppt
natashasweety7
 
Flutter
FlutterFlutter
Introduction to mobile application development
Introduction to mobile application developmentIntroduction to mobile application development
Introduction to mobile application development
Chandan Maurya
 
The Mule Agent
The Mule AgentThe Mule Agent
The Mule Agent
Shanky Gupta
 
Mobile Automation with Appium
Mobile Automation with AppiumMobile Automation with Appium
Mobile Automation with Appium
Manoj Kumar Kumar
 
Flutter
FlutterFlutter
Flutter
Mohit Sharma
 
Introduction to Flutter
Introduction to FlutterIntroduction to Flutter
Introduction to Flutter
AkassharjunShanmugar
 
Native mobile application development with Flutter (Dart)
Native mobile application development with Flutter (Dart)Native mobile application development with Flutter (Dart)
Native mobile application development with Flutter (Dart)
Randal Schwartz
 
Terraform -- Infrastructure as Code
Terraform -- Infrastructure as CodeTerraform -- Infrastructure as Code
Terraform -- Infrastructure as Code
Martin Schütte
 
Flutter festival gdsc juet guna
Flutter festival   gdsc juet gunaFlutter festival   gdsc juet guna
Flutter festival gdsc juet guna
SachinVerma869778
 
Native Apps vs. Web Apps – What Is the Better Choice?
Native Apps vs. Web Apps – What Is the Better Choice?Native Apps vs. Web Apps – What Is the Better Choice?
Native Apps vs. Web Apps – What Is the Better Choice?
ChromeInfo Technologies
 
Browser_Stack_Intro
Browser_Stack_IntroBrowser_Stack_Intro
Browser_Stack_Intro
Mithilesh Singh
 
Automation With Appium
Automation With AppiumAutomation With Appium
Automation With Appium
Knoldus Inc.
 
Firebase
FirebaseFirebase
Flutter presentation.pptx
Flutter presentation.pptxFlutter presentation.pptx
Flutter presentation.pptx
FalgunSorathiya
 
.NET MAUI with .NET 6 (December 2021, Preview 10)
.NET MAUI with .NET 6 (December 2021, Preview 10).NET MAUI with .NET 6 (December 2021, Preview 10)
.NET MAUI with .NET 6 (December 2021, Preview 10)
Alex Pshul
 
Introduction to Flutter - truly crossplatform, amazingly fast
Introduction to Flutter - truly crossplatform, amazingly fastIntroduction to Flutter - truly crossplatform, amazingly fast
Introduction to Flutter - truly crossplatform, amazingly fast
Bartosz Kosarzycki
 

What's hot (20)

What is Flutter
What is FlutterWhat is Flutter
What is Flutter
 
Jornada 10 años ASP NET en Español - Implementación de Notificaciones Push...
Jornada 10 años ASP NET en Español - Implementación de Notificaciones Push...Jornada 10 años ASP NET en Español - Implementación de Notificaciones Push...
Jornada 10 años ASP NET en Español - Implementación de Notificaciones Push...
 
Mobile Test Automation - Appium
Mobile Test Automation - AppiumMobile Test Automation - Appium
Mobile Test Automation - Appium
 
Appium ppt
Appium pptAppium ppt
Appium ppt
 
Flutter
FlutterFlutter
Flutter
 
Introduction to mobile application development
Introduction to mobile application developmentIntroduction to mobile application development
Introduction to mobile application development
 
The Mule Agent
The Mule AgentThe Mule Agent
The Mule Agent
 
Mobile Automation with Appium
Mobile Automation with AppiumMobile Automation with Appium
Mobile Automation with Appium
 
Flutter
FlutterFlutter
Flutter
 
Introduction to Flutter
Introduction to FlutterIntroduction to Flutter
Introduction to Flutter
 
Native mobile application development with Flutter (Dart)
Native mobile application development with Flutter (Dart)Native mobile application development with Flutter (Dart)
Native mobile application development with Flutter (Dart)
 
Terraform -- Infrastructure as Code
Terraform -- Infrastructure as CodeTerraform -- Infrastructure as Code
Terraform -- Infrastructure as Code
 
Flutter festival gdsc juet guna
Flutter festival   gdsc juet gunaFlutter festival   gdsc juet guna
Flutter festival gdsc juet guna
 
Native Apps vs. Web Apps – What Is the Better Choice?
Native Apps vs. Web Apps – What Is the Better Choice?Native Apps vs. Web Apps – What Is the Better Choice?
Native Apps vs. Web Apps – What Is the Better Choice?
 
Browser_Stack_Intro
Browser_Stack_IntroBrowser_Stack_Intro
Browser_Stack_Intro
 
Automation With Appium
Automation With AppiumAutomation With Appium
Automation With Appium
 
Firebase
FirebaseFirebase
Firebase
 
Flutter presentation.pptx
Flutter presentation.pptxFlutter presentation.pptx
Flutter presentation.pptx
 
.NET MAUI with .NET 6 (December 2021, Preview 10)
.NET MAUI with .NET 6 (December 2021, Preview 10).NET MAUI with .NET 6 (December 2021, Preview 10)
.NET MAUI with .NET 6 (December 2021, Preview 10)
 
Introduction to Flutter - truly crossplatform, amazingly fast
Introduction to Flutter - truly crossplatform, amazingly fastIntroduction to Flutter - truly crossplatform, amazingly fast
Introduction to Flutter - truly crossplatform, amazingly fast
 

Similar to NET Conf Bhubaneswar - Migrating your Xamarin.Forms app to .NET MAUI.pptx

Bienvenido .Net MAUI - la evolución de Xamarin.Forms
Bienvenido .Net MAUI - la evolución de Xamarin.FormsBienvenido .Net MAUI - la evolución de Xamarin.Forms
Bienvenido .Net MAUI - la evolución de Xamarin.Forms
Vicente Gerardo Guzman Lucio
 
State of Union: Xamarin & Cross-Platform .NET in 2016 and Beyond
State of Union: Xamarin & Cross-Platform .NET in 2016 and BeyondState of Union: Xamarin & Cross-Platform .NET in 2016 and Beyond
State of Union: Xamarin & Cross-Platform .NET in 2016 and Beyond
Nick Landry
 
Introduction to Xamarin
Introduction to XamarinIntroduction to Xamarin
Introduction to Xamarin
Guy Barrette
 
Mobile Cross-Platform App Development in C# with Xamarin
Mobile Cross-Platform App Development in C# with XamarinMobile Cross-Platform App Development in C# with Xamarin
Mobile Cross-Platform App Development in C# with Xamarin
Nick Landry
 
Introduction to xamarin
Introduction to xamarinIntroduction to xamarin
Introduction to xamarin
Alejandro Ruiz Varela
 
How To Hire A Team To Develop WebRTC Based Applications_.pdf
How To Hire A Team To Develop WebRTC Based Applications_.pdfHow To Hire A Team To Develop WebRTC Based Applications_.pdf
How To Hire A Team To Develop WebRTC Based Applications_.pdf
Moon Technolabs Pvt. Ltd.
 
C# no bolso - desenvolvendo apps multiplataforma
C# no bolso - desenvolvendo apps multiplataformaC# no bolso - desenvolvendo apps multiplataforma
C# no bolso - desenvolvendo apps multiplataforma
Allan Cleysson
 
Why does .net maui deserve your attention if you’re planning to use xamarin
Why does .net maui deserve your attention if you’re planning to use xamarin  Why does .net maui deserve your attention if you’re planning to use xamarin
Why does .net maui deserve your attention if you’re planning to use xamarin
Moon Technolabs Pvt. Ltd.
 
Introduction to xamarin
Introduction to xamarinIntroduction to xamarin
Introduction to xamarin
Christos Matskas
 
Building Mobile Cross-Platform Apps for iOS, Android & Windows in C# with Xam...
Building Mobile Cross-Platform Apps foriOS, Android & Windows in C# with Xam...Building Mobile Cross-Platform Apps foriOS, Android & Windows in C# with Xam...
Building Mobile Cross-Platform Apps for iOS, Android & Windows in C# with Xam...
Nick Landry
 
Introduction to Cross Platform Development with Xamarin/ Visual Studio
Introduction to Cross Platform Development with Xamarin/ Visual StudioIntroduction to Cross Platform Development with Xamarin/ Visual Studio
Introduction to Cross Platform Development with Xamarin/ Visual Studio
IndyMobileNetDev
 
Why is xamarin the preferred app development platform among app developers
Why is xamarin the preferred app development platform among app developersWhy is xamarin the preferred app development platform among app developers
Why is xamarin the preferred app development platform among app developers
Fullestop
 
Intro to Building Mobile Apps with Xamarin
Intro to Building Mobile Apps with XamarinIntro to Building Mobile Apps with Xamarin
Intro to Building Mobile Apps with Xamarin
Heather Downing
 
Xamarin Platform
Xamarin PlatformXamarin Platform
Xamarin Platform
Rui Marinho
 
Xamarin 3 hieu 19-06
Xamarin 3   hieu 19-06Xamarin 3   hieu 19-06
Xamarin 3 hieu 19-06Nguyen Hieu
 
Deep Dive in Xamarin.Forms
Deep Dive in Xamarin.FormsDeep Dive in Xamarin.Forms
Deep Dive in Xamarin.Forms
James Montemagno
 
Highlights from the Xamarin Evolve 2016 conference
Highlights from the Xamarin Evolve 2016 conferenceHighlights from the Xamarin Evolve 2016 conference
Highlights from the Xamarin Evolve 2016 conference
Christopher Miller
 
Introduction to Xamarin - Confoo 2015
Introduction to Xamarin - Confoo 2015Introduction to Xamarin - Confoo 2015
Introduction to Xamarin - Confoo 2015
Guy Barrette
 
Cross platform development with c# and xamarin
Cross platform development with c# and xamarinCross platform development with c# and xamarin
Cross platform development with c# and xamarin
Luca Zulian
 
extending-and-optimizing-xamarin-forms-apps
extending-and-optimizing-xamarin-forms-appsextending-and-optimizing-xamarin-forms-apps
extending-and-optimizing-xamarin-forms-apps
Matthew Soucoup
 

Similar to NET Conf Bhubaneswar - Migrating your Xamarin.Forms app to .NET MAUI.pptx (20)

Bienvenido .Net MAUI - la evolución de Xamarin.Forms
Bienvenido .Net MAUI - la evolución de Xamarin.FormsBienvenido .Net MAUI - la evolución de Xamarin.Forms
Bienvenido .Net MAUI - la evolución de Xamarin.Forms
 
State of Union: Xamarin & Cross-Platform .NET in 2016 and Beyond
State of Union: Xamarin & Cross-Platform .NET in 2016 and BeyondState of Union: Xamarin & Cross-Platform .NET in 2016 and Beyond
State of Union: Xamarin & Cross-Platform .NET in 2016 and Beyond
 
Introduction to Xamarin
Introduction to XamarinIntroduction to Xamarin
Introduction to Xamarin
 
Mobile Cross-Platform App Development in C# with Xamarin
Mobile Cross-Platform App Development in C# with XamarinMobile Cross-Platform App Development in C# with Xamarin
Mobile Cross-Platform App Development in C# with Xamarin
 
Introduction to xamarin
Introduction to xamarinIntroduction to xamarin
Introduction to xamarin
 
How To Hire A Team To Develop WebRTC Based Applications_.pdf
How To Hire A Team To Develop WebRTC Based Applications_.pdfHow To Hire A Team To Develop WebRTC Based Applications_.pdf
How To Hire A Team To Develop WebRTC Based Applications_.pdf
 
C# no bolso - desenvolvendo apps multiplataforma
C# no bolso - desenvolvendo apps multiplataformaC# no bolso - desenvolvendo apps multiplataforma
C# no bolso - desenvolvendo apps multiplataforma
 
Why does .net maui deserve your attention if you’re planning to use xamarin
Why does .net maui deserve your attention if you’re planning to use xamarin  Why does .net maui deserve your attention if you’re planning to use xamarin
Why does .net maui deserve your attention if you’re planning to use xamarin
 
Introduction to xamarin
Introduction to xamarinIntroduction to xamarin
Introduction to xamarin
 
Building Mobile Cross-Platform Apps for iOS, Android & Windows in C# with Xam...
Building Mobile Cross-Platform Apps foriOS, Android & Windows in C# with Xam...Building Mobile Cross-Platform Apps foriOS, Android & Windows in C# with Xam...
Building Mobile Cross-Platform Apps for iOS, Android & Windows in C# with Xam...
 
Introduction to Cross Platform Development with Xamarin/ Visual Studio
Introduction to Cross Platform Development with Xamarin/ Visual StudioIntroduction to Cross Platform Development with Xamarin/ Visual Studio
Introduction to Cross Platform Development with Xamarin/ Visual Studio
 
Why is xamarin the preferred app development platform among app developers
Why is xamarin the preferred app development platform among app developersWhy is xamarin the preferred app development platform among app developers
Why is xamarin the preferred app development platform among app developers
 
Intro to Building Mobile Apps with Xamarin
Intro to Building Mobile Apps with XamarinIntro to Building Mobile Apps with Xamarin
Intro to Building Mobile Apps with Xamarin
 
Xamarin Platform
Xamarin PlatformXamarin Platform
Xamarin Platform
 
Xamarin 3 hieu 19-06
Xamarin 3   hieu 19-06Xamarin 3   hieu 19-06
Xamarin 3 hieu 19-06
 
Deep Dive in Xamarin.Forms
Deep Dive in Xamarin.FormsDeep Dive in Xamarin.Forms
Deep Dive in Xamarin.Forms
 
Highlights from the Xamarin Evolve 2016 conference
Highlights from the Xamarin Evolve 2016 conferenceHighlights from the Xamarin Evolve 2016 conference
Highlights from the Xamarin Evolve 2016 conference
 
Introduction to Xamarin - Confoo 2015
Introduction to Xamarin - Confoo 2015Introduction to Xamarin - Confoo 2015
Introduction to Xamarin - Confoo 2015
 
Cross platform development with c# and xamarin
Cross platform development with c# and xamarinCross platform development with c# and xamarin
Cross platform development with c# and xamarin
 
extending-and-optimizing-xamarin-forms-apps
extending-and-optimizing-xamarin-forms-appsextending-and-optimizing-xamarin-forms-apps
extending-and-optimizing-xamarin-forms-apps
 

More from Luis Beltran

AI for Accessibility.pptx
AI for Accessibility.pptxAI for Accessibility.pptx
AI for Accessibility.pptx
Luis Beltran
 
03 GlobalAIBootcamp2020Lisboa-Rock, Paper, Scissors.pptx
03 GlobalAIBootcamp2020Lisboa-Rock, Paper, Scissors.pptx03 GlobalAIBootcamp2020Lisboa-Rock, Paper, Scissors.pptx
03 GlobalAIBootcamp2020Lisboa-Rock, Paper, Scissors.pptx
Luis Beltran
 
BI LATAM Summit 2022 - Creación de soluciones de automatización serverless-...
BI LATAM Summit 2022 - Creación de soluciones de automatización serverless-...BI LATAM Summit 2022 - Creación de soluciones de automatización serverless-...
BI LATAM Summit 2022 - Creación de soluciones de automatización serverless-...
Luis Beltran
 
CEIAAIT - Fundamentos y Aplicaciones de Deep Learning.pdf
CEIAAIT - Fundamentos y Aplicaciones de Deep Learning.pdfCEIAAIT - Fundamentos y Aplicaciones de Deep Learning.pdf
CEIAAIT - Fundamentos y Aplicaciones de Deep Learning.pdf
Luis Beltran
 
Computo en la Nube con Azure - AI Gaming Panama.pptx
Computo en la Nube con Azure - AI Gaming Panama.pptxComputo en la Nube con Azure - AI Gaming Panama.pptx
Computo en la Nube con Azure - AI Gaming Panama.pptx
Luis Beltran
 
5StarsConf - Serverless Machine Learning con Azure Functions y ML.NET .pptx
5StarsConf - Serverless Machine Learning con Azure Functions y ML.NET .pptx5StarsConf - Serverless Machine Learning con Azure Functions y ML.NET .pptx
5StarsConf - Serverless Machine Learning con Azure Functions y ML.NET .pptx
Luis Beltran
 
ACW - Azure Speaker Recognition Biometria de Voz.pptx
ACW - Azure Speaker Recognition Biometria de Voz.pptxACW - Azure Speaker Recognition Biometria de Voz.pptx
ACW - Azure Speaker Recognition Biometria de Voz.pptx
Luis Beltran
 
UNICABA - Azure Machine Learning.pptx
UNICABA - Azure Machine Learning.pptxUNICABA - Azure Machine Learning.pptx
UNICABA - Azure Machine Learning.pptx
Luis Beltran
 
Azure Talks Bolivia - Aumente la confiabilidad de su negocio con Azure Anomal...
Azure Talks Bolivia - Aumente la confiabilidad de su negocio con Azure Anomal...Azure Talks Bolivia - Aumente la confiabilidad de su negocio con Azure Anomal...
Azure Talks Bolivia - Aumente la confiabilidad de su negocio con Azure Anomal...
Luis Beltran
 
Latino NET - Integrando WhatsApp en nuestras apps .NET con Twilio.pptx
Latino NET - Integrando WhatsApp en nuestras apps .NET con Twilio.pptxLatino NET - Integrando WhatsApp en nuestras apps .NET con Twilio.pptx
Latino NET - Integrando WhatsApp en nuestras apps .NET con Twilio.pptx
Luis Beltran
 
NOVA - Enriquecimiento de IA con Azure Cognitive Search.pptx
NOVA - Enriquecimiento de IA con Azure Cognitive Search.pptxNOVA - Enriquecimiento de IA con Azure Cognitive Search.pptx
NOVA - Enriquecimiento de IA con Azure Cognitive Search.pptx
Luis Beltran
 
Netcoreconf 2021 Realidad mixta en apps móviles con Azure Spatial Anchors y ...
Netcoreconf 2021 Realidad mixta en apps móviles con Azure Spatial Anchors y ...Netcoreconf 2021 Realidad mixta en apps móviles con Azure Spatial Anchors y ...
Netcoreconf 2021 Realidad mixta en apps móviles con Azure Spatial Anchors y ...
Luis Beltran
 
ATG Puebla - El cementerio de Microsoft.pptx
ATG Puebla - El cementerio de Microsoft.pptxATG Puebla - El cementerio de Microsoft.pptx
ATG Puebla - El cementerio de Microsoft.pptx
Luis Beltran
 
Data-Saturday-10-Sofia-2021 Azure Video Indexer- Advanced data extraction fro...
Data-Saturday-10-Sofia-2021 Azure Video Indexer- Advanced data extraction fro...Data-Saturday-10-Sofia-2021 Azure Video Indexer- Advanced data extraction fro...
Data-Saturday-10-Sofia-2021 Azure Video Indexer- Advanced data extraction fro...
Luis Beltran
 
Azure Community Conference - Image Recognition in WhatsApp chatbot with Azure...
Azure Community Conference - Image Recognition in WhatsApp chatbot with Azure...Azure Community Conference - Image Recognition in WhatsApp chatbot with Azure...
Azure Community Conference - Image Recognition in WhatsApp chatbot with Azure...
Luis Beltran
 
Real NET Docs Show - Serverless Machine Learning v3.pptx
Real NET Docs Show - Serverless Machine Learning v3.pptxReal NET Docs Show - Serverless Machine Learning v3.pptx
Real NET Docs Show - Serverless Machine Learning v3.pptx
Luis Beltran
 
Sesion 5 - Eficiencia del Rendimiento - Well Architected Backstage Tour.pptx
Sesion 5 - Eficiencia del Rendimiento - Well Architected Backstage Tour.pptxSesion 5 - Eficiencia del Rendimiento - Well Architected Backstage Tour.pptx
Sesion 5 - Eficiencia del Rendimiento - Well Architected Backstage Tour.pptx
Luis Beltran
 
XamarinExpertDay - Creating PDF files in mobile apps with PdfSharpCore and Mi...
XamarinExpertDay - Creating PDF files in mobile apps with PdfSharpCore and Mi...XamarinExpertDay - Creating PDF files in mobile apps with PdfSharpCore and Mi...
XamarinExpertDay - Creating PDF files in mobile apps with PdfSharpCore and Mi...
Luis Beltran
 
Latam Space Week - Clasificación de rocas espaciales por medio de IA.pptx
Latam Space Week - Clasificación de rocas espaciales por medio de IA.pptxLatam Space Week - Clasificación de rocas espaciales por medio de IA.pptx
Latam Space Week - Clasificación de rocas espaciales por medio de IA.pptx
Luis Beltran
 
GAIBT Pune - Future of AI.pptx
GAIBT Pune - Future of AI.pptxGAIBT Pune - Future of AI.pptx
GAIBT Pune - Future of AI.pptx
Luis Beltran
 

More from Luis Beltran (20)

AI for Accessibility.pptx
AI for Accessibility.pptxAI for Accessibility.pptx
AI for Accessibility.pptx
 
03 GlobalAIBootcamp2020Lisboa-Rock, Paper, Scissors.pptx
03 GlobalAIBootcamp2020Lisboa-Rock, Paper, Scissors.pptx03 GlobalAIBootcamp2020Lisboa-Rock, Paper, Scissors.pptx
03 GlobalAIBootcamp2020Lisboa-Rock, Paper, Scissors.pptx
 
BI LATAM Summit 2022 - Creación de soluciones de automatización serverless-...
BI LATAM Summit 2022 - Creación de soluciones de automatización serverless-...BI LATAM Summit 2022 - Creación de soluciones de automatización serverless-...
BI LATAM Summit 2022 - Creación de soluciones de automatización serverless-...
 
CEIAAIT - Fundamentos y Aplicaciones de Deep Learning.pdf
CEIAAIT - Fundamentos y Aplicaciones de Deep Learning.pdfCEIAAIT - Fundamentos y Aplicaciones de Deep Learning.pdf
CEIAAIT - Fundamentos y Aplicaciones de Deep Learning.pdf
 
Computo en la Nube con Azure - AI Gaming Panama.pptx
Computo en la Nube con Azure - AI Gaming Panama.pptxComputo en la Nube con Azure - AI Gaming Panama.pptx
Computo en la Nube con Azure - AI Gaming Panama.pptx
 
5StarsConf - Serverless Machine Learning con Azure Functions y ML.NET .pptx
5StarsConf - Serverless Machine Learning con Azure Functions y ML.NET .pptx5StarsConf - Serverless Machine Learning con Azure Functions y ML.NET .pptx
5StarsConf - Serverless Machine Learning con Azure Functions y ML.NET .pptx
 
ACW - Azure Speaker Recognition Biometria de Voz.pptx
ACW - Azure Speaker Recognition Biometria de Voz.pptxACW - Azure Speaker Recognition Biometria de Voz.pptx
ACW - Azure Speaker Recognition Biometria de Voz.pptx
 
UNICABA - Azure Machine Learning.pptx
UNICABA - Azure Machine Learning.pptxUNICABA - Azure Machine Learning.pptx
UNICABA - Azure Machine Learning.pptx
 
Azure Talks Bolivia - Aumente la confiabilidad de su negocio con Azure Anomal...
Azure Talks Bolivia - Aumente la confiabilidad de su negocio con Azure Anomal...Azure Talks Bolivia - Aumente la confiabilidad de su negocio con Azure Anomal...
Azure Talks Bolivia - Aumente la confiabilidad de su negocio con Azure Anomal...
 
Latino NET - Integrando WhatsApp en nuestras apps .NET con Twilio.pptx
Latino NET - Integrando WhatsApp en nuestras apps .NET con Twilio.pptxLatino NET - Integrando WhatsApp en nuestras apps .NET con Twilio.pptx
Latino NET - Integrando WhatsApp en nuestras apps .NET con Twilio.pptx
 
NOVA - Enriquecimiento de IA con Azure Cognitive Search.pptx
NOVA - Enriquecimiento de IA con Azure Cognitive Search.pptxNOVA - Enriquecimiento de IA con Azure Cognitive Search.pptx
NOVA - Enriquecimiento de IA con Azure Cognitive Search.pptx
 
Netcoreconf 2021 Realidad mixta en apps móviles con Azure Spatial Anchors y ...
Netcoreconf 2021 Realidad mixta en apps móviles con Azure Spatial Anchors y ...Netcoreconf 2021 Realidad mixta en apps móviles con Azure Spatial Anchors y ...
Netcoreconf 2021 Realidad mixta en apps móviles con Azure Spatial Anchors y ...
 
ATG Puebla - El cementerio de Microsoft.pptx
ATG Puebla - El cementerio de Microsoft.pptxATG Puebla - El cementerio de Microsoft.pptx
ATG Puebla - El cementerio de Microsoft.pptx
 
Data-Saturday-10-Sofia-2021 Azure Video Indexer- Advanced data extraction fro...
Data-Saturday-10-Sofia-2021 Azure Video Indexer- Advanced data extraction fro...Data-Saturday-10-Sofia-2021 Azure Video Indexer- Advanced data extraction fro...
Data-Saturday-10-Sofia-2021 Azure Video Indexer- Advanced data extraction fro...
 
Azure Community Conference - Image Recognition in WhatsApp chatbot with Azure...
Azure Community Conference - Image Recognition in WhatsApp chatbot with Azure...Azure Community Conference - Image Recognition in WhatsApp chatbot with Azure...
Azure Community Conference - Image Recognition in WhatsApp chatbot with Azure...
 
Real NET Docs Show - Serverless Machine Learning v3.pptx
Real NET Docs Show - Serverless Machine Learning v3.pptxReal NET Docs Show - Serverless Machine Learning v3.pptx
Real NET Docs Show - Serverless Machine Learning v3.pptx
 
Sesion 5 - Eficiencia del Rendimiento - Well Architected Backstage Tour.pptx
Sesion 5 - Eficiencia del Rendimiento - Well Architected Backstage Tour.pptxSesion 5 - Eficiencia del Rendimiento - Well Architected Backstage Tour.pptx
Sesion 5 - Eficiencia del Rendimiento - Well Architected Backstage Tour.pptx
 
XamarinExpertDay - Creating PDF files in mobile apps with PdfSharpCore and Mi...
XamarinExpertDay - Creating PDF files in mobile apps with PdfSharpCore and Mi...XamarinExpertDay - Creating PDF files in mobile apps with PdfSharpCore and Mi...
XamarinExpertDay - Creating PDF files in mobile apps with PdfSharpCore and Mi...
 
Latam Space Week - Clasificación de rocas espaciales por medio de IA.pptx
Latam Space Week - Clasificación de rocas espaciales por medio de IA.pptxLatam Space Week - Clasificación de rocas espaciales por medio de IA.pptx
Latam Space Week - Clasificación de rocas espaciales por medio de IA.pptx
 
GAIBT Pune - Future of AI.pptx
GAIBT Pune - Future of AI.pptxGAIBT Pune - Future of AI.pptx
GAIBT Pune - Future of AI.pptx
 

Recently uploaded

FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
Fwdays
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
Abida Shariff
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Product School
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
DianaGray10
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Inflectra
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
Product School
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
Frank van Harmelen
 

Recently uploaded (20)

FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*Neuro-symbolic is not enough, we need neuro-*semantic*
Neuro-symbolic is not enough, we need neuro-*semantic*
 

NET Conf Bhubaneswar - Migrating your Xamarin.Forms app to .NET MAUI.pptx

  • 1.
  • 2. Migrating your Xamarin.Forms app to .NET MAUI Luis Beltrán
  • 3. • Researcher at Tomás Bata University in Zlín, Czech Republic • Lecturer at Tecnológico Nacional de México en Celaya, Mexico • Microsoft MVP (AI + Developer Technologies) @darkicebeam luis@luisbeltran.mx
  • 4. Xamarin An open source Microsoft platform to build iOS, Android, macOS, Windows, watchOS, & tvOS modern and high-performant apps with .NET.
  • 5. Xamarin.Forms Xamarin.Forms Xamarin Traditional iOS C# UI Windows C# UI Android C# UI Shared C# Logic Shared C# Logic Xamarin.Forms Shared codebase • 100% access to Native APIs • High performance
  • 6. .NET MAUI • Native UI, multiplatform • Single Project system • One shared codebase • Deploy on multiple devices: mobile & desktop • .NET 6 .NET 6 .NET Multi-platform App UI WinUI Mac Catalyst Android iOS iOS macOS github.com/dotnet/maui https://docs.microsoft.com/en-us/dotnet/maui/
  • 7. Designing UI in .NET MAUI XAML, C#, y MVVM
  • 8. Customize .NET controles with handlers
  • 9. Customizing controls #if ANDROID Handlers.EntryHandler .EntryMapper[nameof(IEntry.BackgroundColor)] = (h, v) => { (h.NativeView as global::Android.Views.Entry).UnderlineVisible = false }; #endif #ifdef if platform specific Access the handler from anywhere Dictionary of all props
  • 10. Single Project • Simplified app development. • One project • Deploy to multiple devices and platforms • Single location for resources: (fonts, images, App Icons, splash screens, assets) • Platform-code organization
  • 11. Fundamentals • App Class  App entry point • MauiProgram Class • Font registration • Handlers registration • Renderers registration
  • 12. Maui.Essentials Use Maui.Essentials to access device services in all .NET MAUI targets. “Evolution” of Xamarin.Essentials
  • 13. Migrating from Xamarin.Forms – Manual steps • Convert the projects from .NET Framework to .NET SDK Style • Update code namespaces • Update any incompatible NuGet packages • Address any breaking API changes https://github.com/dotnet/maui/wiki/Migrating-from-Xamarin.Forms-(Preview)
  • 14. • Copy the code files (except App.xaml) into your project. • Find and Replace: • using Xamarin.Forms  using Microsoft.Maui & using Microsoft.Maui.Controls • using Xamarin.Forms.Xaml  using Microsoft.Maui.Controls.Xaml • xmlns="http://xamarin.com/schemas/2014/forms"  xmlns="http://schemas.microsoft.com/dotnet/2021/maui" • Pass false to UseFormsCompatibility. • Emulator, simulator, or device should be up and running.
  • 15. Demo – Migrating a Xamarin.Forms app to .NET MAUI
  • 16. Demo Back2LearnApp Xamarin.Forms https://github.com/icebeam7/Back2LearnApp Back2LearnApp .NET MAUI project https://github.com/icebeam7/Back2LearnMauiApp
  • 17.
  • 18. .NET Upgrade Assistant is here to help! • Install the .NET Upgrade Assistant dotnet tool: dotnet tool install --global upgrade-assistant - -version 0.3.242703 • Start the upgrade process and follow the instructions: upgrade-assistant upgrade <Path to csproj/sln> • Beware! • Preview version • Use source control https://github.com/dotnet/maui/wiki/Migrating-from-Xamarin.Forms-(Preview) https://github.com/dotnet/upgrade-assistant/
  • 19. Limitations • Your app bust be on Xamarin.Forms 4.8 or higher • Only works with Xamarin.Forms .slns • Will not work with binding or library projects • You’ll still have to do some manual changes too
  • 20. Demo – .NET Upgrade Assistant
  • 21. Prerequisites For a better chance of success when migrating to .NET 6 it is recommended to: • Upgrade any PCL project to .NET Standard • Upgrade Xamarin.Forms projects to version 5.0 • Update packages.config to PackageReference
  • 22. Know your project dependencies How do I know if a NuGet dependency needs to be updated or replaced? Case 1 .NET Standard Nugets which do not reference any Xamarin.Forms type will likely work as they are. Case 2 NuGets that reference Xamarin.Forms types must be updated to Microsoft.Maui.Controls types and republished with .NET 6 Target Frameworkd
  • 23. Should the project be migrated to "Single Project"? • No, your existing projects will continue to work without Single Project. • You can migrate existing projects to the .NET 6 common project system. • Documentation will be provided if you want to adopt Single Project manually.
  • 24. Do I need to rewrite my custom renderers? No. Custom Renderers will continue working as they are.
  • 25. Xamarin.Forms  Microsoft.Maui .NET MAUI can run Effects and Custom Renderers Update the namespaces in your platform code to Microsoft.Maui 1. Register your Effect in Startup.cs: 2. Register your Renderer in Startup.cs: No change required in XAML appBuilder.ConfigureEffects(builder => { builder.Add<FocusRoutingEffect, FocusPlatformEffect>(); }); appBuilder.ConfigureMauiHandlers(builder => { #if __ANDROID__ handlers.AddCompatibilityRenderer(typeof(CustomEntry), typeof(Droid.Renderers.CustomEntryRenderer)); #endif });
  • 26. Xamarin.Forms  Microsoft.Maui (Optional) • Migrate Effects and Renderers to the Handlers new architecture • Migrate Multiple Project solutions to Single project Examples and resources: https://github.com/jsuarezruiz/xamarin-forms-to-net-maui
  • 27. Will third-party UI libraries still work? Yes! At a minimum, they will need to recompile by adding a target for .NET 6.
  • 28. What "flavor" of XAML will .NET MAUI use? • The same XAML you use in Xamarin.Forms today. • Previews will provide insight on any name changes.
  • 29. Xamarin.Forms  Microsoft.Maui .NET MAUI uses the same XAML and controls as Xamarin.Forms
  • 30. Q & A
  • 31. Thank you for your attention! Luis Beltrán Tomás Bata University in Zlín Tecnológico Nacional de México en Celaya about.me/luis-beltran/

Editor's Notes

  1. .NET Multi-platform App UI (MAUI) is a cross-platform framework for creating native mobile and desktop apps with C# and XAML. Using .NET MAUI, you can develop apps that can run on Android, iOS, macOS, and Windows from a single shared code-base. .NET MAUI is open-source and is the evolution of Xamarin.Forms, extended from mobile to desktop scenarios, with UI controls rebuilt from the ground up for performance and extensibility. If you've previously used Xamarin.Forms to build cross-platform user interfaces, you'll notice many similarities with .NET MAUI. However, there are also some differences. Using .NET MAUI, you can create multi-platform apps using a single project, but you can add platform-specific source code and resources if necessary. One of the key aims of .NET MAUI is to enable you to implement as much of your app logic and UI layout as possible in a single code-base.
  2. .NET Multi-platform App UI (MAUI) provides a collection of controls that can be used to display data, initiate actions, indicate activity, display collections, pick data, and more. By default, handlers map these cross-platform controls to native controls on each platform. For example, on iOS a .NET MAUI handler will map a .NET MAUI Button to an iOS UIButton. On Android, the Button will be mapped to a AppCompatButton: Handlers can be accessed through a control-specific interface provided by .NET MAUI, such as IButton for a Button. This avoids the cross-platform control having to reference its handler, and the handler having to reference the cross-platform control. The mapping of the cross-platform control API to the platform API is provided by a mapper. Handlers expose the native control that implements the .NET MAUI cross-platform control via the NativeView property. This property can be accessed to set platform properties, invoke platform methods, and subscribe to platform events. Handlers are global and therefore customization can occur anywhere in your .NET MAUI app. For example, customizing a handler for a control in your App class will result in all controls of that type being customized in the app. Similarly, customizing a handler for a control in the first page of your app will also result in all controls of that type in the app being customized.
  3. The new handler architecture makes it easy to hook into any property and add/modify behavior right in .NET MAUI In this example we hook into the background color and change the Android underline visibility on the Entry. We could also, with a little more effort, add a custom property mapping specific to the underline and implement that with almost identical code.
  4. One project can now publish to any of the platforms supported. Images are optimized at build time for the multiple densities of screens required across all the platforms you target. Fonts are registered in one location for every platform, and you can alias the name as you desire. Platform code can all live within this one, multi-targeted project. Splash screen support makes it easy to declare a visual asset (PNG or SVG for example) and a background color.
  5. The App class should derive from the Application class, and must override the CreateWindow method to provide a Window within which your app runs, and that defines the UI for the initial page of the app: In the example above, MainPage is a ContentPage that defines the UI for the initial page of the app. To register your own handlers, call the ConfigureMauiHandlers method on the IAppHostBuilder object. Then, on the IMauiHandlersCollection object, call the AddHandler method to add the required handler: In this example, the MyEntryHandler handler is registered against the MyEntry control. Therefore, any instances of the MyEntry control will be handled by the MyEntryHandler.
  6. Accelerometer App Actions App Information Barometer Battery Clipboard Compass Conectivity And more
  7. Disable compatibility renderers in Startup.cs by passing false to UseFormsCompatibility. This ensures we will be
  8. Features coming soon Nuget Package analysis XAML source code updates
  9. Applications commonly have a large number of external dependencies. These dependencies can affect your project and increase the time that you spend migrating it. Before you start, review all your app’s third-party libraries and check how they are integrated. Search nuget.org to see if the plugin has been updated and supports .NET 6 and .NET MAUI. Check for issues on each library’s GitHub home and verify if the developer maintaining the library plans to migrate it to .NET MAUI — or if the open-source community is discussing that. If any of your plugins won’t receive support for .NET 6 and .NET MAUI, it’s time to look for alternatives. Find a replacement plugin:  Build your own plugin: Temporarily disable your plugin: