Live Stream: Migrating & Upgrading Xamarin.Forms to .NET MAUI

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
foreign foreign foreign [Music] foreign hey how's it going everybody hello around the coast hope everyone's doing well um it is Friday Friday over here at least I may still be Friday where you're at I'm assuming we'll see a little bit later in the UK and over over in the uh east side of from me I would say I guess West if you're going west it all depends I guess what's there uh which is pretty cool uh we're back with the lodge room it's been a while it's been a while in fact let me see how long has it been let's go to my YouTube and then if I go to there's a live tab streams I guess not too long two months ago that's not too long yeah it says yes September 23rd yeah not too bad two and a half months ago that's not too bad and we're checking out Donna uh Maui and Don at seven which was very exciting and I guess we did some conference apps I feel like I've been gone for a while but that's also okay because the stuff's been going on you know what I mean life's been happening.net conf happened which was amazing uh so so cool to to be part of that and to see all the awesome content that came out around that which is really really nice uh and then yeah and I'm back the holidays taking Fridays off in December so that's really good so you know I only make videos and stream spare time so we're here now so we got a little bit of time today we have a good one something that's been asking people been asking for a long time which is uh as hey can you go through the process of migrating an app from from xamarin form sadonna Maui and a lot of the apps that I had had a bunch of different requirements and I hadn't gone through the process yet and I still haven't gone through the process so we're gonna go through it today which will be fun in general so it should be pretty rad yeah um but yeah I always like to kick off these things say hi to everybody all the members join in and all the all the subscribers coming in as well so NK good to see you thanks for being a member appreciate that uh and uh let's see who else is here uh Rakesh is in the chat Anthony in the chat Alessandra good to see you from uh from Waze past which is great percussions from Norway that's awesome uh Angelo from Brazil awesome very very cool we're just saying that we would be really cool to do a uh um a big like.net conf event in in Brazil and do something so there's that which would be kind of cool you know so if you have any questions oh uh Rakesh asked earlier I answered it earlier about Mac support for Don Maui for visual studio for mag it's only there it's in it's in there the 17.4 was released at dot netconf two three weeks ago it's on at seven so it's all in there good to go it was in preview before that so if you were on that train you're good to go there um and then he says stuff's going good that's good yeah emulator simulator's got some command line tools things like that to go uh Ankit was asking about the Bluetooth libraries uh there's two shiny which Steve talks about here which is really great um all sorts of stuff that it does supports different platforms it's going to be based on the platforms you need to support and there's also the plugin.ble that's the one that I was using in the past that I helped migrate to.net six and now.net seven I know the team's kind of pushing that forward and that supports I think all the platforms too mostly um and that's the one that I had been just been using in the past I guess I'd probably tried shiny now um has a little bit more structure and a bunch of other stuff in it but that's what I was using so that's what you know I'm just gonna upgrade and migrate too if it ain't broke don't try to fix it so Gustavo from Mexico Lou from Canary Islands that's cool good to see a lot of familiar faces and some new faces as well which is great got some coffee it was a speaker at dot netconf I got a bunch of cool stuff I got this this is pretty cool um it's the dot net it's a net mini vacuum for your desk so you so it it runs on like you know that's actually kind of gross that's cool so there's like a little dust bin in there as you can see that's me just like you know doing something my desk you can turn it on and you just you know run around your desk get all the dust up on your keyboard all that good stuff that was pretty cool I don't know how they found that that's really neat it's my new favorite thing I think in general um it just has like a little tiny motor in it which is hilarious but it kind of like just sucks it up that's cool and I also got a cool time of dust this is really cool this is a this is the speaker gifts this is like a really cool like one of those cloths I guess I gotta put it here because it's in there I don't know if they're gonna create a store or something where you can just like buy it that's pretty cool and then I also got this hold on two other things change it I got this thing which is I guess it's Friday now cool it's like a little block based uh let's put it there for the focus there we go little.net conf uh thing which is kind of cool calendar so I can change it every day I come into work even more work to do and then I also got this this is pretty neat too this is like a little.net.netbot.net comp uh you know pencil bag type of thing put all your gizmos and Gadgets in there so that's pretty neat there's a few other things too those are the main ones which is which is kind of nice so I got some stickers already had tons of stickers so but I did get yeah I got these really cool like.net Don and Maui stickers which are cool so I like those they're different ones there's you know the different ones I like those ones a lot those are pretty cool yeah anyways that's what happened there uh uh MAV asks I'd love to see someone set up a unit test project that's a good question and unit X unit I would take a look at the X unit stuff I think that's what the teams use olives about the media element I posted some things on Twitter about that they're working on that for the community toolkit there's a branch that's what I would check out and pull the nuget from there and give it a go uh Gerald did a video on it on his YouTube um he then he tweeted that he's like I created the video too early whoops it's getting too excited so there's that um that's how you talk to Rob says that's how I used to tell that tell the current date and the Victorian is yep and kid from India good to see you but he says do I personally have any apps uh in the App Stores based on.net7 with Donna Maui not yet I'm working on migrating uh everything now that's my plan based on my learnings today going through the process I was waiting for a few more libraries to upgrade and migrate over um but yeah that's what I'm working on next I have three apps that I ship into the App Store my Cadence My Stream timer and a skiing app and um I think the skiing app I want to upgrade first because it doesn't have a lot of dependencies and it um it could use some of the new map capability what's there and then the my Cadence ask my my Cadence app I was waiting for the skier sharp had already been updated to Peter's question here in the chat um and then I was waiting for the Bluetooth plugin to be updated but the thing is um I don't know like you know there's no rush I'm not like in a rush I guess to update stuff like I have um everything works and everything's good you know in general so until there's like a hard requirement for me to like go and do stuff or I need a new feature like because I'm good for a bit I think that's you know the guidance a lot of people ask me I think squeaky did a great video is like you know dude if your app's like in a done state right and you're like good or adding new features and you don't need new stuff then I don't know it's also probably good for a bit so I haven't had any necessary for like the original launch in May to now to be like oh my gosh I need to go up like I gotta go do this right now you know what I mean so um I've been updating my libraries like the in-app billing plugin like that was one of the biggest ones that needed to be brought over to.net6 and Donna Maui so I've done that um and then the Bluetooth plug-in one is the one that I need there and I think for my stream timer while it's not that complicated there is a bunch of custom background in code and I'm not exactly sure how that works on Catalyst and um win ui3 so I kind of need to go through that process and bring that over too but those have to look like a thousand times better once I actually get those in here that'd be nice I just mostly want those apps looked better basically that's my my big thing at least for my desktop apps because the other stuff was just kind of using like you know previews and stuff like that but it works today and it's there so that's good I guess you know good questions let's see if there's any other questions in the chat yeah I think it's about it cool oh coffee I forgot how to drink coffee so there's that uh any new workshops from start to finish uh good question on kit um so the workshop I'm going to be adding some new things to over time so the monkey app um hey mitash thanks for being a subscriber maybe you're watching maybe or not I'm gonna drop it drop a chat and chat um I'm gonna add some new modules onto the workshop so my plan there is to add like database work add a back end to it um a lot of people have been interested in like adding maps to it so kind of taking advantage of um impotesh so adding some things into it you know basically is going to be my idea uh in general and going from there hey good to see you from Poland there we go awesome [Music] I was just in Poland just awesome so yeah that's what that's what I would say mostly it's kind of what I'm looking for in general so there's if you have suggestions that you want to kind of see in the workshop let me know but what I want to end up turning the workshop into is a two-day workshop so it takes it from start to finish and then goes from there because that'd be kind of cool because it kind of ends at some customization some refresh view stuff but that stuff's not really super required it's more like exploratory where I feel the next steps are okay let's get these monkeys offline let's actually write a back end for this let's um figure out how to run that locally things like that and then I want to add some Blazer hybrid stuff in there too so you could add some webview technologies and share components and things like that would be kind of cool yeah um I can't read the person's name but uh hello James glad to see some things missing from the main libraries like effects View and ripple view I think from syncfusion I think they uh they added that stuff back in so it's there I believe now I think the effects for you at least uh see Ethan S should begin on uh begin invoke on Main throw and be used and view models when setting observable properties in an async method um no that shouldn't you shouldn't have to unless you're calling that from a background thread right so it all depends on the thread that you're you're there right um in general so if you're if you if you're having a call on the background the async await returns you to the main thread that you're on so as long as you're calling that stuff on the main thread you shouldn't have a problem if not you can use a dispatcher the begin invoke on it you know uh lots of questions commenting cool uh Craig was asking about observable collection no this should work fine I haven't had any problems that's what I use so and even in the workshop too so should be fine mm-hmm well Anthony how's it going butter Ethan thanks for being a member appreciate that I was just in Our member AMA every three to six months I do AMA exclusive for members that's kind of cool um sorry question is cool oh Pierre I was asking if I found out why we were if you're at the live 360 the the uh vs live uh Workshop uh there in Orlando I did that uh I think they I think there was that open bug on it I haven't asked the team on it the other thing you could try to do is install the preview of visual studio just install the Maui workloads that's what I run that seemed to be working although I did run into some other issues today so we can test that out but it was working I think for me or being weird I don't know I need to double check it so I'm not really sure yeah uh rakash ass yeah the Azure offline capabilities offline link yeah I need to give that that would be kind of cool to add in there if we if we create a back end for it so Roche says oh that's an interesting question um MVP I'm cool in the toolkit wouldn't it make more sense to be applied to the public property rather than the private property then the generator should do the private one no it can't sirosh you have to add it to the private one because it needs to generate the public getter and Setters and it adds all the logic in there to do the property change notifications right if you'd applied it to the public property then you would have to call all the stuff right and you'd have to generate all the code for it so you apply it to the private one then it generates all the public scaffolding for you in general if that makes sense glad you're there I just did also did a bunch of updates to the workshop based on all the feedback and all the weird things we ran into I went through recently and added a bunch of new things in there so give it a look if you're in there too so are there any plans of a Maui robot uh there is one there already one exists I don't know how to get it but I want it so yes that's cool hey Alan how's it going we're just talking about shiny earlier I haven't streamed in a while we're talking about that too good to see you as well so glad things are going good for you um yeah we're talking about um we're just talking about showing someone else about Bluetooth stuff because I was waiting for the other Bluetooth plugin to go in there and I said if I was starting a new app I would just use shiny probably because it already supports the scenarios I want but you know like I know I don't want to rewrite my code yeah uh good question uh let's see uh Kelley on ass love the videos glad you liked the videos uh why would you choose Maui or native or flutter or reacting or all these other things it all depends on what you're looking for specifically out of it if you're a c-sharp.net developer do you want me to PR well my maps closed doors but yeah I need to upgrade it to down in Maui first and then we'll go from there so maybe I'll invite you to the repo it's really ugly code but it's actually really not that much code so I bet it wouldn't be that bad maybe I'll take a stab at it one day oh I did give you access yeah maybe that's funny maybe we can take a look at it it's pretty ugly code it's like the worst that's why it's closed Source because it's so that's ugly good yeah maybe I could write a blog post of it there I think it would be better if I upgrade it to Maui first and then did it you know what I mean because then it's like I really would need to retest everything over and over again I kind of feel like it's in a good stable state where I don't want to touch anything if it ain't broke don't fix it you know what I mean who's that uh okay to to kalyan's question cool name Kayla Yan well it really depends you know every every different um every different approach has different things right so you think with.net you have the ability to create iOS Android Mac and Windows apps you know separately right you can create and use the native UI the native components you can access those native apis in C sharp you can bring in different third-party libraries from those programming things with Java and Objective C and stuff and you can create your own bindings around them and you can use the UI like storyboards and Android dexml and all that other stuff right but of course you want cross-platform stuff so in that instance you're often sharing code between them um but if you want to do cross platform UI then there's other things so kind of to Jesse's question earlier the relationship between Maui and Uno or even avalonia think of like this dot net is actually like sort of a platform for folks to build their own it's a platform to build apps on with IOS and Android Mac and windows right different capabilities there but then you also have the capabilities of building on top of that um base layer so Donna Maui has these abstractions as as framework and this whole platform on top of the the lower level iOS Android and mac and windows stuff that gives you this common API and that's what Uno is too right Uno has its own like composition layer that's built on top of that stuff and when you build an Uno app or it on a Maui app or an avalonia app for iOS Android or Mac Mac or Windows it uses different.net Technologies to build that up so really like if we're measuring the amount of.net developers building apps all three of those are included in the scenario right it just doesn't matter the cool part with Donna Maui though is that a lot of these other platforms are using it as a platform itself so a platform as a platform if you will so like avalonia built an avalonia uh Dynam Maui control that you can drop in to a.m Maui app so you can leverage their composition and their rendering capabilities and all that cool stuff all the stuff that they're doing and you could drop that in as a page or as a controller things like that so you could blend those worlds together which is quite nice in general um and then you know those other UI Frameworks for example um could do their own stuff right if they want to do Linux support or web UI like they figure out how they want to do those different things in general now the other platforms like flutter and react native and Native stuff like those are just based on what exactly you want to build like flutter is built with dart and it has a custom draw and control mechanism with a canvas um react native is a web Tech with you know kind of a hybrid approach to it you're writing like react and rack components and then ionic is ionic so it's like you know web-based things like that um you know so each of them have their own different ecosystems you know in technology how you're pumping out apps but if you're a c-sharp.net developer it's going to make a lot of sense to use C sharpen.net so you can share code knowledge enough to learn new stuff use the same tools do all the same stuff that's there and I think the cool part about Donna Maui is sort of the Blazer integration and the Blazer integration stuff is really cool because you can not only bring in Blazer but you can bring in any webtech so you can bring in react components and angular components and things like that sambasu from teleric did old blog and whole video and live stream and he's done talks on that stuff too which is really cool so you could bring that stuff in uh into it which is nice so you can bring build these like hybrid apps which I think is awesome yeah which is great yeah which is there so yeah so anyways hopefully that gives some context there to Jesse's question and to other stuff there too but um you know every every UI platform every thing has basically its own advantages and disadvantages and ways that it's built right so it's there like I'm a c-sharp.net developer and like decades ago I picked that is the thing that I fell in love with and I wanted to build the one I wanted to use and I continue to do so to this day because it does the things that I want for my needs and for my apps right is anything the best thing in the world like I said everything has pros and cons that's different based on the apps that you're creating right and all transparency like if I'm a sales person I'm going to tell you we have the best thing since sliced bread and that's the only thing that you should use ever but not a sales person we don't sell anything it's all free so you know it's it's what's best for you and your approach for me this is this is what I use if that makes sense uh what's my take on interactive UI uh I don't know Alan loves react RX UI I haven't really used a lot of reactive stuff but I think it's super supportive super good um there's a bunch of stuff going on there I think the uh Maui reactor UI um which is different not reactive UI but reactor UI uh there's that so you know there you go Allen says once you go reactive extensions you don't go back I believe it I believe it so the problem is remember I'm not like a full-time developer I'm a manager so although I should do some more reactive extension stuff that's for sure Mike Bluestein well I used to work with a xamarin well xamarin days hope Mike's doing good out there um he used to give talks on reactive extensions he would like show it off so it's been there for a long time so it's cool cool all right let's uh let's do it let's I'm in I'm into it today let's let's get into it's been 20 minutes um well we'll do a we'll do a uh how do you do that thing can I do that thing where I do a see let's insert an app let's give that a try okay here we go we're an insert Nat and then we're gonna come back and start coding and we can get more coffee actually I have no idea if that actually inserts an ad or not it's a good question no idea oh there's me you can see me in the thing silly James all right let's go to my computer hmm uh see Alan says I could never convert James to RX but I've got John dick on the ropes to use it there you go that's good you just get John dick in there and then you're you're halfway there that's what I say so that's good oh my goodness so a few things I think are worth noting is squeaky did an awesome video uh highlighting like the the sort of path to to doing stuff to doing stuff with uh upgrading your library so I'll drop that in there if you want to watch that that later it's definitely worth a watch uh in general so there's a whole basically pattern and practices and and path that you you go on basically to it and it's pretty shortly if you just watch it's like 15-20 minutes um and and she gives you sort of all the the whys the hows the do's the journey that you go on so it's super duper good but you'll probably end up landing on like this document uh which is pretty short uh which tells you you don't need to necessarily rewrite your xamarin forms apps to down Maui apps however there is like guides right so converting the projects to the SDK style updating name spaces updating incompatible nuget packages addressing any breaking changes and um you can you know run the converted app and verify that it works correctly so it's only five easy steps to migrating your app until you click on this and when you click on the migration dock this this kind of tells you what you need to do in general so this is the this is the guide um and the question ends up becoming are we going to use the guide and what are we gonna do today in general and there's a lot to think about in a migration and let's talk about it so we have an app this is the my coffee app right so the my coffee app looks like this it uses shell it has a fly out it has tabs um you know it has um some database stuff so I can like add a new coffee so um I can add a copy here hit save that saves it into a database I can you know call back ends I have you know settings for like dark theme mode which looks cool so there's like different cool animations and things like that there's a whole bunch of stuff going on I've used this throughout the process that's on my GitHub right to to do different things and and it applies really nice back and forth so there's the light theme the system theme the Dark theme it works really well so let's look look at this thing right so if you look at what's in it is um there's the shared code which has some models like this is this is fine this is just a.net standard Library not a big deal this uses some some primary key stuff or sqlite Dash net that's cool and then into my coffee app we have [Music] um you know the Android app the IOS app and then we have this this shared code project here right I have some fonts in here got a bunch of libraries I have monkey cash my mvvm helper sqlite uh Community toolkit uh that's interesting xamarin forms obviously xamarin Essentials of the shared code project and then I have you know these fonts that are embedded I have a bunch of view models views you know some Services actually have some interfaces here I'm using the dependency service in here as well um I don't have any like custom views or things like that I don't use a lot of custom renders it's not really I'm a jam so uh Jesse was asking me earlier about custom renders when I talked yeah I don't I don't believe in custom renderers though unless I'm creating a control UI toolkit then obviously I would use the new Handler framework so yeah this app that was we just built together you know what I mean so this stuff's all in here and he uses shall and it has this this uh this mechanism here are some some resources so here's the here's the process to think about what are we going to try to get out of migration like in this instance I have Android and iOS I'll get Mac and windows for free out of it which is cool I'll get a bunch of performance gains the other thing that's of interest to me is how do I want to upgrade and migrate this thing right when I think of going from xamarin forms to done in Maui it's not just migrating from xamarin forms to down in Maui like that's not really what that's a part of the equation if you follow this Channel at all and you follow the evolution of of some of the amazing work that's been doing coming out of the community you'll know that inside of Don and Maui you have all the single project stuff you have all of the um you know images resources icons all that stuff that has been updated right 100 and then you have other things such as the community toolkit so the mvvm community toolkit and all this other stuff so you know if you just migrate your code and follow the guide when I look at my view models right do I want these do I want my old commands do I want um you know all these properties here for example or could we probably use a new source generators right like that that's also what I kind of think about like if I look at these view model bases and I have this this base view model coming from my thing like do we really want that right we have older name spaces that need to be you know migrated over um so same thing it's kind of it's kind of interesting to Think Through the scenario here which is we have all these different commands and async commands and like this is cool but is that really the modern way of doing it that I want to do right and then of course here I'm doing a few different things like I'm prompting users right should I be doing that or should I use shell new you know capabilities for example right so I think the migration path is interesting in that regard and then of course you know the migration tool that is there isn't gonna merge things into a single project but that's the thing that I really really want coming into this right so that that's going to be the goal hopefully for today and going through the tools but we're going to read through some some guides right so um there's sort of this manual migration step and this is a great doc because it kind of goes through everything that you need so um I like that you know there's for updating some things like vs code is recommended it gives you a lot of nice ways of changing things across the the projects and then here right there's if you wanted to right there's um the.net Maui docs but then there's actually migration hmm for IOS and Android so if you had a Non DOT Maui app you could use this guide to update those applications right so you could look at the project file properties um and and update things as well there's a bunch of different buckets and different things that are there um there's some samples that have been updated in the Maui migration which is cool but then we get into this right which is here's a bunch of manual steps to update right so we have the xamarin forms project well are we gonna just migrate that one over right and move it over or how do we want to do that do we want to you know delete the old projects move the things in here update and add the Maui program add the Maui application add the main activity do the stuff right like there's a lot of things in here this is probably the most important part which is like the namespaces so XML and S namespaces the Maui programs things like that and of course xamarin Essentials is gone and there's some other thing so this is a good guide of walking through stuff in general and even looking at the backwards compatibility part but I think what I'm interested in is two parts I think when I think about upgrading in general is I probably don't want to just take my app and migrate it over I think what I really want to do is go in and like first create a new Branch so I'm going to say New Branch I'm going to say .net Maui right and discard any changes I make any Okay cool so now we're on a new Branch that's the first thing it's like let's create a new Branch right and then I think there's a few things in general um is we have these projects I don't want these projects at the end of the day but one thing that will be Nifty is actually if the tool can migrate these name spaces and move some stuff over I think that's going to be like the win in general for us so let's try some stuff out I want to use the I want to use this update my greatest update assistant tool here okay that's what I actually do want to use and this thing will process a few things for us that's kind of what I want to do in general so what I want to do is run it on I think just this project the my coffee app project because if I look at Android like there's really nothing in here like there's a few dependencies and other things in here but um I'm just gonna throw this away at the end of the day for the most part or move it into uh move it into something else I know it's being weird but the same thing with iOS if I look at iOS I really don't have very much in here I have a bunch of icons which I'm not going to use at all I'm just going to put into a different area again we're not really going to use the dependency service so a bunch of this stuff we're going to get rid of so it's kind of all throwaway besides maybe this chunk of code here right yeah the Nuno says that the the community toolkit stuff isn't in in the Maui one yet the disc came up with a new release I give that a look that's for sure um there's some stuff that's in there but again you might need to rip those out and put some stuff in there but I think I'm not going to touch Android and iOS I'm just going to keep it alone so let's do this let us kind of make this bigger if I made this bigger I can't make that bigger for some reason we can't make this bigger uh I want to make this font bigger nope okay oops so just let's change something oh gosh okay well I'm not gonna use that one let's pull up terminal Loop there we go I feel like I should just be able to scroll on a zombie scroll I got to give feedback to the team so let's do D colon slash GitHub slash my coffee app oops now all right so let's CD into my coffee app that's LS again Let's do let's do CD my coffee app again so many things in here so that's where we're at we're inside of this thing right and if I do a git status we're on the Maui Branch so that's good let's run this tool let's see what happens I haven't run it ever uh squeaky uh squeaky for sure has told me that this tool is amazing let's run it so it's going to install a.net Global to the the Upgrade Assistant if you haven't seen the Upgrade Assistant that's on the.net website and it's right here Upgrade Assistant I'll put that in the chat and this helps kind of migrate some stuff over and do stuff in here and there's a bunch of stuff oh there's actually the whole blob on it look at this so this is if you're actually moving IOS and Android projects over that's cool and then it shows you what it does and what it doesn't do it's nice yeah cool so we have it all right so what do I need to do next we're gonna run a command pull this over here so I can read it and I'm gonna run nice let's see here where's our star at the end entry point I think that's what it is so Upgrade Assistant upgrade and let's upgrade my coffee app.cs proj and what I'm going to do is I'm actually going to close this solution just because I don't want it open you know what I mean right now uh just because I'm a little bit worried about that so so it's going to do Upgrade Assistant my coffee FCS proj non-interactive do I want not Interactive yeah it's like do I want so I don't know what this is doing so it's kind of interesting to me first I'm going to pull this back over it's a lot of Click Clifford says but don't I want it to click I don't want it to understand what I wanted to do I want it to be non-interactive all right fine we'll do it I mean that's what it says it is Lux all right I believe yeah usage options okay here we go this is what I'm looking for where to go oh gosh non-interactive wait oh I see gotcha entry point all right oh interesting globbing pattern all right all right let's see what it's got I'm just gonna do it let's see what happens I wanted to click enter but I guess it's telling me not to did it do it oh my gosh that was quick if it did um uh uh okay it doesn't seem like that worked oh I needed to say upgrade there's a up update upgrade I don't know how I missed that I must have deleted it accidentally okay it's doing it things are happening loaded nine extensions that's kind of interesting yeah like as as it said it's going to get us some way some way there but not a hundred percent the way there oh my gosh let's see uh all right let's see I'm I'm super interested in what's happening I have no idea whoa maybe who really is it's pretty this is happening no Andres you're right and uh Joe you're right as well whoa that is interesting it's happening and uh oh there's a whole report how do I open that report um okay we're done we might we've okay so I'm interested here because I did I did um I'm gonna open uh code Maybe let's open folder and let's open my I just want to see what happened I guess where's my coffee at okay yes um because I ran it again only on oh there's a backup oh that's nice okay I do like that it created a backup that's very nice and I approve of that um I'm very interested to see what happened um there's an upgrade report which I don't know how you how do you run that um but interesting okay so let's see what happened here okay so this brings in oh it only did Donna it did Android and iOS and just moved all that stuff over so it did actually end up migrating the community toolkit so that's kind of fascinating it's on 100r2 so so this is this is fascinating because I thought it was going to oh it actually does a change then it does a backup so I like that in general okay cool I like that it added a bunch of stuff that it had resources fonts okay so okay neat okay so let's do something else okay so so far it looks like what it did what I like here is that it moved all of my look at this I moved all of my name spaces over correctly it did look like it updated a few things which is good um if I look at the code behind that's really nice all right cool the services I loved all that stuff alone but it did bring in any of the Maui stuff so it removed all the xamarin forms namespaces I like that okay um that's fascinating okay now I want to do something different though I want to um I want to undo everything and I'm gonna undo everything I want to see what happens if I run it on the solution instead because I don't think it's going to merge it into one thing but let's delete the backup because though it doesn't check it in here okay and let's delete these it has a Maui program so that's kind of neat okay looks like I did get some pretty good results overall okay let me let me run this again again um so in here uh okay so the solution's in here so we're going to run it on we're gonna run mycoffeeapp.sln and see what happens now it it should um it should now figure out the other stuff so before I just ran it only on the dotnet standard project now here it says it says could not load project please ensure vs instance has the correct workloads installed for your project that's and the iOS one had an issue too okay all I have installed is uh I have the the preview installed I want to see what happens see there's some errors happening here in this one specifically with the Android one could not load project insurance has been selected instance okay this little doing stuff that's fascinating all right I wanna I wonder what happens what that upgrade report looks like can I just open it like how do you open a sorry file like what does that even mean you know what I mean like what is that file that's not really helpful I gotta know how to open that I want oh there's a vs extension the geez Sarah file oh there's a Sarah viewer okay cool that's good to know let's close it and reopen it now now I'm interested to see like what it it did it create backups of oh it didn't create backups of everything that's fascinating huh I wonder if it actually it must I didn't I'll see weird okay they did out of Maui program here that's cool I'm interested to see what happened here I see it didn't migrate that that's interesting hmm I was hoping I know it doesn't do single project but it looks like here it says please pass the arguments vs practice okay that's it yeah I wonder if I wonder if it's using a different uh instance of of Visual Studio that I don't want it to use because I do have a internal build installed so I wonder if it's like uh which one is it using um [Music] how do I scroll the top sorry for all the scrolling Okay so it says it's using yeah Oh see it's using the wrong one ha ha ha okay so this is good to know so I need to so this is the issue so it says here to pass in please pass the argument vs path oops so that's interesting so because I have multiple versions of Visual Studio installed it definitely ran into a problem there that is for because I don't have the I don't have that stuff installed okay so that's good to know so if you have multiple versions of Visual Studio installed you should probably check to see what you have installed so let's copy that file paths which is here and then I just want preview not into preview so then what I need to do is reopen Visual Studio and thank you Andre for the serif uh stuff so then let's uh let's open this folder again and uh actually you know what every time I open this folder Visual Studio freezes look at this which I don't know what's up with that what's up with that what's up with that every time just this folder I don't I don't know I don't know why let's close it uh okay so let's do this let's undo the changes discard all files get out of here all right so let's try it again oh no it didn't do it where's the vs path oh okay I probably need to do quotes in here there we go okay so now this should use yeah there we go the problem is is on my internal preview I didn't have the xamarin workloads installed so you need to have the xamarin workloads you know the dynamawi workloads installed so I didn't think I have them there so that's why so this is better because now I'm not seeing any errors initializing so I almost want to step through it do you know what I mean but there's that Target framer I just called it so it like found it okay so it's gonna mark this package to be migrated this one to be there applying removing packages it's doing some stuff all right no errors yet updating some packages Newton soft Json reference analyzers adding templates okay it says applying fixes so I almost kind of want to do this manually I feel like it's kind of way cool to click enter a bunch that's just me because then I know what it's doing but oh it's doing backup projects okay so whatever I did previously I did it wrong and now I'm doing it right so there's that I do want to open that Sarah file though and see what's happening is it backing it up it should be backing it up I hope so back up the project I hope it's something's not locked oh that could be it let's just close that just in case [Music] um there's that let's see is it doing it there we go cool how cool would it be as if it actually just did it and then it ran That'd Be Wild um so this one's gonna apply convert that so I don't mind actually hitting enter a bunch I like to see what it does but it looks like it's applying the upgrade it's going through the iOS one going through the Android one converting the project to the SDK style that's cool all right it's gonna migrate it's an Android Mr Mr spoof says surely it won't be that easy impossible um I don't know it's doing it it's happening this week he said it'll work I think would be wild wild if if it did work in general you know I mean that'd just be crazy um cool it's doing it okay so now it's gonna remove packages it's gonna install the new packages update the namespace my assumption is that it's not going to because it can't be full it can't be 100 you know what I mean like I think the thing is it's an assistant it's not a doing everything right so what it should tell me at the end of the day is like here are some things that I need to do manually to actually get it across the line and I'm okay with that when I talk to a bunch of people I was saying like I don't even know if I would use this I would just do it all manually I think the biggest changes that are needed are um are changing the namespaces pretty much and adding some scaffolding but I think even with this I might throw away a bunch of the work not gonna lie about it but I want to see what happens here so interested so interested I don't know it's happening this is going through all the Android stuff right add project properties for the Maui projects like the thing is is it going to give me more than I need at the end of the day yeah that's cool though is it doing it or is it back up here vitri thank you for the subscription if you're watching the live stream drop a hello in the chat over there get some cop I need some more coffee I've only had two coffees today all right it's doing stuff so that's added a main application CS for the Android one Billy says I wonder if it will work on a xamarin prism app that's a good question what I would probably it's not going to migrate the prism stuff so I bet they're gonna have some issues there I would assume but I would run it first like I did just on your what is this initializing upgrade step to what is that how am I what what's going on there uh-huh that seems odd I don't know why it's updating WCF services to core WCF services okay it's updating the namespaces the main activity my assumption Billy is that it would probably if you did it on just the C the.net standard library is it probably gets you pretty far the way there and then what it really comes down to is how many Breaking changes from the prism stuff to the non-prism stuff happen pretty much in general let's take a while but I guess it's doing stuff things are things are happening I'm Gonna Keep A Refresh on this until it does some stuff I guess it would be a lot of button clicks because you run it on the solution my other fear here is that I I also have some other projects in here like a web project so in order to do there if it's going to try to migrate that as well it shouldn't because it's already on dot net six I think maybe done it five I'm not positive I feel like it's like re-running the analyzers oh these are different fixes okay so this one is saying it's gonna remove all the xamarin forms references remove all the xamarin essential references in these files there shouldn't be that many of them let's see if it already did all the other ones it's only doing on the Android one first it says making sure that this stuff's installed cleaning up packet references it's gonna upgrade these packages okay I have it open here I wonder if that has any issues with it close that just in case now Visual Studio code is going to upgrade all right all right Everyone likes to like look at this if you have any questions let me know yeah it's doing stuff okay so it's going to apply fix for that okay there we go things are happening whoa now it's doing iOS I think that this is nice that it converts the projects from the old style to the new style and additionally there so this one's pretty easy that one migrated that project over which is cool so if I actually opened that project again over here yeah the best thing to do is create a branch in this try it that's what I'm that's what I'm kind of looking at here in general right so if I open up the here's the Android project right so this is kind of this is kind of cool like here's the here's the diff so I'm just gonna like it's tiny removes all that stuff a bunch of globbing a bunch of other stuff that's not needed that's cool and then let's see what the this other one does which is this main one yes it kind of tries not to touch too much stuff right so it just updates these areas adds the areas adds a bunch of stuff in here that's not too bad okay they're still doing stuff so now it's going through the community toolkit stuff I'm going to close this just in case yeah so it's a pretty it's a pretty nice yeah diff so you can see exactly what's Happening Here um and yeah the the diff for IOS and Android is going to be really nice right because this is going to basically remove so much stuff uh in here because you don't need any of these properties they're automatically set for you automatically probably doesn't need my my key keystore stuff either but it ends up adding this target framework down here and then yeah it just adds gets rid of a bunch of stuff basically yeah that's super super nice that just handles that stuff let's see what else is doing still doing so so now it's updating the code So It upgraded the project system first it did the nuget package is not doing this stuff so that's pretty cool uh coming for it says I missed the beginning is the converting to a single projector keeping the project structure so specifically the Upgrade Assistant does not change it to a single project it's just too much for it to handle basically in general so that's like part of the manual process that we're going to go through next what we want to do is just see how far does this get us and can we just run the thing and that would be crazy if you could um but I'll show you how I'm going to do the single project and we'll see if people like it or not but I think it's going to be the easier route in my opinion so there's that uh osney says uh prioritize Linux support for Don and Maui well there is a um some Community work that's been going on there in general but you know I think the teams focus on the platforms that they have today and getting that up and perfect and Polished and things like that so you know there's never been any announcements or things like that so says we manage transition xamarin forms to Maui but we did it in the early days a lot of nougats weren't there they moved prism to Shell which was messy or VMS were largely untouched though that makes sense whoa it happened okay cool let's open it oh my gosh let's do it uh vaal merong says yeah I'm using xcode 13.4 yeah you can turn off the Linker or turn on the Linker it says in there but I would install the latest version of xcode at least 14.0 yeah oh that's interesting Clifford yeah I saw your your thing yeah let's drum roll I'm just going to open the solution Ellie it's like drumroll that's not good um oh it actually loaded it okay um did it touch any of this I bet I I don't okay I didn't touch any of this that's good and then the API wait a second it changed the API to that seven oh my God that's not correct okay so that that's not what we wanted to have happen there um how do I change that back that's hilarious okay so the first thing is don't let it change your your API stuff that's funny okay so let's undo that okay uh can I open this oh it should have a viewer uh at least there's a viewer tools open static analysis results as Sarah Okay cool so okay here we go and is there supposed to be a visual visualizer for it oh come thank you for the subscription uh how do I view it analyze I don't know I don't know how to do it oh Aussie yeah there's a new version of it you gotta do yeah okay yeah this should be net I guess we move this to net six I'm just gonna unload this for now because I don't really have it let's see well I think the team is focused on prioritizing key bug fixes and key features that are required that enable scenarios that developers need for those platforms in general but are you building and deploying for Linux today like are you you're chipping apps ozzny like what are you doing on Linux I'd be super interested I know um I'm also gonna okay so I double tap on uh edit project file so there's a bunch of stuff in here that's fascinating um it is using dot net eight stuff but it has all these properties and other things there's the dinette seven Android stuff it has my stuff in here okay [Music] let's let's clean the whole thing okay oh cool there you go you're working out with mud Blazer which is cool yeah these are some scenarios that could be unlocked maybe with um the Blazer hybrid stuff in general I'm just gonna rebuild and see if it builds see silver Sylvester I'm not positive what you mean there okay so a few things let's see so system drawing color is disambiguous [Music] I think I do want a system drawing color okay let's try that out this is my code mvvm helpers okay command there is a command in Maui controls command but I think it was my command so let's fix that up [Music] if I look at this so This uses multi-targeting so that's kind of cool doesn't use a single project we still have the fonts the resources it still has this embedded resource stuff Maui program okay calls app which loads app and then the thing that all looks correct do we have errors [Music] let's see here yep okay so it looks like so it should be colors right okay so this is supposed to be a so I messed that up so actually if I go back into my code so this is actually good just to see if stuff compiles so it should actually be a um that should be a Microsoft uh Maui Graphics dot color I think so let's see if that fixes that up oh no that should be and then this should be collars yeah color okay so these are colors so I know that those change so we gotta fix those up it's interesting it didn't change up maybe I didn't know based on my namespace okay so this is app Theme okay so let's change that's different okay all right that's good and then this is a this this is added as a dependency let's build that I notice it's not a preview version yeah I I think it needs to that needs to be upgraded as well yeah and here it probably needs to be upgraded yeah 3.0.0 let's just update it and see so it's definitely one thing I'm probably here we need to update those as well I did yeah it just came out so I think the tool needs to be updated you know what I mean I like that I can tap on those things now so that's based on dotted seven so good good call Elliot okay cool that's there's I think there's so many like real weird errors and things happening it's cool that we're doing this together yep it's not the same as a desktop app yeah I hear you you know I think the other thing you could look at right is there's plenty of you know there's other Frameworks for net that do support Linux today so there's nothing like stopping you from necessarily like going down that route if that's something that you need I'm in the same camp let me make sure my project references are correct it's there oh it probably needs no what is it yelling at my coffee app okay I think let me just build this builds failed okay why rebuild it okay so this is I have to add the DOT use this is good actually does it is there a refactoring that tells me to do this please tell me there is yes there is that's great um gotcha okay let's see if this builds I like that it gives me an error though because that's really nice about that okay interesting so item okay so let's see what failed here there's the toolkit and this has some item selected event arcs converter selected item because I changed the name of it to this okay all right so that's one thing what else what other errors do we have same one because I use the same thing there that's cool same thing there I don't know I just don't have it in more places all right let's see one step at a time let's move this into here that work it did okay cool so one thing that's fascinating about this we still have all of our drawables and all of our stuff in here too oh interesting Oh weird okay so didn't convert our our activity over hmm well this is system drawing color let's make it a graphics dot color interesting so it didn't end up converting this over it did add the Maui app it didn't update the main activity though interesting it did.android which is not great I guess it is called dot Android but yeah okay so I think you would need to let me open another app and see what it looks like here in my source generator one now yeah yeah it depends on what you're working with I always needs like um you know bright tool for the right job depending on what you're looking for I guess you know and is there so so I think what we need to do is we need to go into platform Android here and we probably just need to copy this over and then let's uh copy that in there let's get this namespace in here Boop oh okay and then I think I can move these as well let me delete I'm going to delete all this stuff so it's interesting it didn't end up doing this but oh yeah this can go down here yeah and I don't want it to be an Android namespace I think that's bad um how do I set my uh namespace default I'm gonna end up throwing this away but I really want to kind of get it like in here so if you look at the main activity I couldn't do this I think if I do global that'll fix that stuff up probably root namespace yeah that's probably what it needs to be yeah okay yeah it is a root namespace because the root namespace should be dot Droid not Android because then you're running all these complex but I don't really matter too much okay okay then there's a random file that I don't need anymore which is in my assembly info so we just delete all that oh this is kind of cool it added these I didn't oh that's cool all right oh man so close runtime designer I think I want to like clean that out I need to like close and reopen two platform color oh color hmm doesn't that not exist anymore color color converter Dot what's gotta exist right no that's not what I want there is a is it two platform I could just like do a DOT on it to to Android there it is platform dot current activity it's that one oh gosh yeah that's all good it's very mad because it's like only supported okay app context platform cuckoo cool uh video on demand yeah Lars it's already there you're already watching the video on demand except for it's live but no you can like scroll back and forth it's just the same link yeah so let's see uh clever so this is what I got with all the form stuff still in the Android and iOS project yeah it doesn't convert those overs which makes sense but you'll see what I'm gonna do I'm gonna ah man let's see I'm gonna un um unload the iOS one I just want to see if I can get the Android one working at all wouldn't that be wild if so why is it oh it is building the iOS one okay that's good huh oh I see it's like okay oh gosh oh and it has this what is it what is going on here oh this must be generated no Android assembly info oh I must have done it from here okay so we want to delete all this stuff because I was being generated file info we don't need that stuff so let's get rid of that stuff it's the small things right interesting I was like duplicate oh interesting duplicate entry clean succeeded yeah I probably need to delete my bin in obj files actually sometimes you need to clean the whole solution to duplicate okay so there's it says there's a duplicate of this so it means it must exist somewhere else maybe I don't need that anymore I mean I always thought this was generated okay let's delete it now get out of here and I I wonder if it's generated I wonder if it's just generated automatically behind the scenes now is my assumption you know what I mean so I don't actually need that at all so we delete that file it's like oh it's being generated somewhere else yeah and then the other thing too that's really probably fascinating to do is I bet if you were to go into let's say you just create a new project okay and let's say we just create a new mobile Android you go to the bottom and you want this this one this is the dot Net 7 version of it right so let's say we just do this and then let's see what it looks like right that's always the thing to compare and contrast right so inside of this there is no resource designer file that was checked in inside there so that's good and if you double tap on this so there's like nothing in here so my assumption is that you could delete almost everything inside of here like all this all this stuff you get rid of all this stuff you get rid of you put this in here obviously these are my nougat packages and then this thing you probably want to get rid of that's probably what you want it to look like at the end of the day right yeah Lars asked in the chat um what's your opinion on porting medium to large size apps that are live should me and my company spend time now porting it or wait I think with.net7 it's a good time to start porting your applications over analyzing it seeing what needs to be done in general for your application and seeing if all the libraries and all the things are there I would do it as a like next you know type of step right like you know is there a reason like what could be your timeline your deadline like xamarin and xamarin forms will be supported until 2024 so you got a lot of time there but you might want to look at saying like Okay [Music] um is it worth me trying to to to go about it now or not you know and move it over if necessary uh I think this is all be okay huh um so I would say probably like yeah like I said now is like the time that I'm starting to do stuff so it's definitely worth a look and then mostly the thing to analyze really is I don't know why this isn't connecting okay it didn't display my emulators but it is gonna go to one okay it's been weird because I've found it at least um I would say if you are specifically looking at um if you're specifically looking at like using some of these new features of doing some new things like yeah definitely take a look at it um again I would probably say like give yourself a migration story pass if you're starting to add a lot of new features and do a lot of stuff then you know you probably want to plan it in one of your Sprints to take a look at it and see where you're at the biggest thing to take a look at is specifically the libraries that you're using and you know can they come over basically um just for proof point I'm going to delete this just to make sure here amh just worked exactly oh my gosh yeah Dan the question about adaptive layouts and adaptive things yeah it's totally possible there's a bunch of different basically visual State managers that you want to look at visual estate manager and you can automatically adjust things I'd also say look at flexba or Flex layout that will do a lot of stuff for you automatically you also have on platform and on idiom which enables you to do things in a bunch of different ways but visual estate manager can adjust your States and your things based on um all sorts of different things but basically it can it can automatically adjust based on sizes and Landscape portrait horizontal things like that so if I'm dropping frames I'm exporting I'm debugging I'm so worried I don't have a splash screen but that's maybe okay oh my gosh whoa it happened and I got exam a live preview oh my gosh okay so the fonts aren't working but I haven't configured them in Maui whoa yeah that is a that is a wow moment um that is a wow moment um that's wild oh we got a uh we got it we got it we gotta we got him we got a crasher my coffee okay we got a crasher probably something I was doing let's see my view my coffee view model okay Where'd I get a crash rat line 77. where's my line numbers how come I don't have line numbers on oh thank goodness I probably did it the same space Patrick subscription 77 [Music] okay so something crashed inside of here if possibly stop background light animation it's just I don't know what you mean what background oh this thing back here over here yeah let me see I can adjust that let me look over here I think the camera shows it a little bit weird hello application so big whoo looks like my app is not working for some reason to see if it's on my thing uh my assumption is my coffee service oh I think I think it's mostly because there's a bug in sqlite Dash net where you need to install the raw below it um which is like pretty interesting let's try that one out foreign oh he did he has a new um version I think that's other thing y'all are saying is like what's the is there any updates so right here he has one he has a beta he pulled it in that's the thing um I'm a little scared to update my monkey cash do it but yeah so I think there's that indeed he did it yes so that's pretty impressive actually at the end of the day I mean you know I'm not using a lot of crazy third-party libraries but I am using some Community toolkit stuff I'm using you know a bunch of other stuff in here so that's pretty cool that just seems you know it it launched it did its thing it still has my app icon doesn't have my splash screen but you know there's a new Maui splash screen that we need to put in but yeah let's see if the animations work whoa there's a new styling that kind of happened on my buttons which is kind of cool um obviously my fonts aren't there because I need to register my fonts uh as well but let's see if my theming works there's a few Oddities here with the the app it looks like for some reason my touch events aren't working so some things there that's for sure but that's pretty cool that like it seems to have uh worked to some extent um oh did they break did it break oh someone reported a bug or something on that um and I just tested it it seemed maybe they fixed it something something's broken here and whatever whatever I did uh done at six they worked gotcha they'll fix it they'll fix it my computer is struggling a little bit over here I need that time for a new computer okay all right now comes a real question is uh did it do the uh it did not so the the the images so so that's a great question Billy is that it didn't do you know didn't put any of my fonts it put this already existed right there's already a resource folder with fonts here but you know it didn't know to come in and configure fonts for example right so this was still using these assembly export fonts but they don't seem to work anymore because they just don't because you need to use the new ones the dependency Injection Service all that other stuff seemed to work which is good so query properties navigating around that all seemed to work in general and then of course I think if we redeploy let's see if the let's see if the this stuff works in general with the the new 1.9 version of sqlite dashnet open hoping and praying basically I think there was an issue where it wasn't installing the the raw underneath the thing there did I do the property conversion no yep so that'd be the next thing but I'm gonna kinda here's the thing is everything I just did I'm gonna get rid of see if the databases work I still break somewhere might be something else let me see foreign more time so Clifford he was in the chat says my plan is to file new with Maui single project and slowly copy things over so here's the thing so far yes that's definitely my plan as well but also no at the same time if that makes if that makes sense I didn't even get here oh uh something else must be null maybe the injection stuff didn't work or something else I don't know but we'll figure it out so the next step here is this I don't like that I don't have all the new single project I don't know bunch of new stuff so Clifford here is right so the next thing actually to do here in the conversion is what the important part that happened here is that it gave us infrastructure right it gave us the updates to our app shell to our resources it it handled all the conversions of the name spaces and all the stuff for us automatically so the next thing to actually be done is this is going in and adding a new project and specifically adding a new Maui project so this is what is here I don't want to manually try to update all my name spaces on my other stuff but what I do want to do is do my coffee app Dot it doesn't really it doesn't matter what I call it I'm just going to call it next version right now because I'm going to move stuff over right and I'm going to do down at seven because I still want all of the stuff that I I want and need so this is really the approach that I would take at this point is I think running the tool I don't even know if I would run it on the Android and iOS projects I think I would just run it on the.net standard project right and then what I would do is I would create a new project called vnex and I would start moving stuff over just like y'all are talking about so here for example I would immediately move all my fonts over here I actually don't even need custom font I don't even know why it's there boom I'd probably delete these two that are in here delete just like that move this over make sure those properties are correct these are Maui font just like Billy said and this is the way to do it is go in to your projects and start to delete stuff right this is V Next that's in here the root namespace can just be my coffee app right my coffee app just like that right start to move that stuff over and like I say my coffee app just like that everything else is going to be the same this is all great right so now that we have this all we need to do is go into my main activity and we're going to grab this stuff here copy this and I'm going to put this into my v-necks I'm going to platforms Android I'm going to do Android new class I'm going to say and it's going to be my let's call this toaster let's do one at a time and this would be about platforms then we're gonna move the toaster over Boop just like that cool and then I'm gonna I'm gonna add in okay that's fine there and then I'm gonna add in my new item environment environment again just do that oh that should be in Android yes move that over here again I hope my whole plan here is to get it into a single project right so we're going to move this in here and now what I want to do is do that cool now just like y'all are saying is we want to start moving things in now that we've converted all the namespaces move it all in just Bim move it in move it in move it in move it in move it in just like that done then what you want to do is I just need to update my app so here is my resources so I'm going to take these resources that I have my resource dictionary right boom and I'm going to pull that into my I'm going to create another um style so down here we're going to create another there's a style already but I want to create another item and I'm going to do a resource dictionary we'll call this my style my or coffee app Style what's up okay and I think what you also need to do is you need to put this in there too all right it's a resource dictionary so we want to take all the things that are in here put them in here but then delete this resource dictionary Boop cool then what we want to do is we want to there's an icon there's a feed icon I would say we're going to take our yeah right here this is the IC launcher foreground and yeah we're going to put that into our app icons none we need that we also need I don't think we actually have any we're not using any other icons or other things like that so that's good actually any assets no okay uh main app doesn't do anything so then we just delete this remove boom right then we go into iOS and we do the same thing so we have a app delegate and we have those same items so I have an environment class there is no toaster so that's good so let's just do this go into platforms I go into iOS add new item and say environment oops cool and then get get rid of this weird I don't know I was doing a fat face that in there okay oh and this is a a Microsoft Graphics dot color now actually to platform yeah so it's kind of interesting about this is we probably don't actually need this code anymore because it's all in it's all in um yeah it's all actually in um the community toolkit now I think for setting these graphic colors but there's that so we're gonna get rid of this and as there's nothing else that we need in here so I don't think we need anything like delete it I'm pretty sure yeah um well not this but sorry my IOS app that there's nothing else in here right so I just delete this delete boom okay so it's looking better now what else do I need to do well I need my app map shellin so let's do that so this is looking good let's see if I can just copy and paste this I think right so take this come over here app shell poop there we go delete this main page delete done um let me look at my code behind for the show I have some routes cool I could have just moved these files in too I guess it would have been easier too clean up some of these namespaces that's better oh yeah should be there should be my coffee app yep that should be my coffee app and that here we should add another Style this is the coffee app styles cool all right I guess I could just added them in there you know what I mean too um there's nothing else in there is there anything else in here nope code behind yes we have a few things so we have this package name that we're gonna set and clean up this namespace cool cool I don't know why it doesn't do the better namespaces that's odd I also need to bring in my um nougat packages so we're going to do an item group pulling these items these nuget packages down here again so now it's gonna it's gonna add all this junk in here we don't need that get rid of this and I can just add these I guess I just need these poop go in here done and kind of like Clifford said like I think this is the approach that I want to take because I want to run the tool clean the namespaces do the packages kind of get it in a space that's basically compiling and then what I want to do is actually convert it over to 100 Maui right that's like what I want to do so let's add our Maui toolkit Coco cool I like these on new lines don't don't uh don't get rid of my new lines over here all right let's pull this in so then now we need to do is we need to configure our fonts okay there's a lot of work going through that stuff but like now we're in a better place where if I go to my resources and I go to my fonts we should be able to Now do our fa brands 400 and I think what I called it before if I remember is Fab f-a-s f-a-r okay so then we have this F A Brands f a regular 400 fa solid 900 that should work so configure those that's good that's good that's good and then really what you want to do is if I'm doing this correct is let me look at my app one more time here we have this okay we have all these updates here so this is good let's take this code and shove it in here cool now we're just migrating code over monkey cache the theme and then what you want to do is you want to go into each of these and you want to just clean it up right my visual studio clean up your files so go line by line clean it here we can have it do a it should update to 2.0 but I'm a little scared right now let's have it clean up all the namespaces for the project cuckoo cool the theme whoa what is it how's it red there we go cool that's good platforms let's just make sure again I just kind of go like one line by line here right making sure that like each file is is good to go so I'm just gonna clean that up because I don't want it to be next version that's good there we go okay delete this cool environment that's good already program hey this could be that uh let's do this cool program I don't have the tizen stuff installed but if I did it would work I assume there we go windows now this here I'm going to update the namespace but I also need to update it here there we go that should work that's all good Services again we're just gonna go now what we're going to do is we're delete our dependency Injection Service stuff because we don't want we don't want that anymore right we're also going to add our reference to our coffee app shared there we go cool all right let's make sure that this adds a namespace in there that's good line by line as we go down down the road here internet coffees done cool now there is some Json converting here which I probably wouldn't want to do um and we could update that code as well but that would be on the list of things to do got our toaster we got our view models we'll come back to these puppies this is going to be fun so we go through we start updating this stuff all right we're gonna do this we're gonna leave our query properties on there that's fine look at that we're gonna do this add those in there again we're just going to go ahead and do this perfect and then let's get this so just kind of going through you know what I mean and these ones should all be fine like all this stuff in here from like what we saw but again I'm sort of a I want to go through I don't need any of those any of those things basically and here this is creating creating an internet coffee so we probably actually don't want that so we're going to start to so first clean up the namespaces like we're doing here and get rid of all the xaml compilation stuff because it's just cluttering our code for no reason because it already does it let's add that in there cool same thing just go ahead and clean up the namespaces because really it's about uh wood Global yeah that's next on our list yes yes yes yes yes yes you're reading my mind yes so yeah what I would do is I would do probably well we take a look at our Global usings if we if we want to put them in there I know some people are a fan of them and some people aren't but you know I'm definitely a fan of them yeah you're you're reading my mind Clifford you're reading my mind so let's clean up the app first make it look nice nice and uh cleaned up because half of the battle is like just cleaning the code right it's like I want to use more modern features I want to make sure that my code's a little bit more readable and this is gonna just take me step by step here in this in this process so luckily Visual Studio handles all this for us automatically which is just uh a delight so again we're going to add in our helpers theme is good let's go ahead and add oops I'm going to add a name space there my program boom ah the templates aren't doing the new thing that's cool so now we want to do is this is uh the next step in the process is we have this uh coffee service stuff and this looks good we have our internet coffee service stuff this is also good here what we would want to do is it's just a internet wait what is this thing that I created a static class that's weird um maybe I don't make it static oh I see what I did not interesting is that what I did here why did I do it that way for now ignore that one for now but so here we probably want to do a few things like um we want to inject our coffee service so let's start moving stuff around there we go and we're gonna get rid of the dependency service so at this point I think we're probably done with that one not 100 sure but let's see and then here we would say this dot Copy Service equals Copy Service all right my coffee app we're gonna want to get access again to The Copy Service let's do this uh xamarin did not support X bind um just normal binding this never added support for it there is um compiled bindings and things like that but yeah that's I don't know if they're ever going to do that okay that looks okay all right image cache service all right view model base so the next thing to do is also inject in our view models right like I don't want to actually do this I wanna inject our view models down the line and I'll say binding context so this this is this is how it starts converting it right it's like one at a time it's like make my code look a little bit better like let's you know not set the the bindings here manually um as Alan knows I'm not like uh wasn't a huge dependency injection fan but like now I'm I'm all in you know what I mean like let's let's do it equals VM pass that in Details page this doesn't take stop okay it takes a copy service all right that's cool and then we'll say this Dot let's take Santa coffee service this is taking a view model is there a review model on this thing no that's good okay my coffee view model so we get rid of these here pass it in so again I'm just kind of like this is how I would do it right at this point it's like let's just start to to move these things out and really clean it up let's look at this and then you do a little bit tedious right let's do that do that I gotta sneeze maybe not uh good question you lose the code completion when you move The Binding of the cobine no as long as you have your um your X Cola data type set correctly so as long as you have that in there you're going to be just fine so that that's the thing that you want to set basically that's the compiled Bindings that you want to set on your app basically if that makes sense then here you need to do this for here is you'd also need to do a on each of these I have a coffee right except each of the coffees that are in here so as long as you have that set up the X data types are the compiled bindings then you're totally good to go yep so this one here move this here okay move this in I think I would do a global using for like probably the view models I feel like that's probably in the services maybe in the helpers it's probably enough yeah we're almost there okay again so we got this thing we're gonna get rid of this cool again we're going to pass this in again because I want to use all the new stuff right um that's what we want to do make sure this is coming in image cache get rid of this here so if you were following that that would be you know um let's do a global using actually let's do my ADD new item and then let's do a and my coffeeapp.viewmodels it's probably good clean those up okay cool this is our image cache login page we had a login view model but that's not even here maybe we didn't have one do we not okay that's fine registration oh this was just like a static data right settings page didn't have anything there that's good um so now what we can do is um in our app shell or sorry our Maui program as we can start registering stuff right so we can now come in and say let's hey Julie how's it going Sue builder.services and let's first do our add Singleton and let's add an i I coffee service just like that and then a builder.services.ad Singleton and then I'm gonna do I environment I guess I need to actually pass it a thing which would be a oh I think I can just do yeah I can just do the coffee service and it should figure it out right in that environment yep yep there we go this should be my toast her what I call it toaster okay um I guess I could do Services too right cool so take that out now I do need to do a few other things is I need to paste in a few like blank implementations of this stuff so just get rid of some of this stuff here has a core level because I don't have um toasters and these other applications but it'd be cool to get them working there same thing here I'm going to copy this over here I don't think I really need to do anything here so we're just going to delete this so this code Works funnily enough okay because it is it's on Mac but I don't think I need to do anything for Max let's just delete that for now and then once we have that we move that into ties in move it into Windows Coco cool now everything's going to build up because we just have the same name space same stuff there and then oh yeah it doesn't need to be environment needs to be our my coffeeapp.environment Dot platforms.environment this would be my coffee app Dot platforms dot toaster there we go not need vertical options on toasts you do this one just does like a generic one I would just use the built-in uh the new one basically that's there so then what we end up doing is we need to register our our view models right so builder.services dot uh transient and here we would just do all of our view models pretty much so we have our internet internet view model just like that then we're going to have our add my coffee we're gonna have our my coffee view model our coffee equipment view model our image cache uh view model there you go that's it really and then we're going to add all of our Pages too so we're just going to do our add my coffee page so again we're just going to put these on here could you do a folder like add view model so that'd be cool if if so no I don't know you had to add them all manually what I would probably do is make this an extension method and then put them in a sep separate file that's what we do in the podcast app this would be uh internet let's just align these so internet coffee page add my coffee page my coffee Details page my stored copy page animation page those could be Singletons too it kind of depends coffee equipment page coffee equipment CV page coffee image cache page login page registration page settings page then yeah what we want to do now is go in and say manage new packages let's look what we have a little scared to upgrade my own package so we're not going to do it so then what we do want to do is community took it at mvvm install this puppy boom so this is the manual work right it's kind of like okay we have this stuff working doing the stuff this is good what did I do I break this okay I want to do this yeah it's up to you spoof if you want to do it that way yeah you're totally good to go yeah oh yeah you know you can't really do much in yourself like yeah I'm gonna make sure I like delete this stuff here um yeah these Globs yeah not for the registration system that I've seen at least that would be kind of cool if so um that'd be neat I think what I also want to do here is like it'd be kind of cool if I do uh Resources app icon and then here splash I'm gonna call this a rename coffee splash I'll say rename coffee icon okay and then what I think I want to do here is for the foreground file this would be coffee icon Angie and then oops and then here I'd want to do just kind of jumping around all over the place uh coffee splash.png that should work let's see okay are are the Maui controls all released um they're all released they're all in there they're all in there in V1 um some of them have old renders but most of them have been upgraded to newer renders by now I think yeah I think this is fine um it really depends some people like it like every single different file that's in there you know in general it's a big list but it's not like the worst list in the world so there's that I'm just gonna build or not but we'll see fascinated if I broke everything but what we also want to do now is like now that we have this puppy installed Boom the next logical step is to delete all of our commands all the demand commands delete them and then do a relay command Boop naturally this is like the next evolutionary step here and then probably also do Global usings for those because be like way better I'm dropping some frames yeah yeah it's like this is like the next next level stuff right so let's do all of our commands so there are commands there and I actually want to get rid of this and I just want to do like string title and then bull is busy and then public bull is not busy and do you end this would be fine because this could be our observable object which is coming from yeah I want to get rid of mvvm helpers there we go pretty much get rid of all my libraries um this would be an observable property property this here would be the is busy this would also be public partial class and then this would be also let's do that Coco cool that's good and if I use other things we'll find out that's good cool it needs to be public partial let's get rid of all these things let's do it in our really clean it up let's get rid of mvvm that's fine I guess okay and then yeah we want to delete basically does that generate both of them because that'd be kind of cool if so I think it does that's actually really neat if you just do both of those I'm gonna get rid of this I'm gonna get rid of this um make this a partial get rid of this just really delete the code go through the next one and then you delete this stuff delete all this stuff make this a partial class delete this stuff like we're talking about relay command relay command relay command or relay command done [Music] easy peasy he's peasy coffee equipment again just get rid of this get rid of this command thing get rid of all of our commands hear about this junk get rid of all this junk and then do a public partial class so again this is like this is how I would do it I'll see you Clifford glad you enjoy it I'm gonna try to finish this off and try to run it we'll see that's the that's the that's the the ticket you know what I mean it's the ticket let's see if that works do observable property there we go pretty fresh load more I don't know if I do do that with that I write call clear I probably should have looked at the commands that I was just what are all the commands I just deleted was there a clear command there is a clear command and delay Okay cool so I did have those doesn't hurt to add those on there boom boom boom image cache see we have here so we do we're gonna get rid of those this is just a public property that I call let's see I think this one's probably okay that's kind of funny like I actually need to put this into a he-sync task of refresh long like that do that this is the better way of doing it I really oh great question Billy our relay commands async commands fantastic I'm glad you had that ask that this will just be refresh async uh this will just be a void of refresh so there's no async stuff in there so that's good and actually like I don't know why I do that but I think I can do I'll show you exactly what happens here cool I'll get rid of this then relay command so relay command is the property is the attribute that will automatically Source generate the stuff for us now we do need to make these partial classes because the source code is being generated so uh if I now go into my dependencies and I look at this here oh I didn't even add oh and this is the wrong one if I go into here and I look at my dependencies and I look at my analyzers we're going to see all of these I have some videos on this we have all of our analyzers but specifically we want our mvvm source generators and if we look at the relay command generator um it hasn't generated this stuff for us yet why not uh let's see I need to maybe recompile maybe it's doing the windows one here we go so what it's done is it's generated all these files here right so if we look at that image cash there's two in here there's a refresh and a refresh long now what that attribute does is it says go Implement I relay command and it generates the source code for refresh command and it'll automatically create that relay command for us now if you have a task and it's asynchronous like this one it will Implement an iasync relay command automatically and call it refresh command long and that creates a new async relay command so that all handles it for you automatically so you don't need any of my mvvm stuff at all it's their own implementation that's like super way better basically yeah so what it does is it will it'll take if you look at this it takes the refresh and appends on command so now there is a refresh refresh command generated for us automatically which is pretty cool and the same thing here for this image notice that I'm referencing image here and if I go to definition it's in this Source generated code that automatically handles the Getters and Setters for us automatically which is pretty cool look that's pretty neat and does all the changing and changes and all the stuff for us automatically all there for us which is nice cool it's my favorite thing go watch all my videos on it pretty much okay so the next thing is um I think I've done all this stuff so lots of code cleanup lots of stuff in here uh selected coffee okay it doesn't actually do it I guess if needs to be on its own line I guess it's fascinating let me look at my I thought maybe it would do it but it creates better code for you that's the thing is all their code is super optimized which is rad um so that's my favorite part of all of it I would say okay so I'm gonna build it I'm gonna see what happens okay we don't have a title oh that should be there view model base I'm going to toggle this to oops oops let me close all the stuff current error list should have created it foreign spell it correct okay so let's do this I think now I feel that oh I think I might have oh okay there's a few compilation errors okay see what other errors I have okay select your copy versus selected copy oh I probably have a it does exist hmm okay image is being used as a type let's do a clean over here it is much much cleaner yeah does not exist it exists because it's here some with iOS is being funky that all looks good to me all right now what I think I want to do is a few things I think I want to go in and I think I've officially migrated everything over and what I want to do is take my coffee app and I want to delete it from here because I want to like see the migration in place is it possible to mvvm bind the splashiness at different screens for different occasions hmm I think you do that like manually maybe yeah not positive though it's a good question see if it'll let me delete this stuff try again I might need to close a few things really it won't it doesn't want me to delete the Android folder there you go do it do it just delete a bunch of stuff assumptions like an MS build is hanging on to something or an ADB let's end that task It's usually the case there we go so then we delete that I really just want to delete this one full o it's because I probably have it open in here let's close that really doesn't want me to delete that folder so now I'm gonna move this in here and then rename this here Boop I'll delete that at some point in time when it lets me go in here rename this and then see what I would do is I would like merge it in basically and say okay now we're going to merge an override we've cleaned up we've gotten all of our stuff there we should be in a place now where we're able to open it up in general um yeah I think the splash screen is auto generated you'd have to like basically do [Music] um you would have to um okay so now this is here okay cool I also want to do one more thing let me do this let me close the solution let me go into my coffee app coffee app and then delete this stuff okay it is much cleaner I agree MAV I think that it's the way to go with this stuff in my opinion so that's just a James pinion but yeah to me it's like definitely like the way to just add this up Spruce it up this is nice because now like it's like here's my my project right and here's all my things gonna do everything I need and I have one project one solution although I did get it working um uh that's a good question I don't know ma'am about the activity in the launch screens uh I don't know how it works to be honest with you my assumptions that like that source code is generated so I don't know but you can have your own splash screen I guess like I'm not actually sure how the main activity it is the main launcher so I don't know what they're doing I'd have to look at the code behind there do you think a web Target will be on the Mario road map I mean never say never however cool thanks Billy I hope you have a great meeting you're welcome I'm going to continue I'm gonna try to push through and actually get this thing building let's see if that works or not we'll see um and see what happens um oh I need to also probably had this project reference because I bet it got broken in here now it's this one there we go cool that probably fixed it up well right now you can take Blazer apps and put them into Donna Maui applications that's like one route to like do the Blazer hybrid approach for development and that might be like what you might want to look for in general see this is what I want is I want this basically this action here this build a failed okay broke everything by moving stuff around let's see oh enter okay so this is how come it didn't work oh oops I removed the wrong one there we go that's why that should fix it up so it can't Source generate if like it's not Source generating there we go I think it's good uh I don't know well I mean I think the the team always wants to add more platforms but you know they need to focus they're focusing on what they're doing now but there was a lot of stuff at dot net comp definitely like go go watch and like Spruce yourself up on in general about some of the stuff the team is working on so that's what I would say all right let's have this build let's run another add really quick if it lets me let's try that out oh Adam I mean they make a good good point right um I would say that there is some projects that folks are working on in the community like we and stuff like that but no I mean I think I'm I mean people always want so much stuff but it's always like what happens when you take this optimized app that doesn't have any of the some of the different things and move it to web but it's an interesting question at the end of the day um I mean people ask for that for xamarin forms for a long time too and right there was some great libraries that did it but yeah no I agree if you don't want to go from web to to that um over but yeah that's it's a good it's a valid point I would say all right we're missing a Setter what am I oh probably need a default of 40 Maybe I didn't add a default there that's kind of interesting that it ran before but it didn't run oh because it didn't do windows that's why awesome have a great lunch yes go off it's coming along and I'll commit this code into the source code repo so it's happening it's happening I'm actually kind of curious if I can run it on Windows and to see if it works let's see where we're at I don't know I have to imagine there's a bunch of stuff that's like not right but I don't know that's not good I probably missed something let's try Android and let's see what happens there which one do I have open none of them let's try this one out it's coming along slow but sure in fact you're really not that bad I mean we only spent like two hours so far and if that's the case I'm pretty happy with it so here's our source generators did it generate all this stuff it did there's all of our source generated stuff that's there so that's pretty cool I'm so nervous so nervous oh you know what I'm also interested in I'm also interested in if I didn't move over I should have deleted everything yet I think I'm missing my app shell stuff yeah this stuff here but it should use the new one so I'm kind of interested oh no I did move that over okay I'm sure I did move that stuff over these resources and then the real question is is there like they have all these base Target types I'm curious if they have what they have for the shell okay so they just have like a normal one that's good okay maybe I'll try a different emulator this one seems to be broken let's try this out again this one seems to be working so that's good so then we probably want to delete this cuckoo cool I'm so curious I'm so curious curious I'm worried I'm all the things well there's more code to clean up that's good it's compiling the question is did I register all the things I need to register and put things all in the right place that's the that's the question at the end of the day and I don't know I don't know I think so I want to say yes but I don't know okay it's got an APK I was just gonna crash like Windows I don't know I don't know what happened on the Windows one I'm really curious to see what the crash was but if I can get it running on Android it's like I knew at least ran there previously oh we got a splash screen our icon nice that's cool Auto Magic question is this gonna work or not I don't know I don't know Scrolls hey you it did oh and I didn't move over one of the images okay cool whoa dope all right that's cool nice Okay um Let's uh double check that image because I did have a did I have an image I guess I added it where coffee bag so let's go ahead and put that in there resources images add existing item I've heard of this needs to be a Maui image right it does added okay cool so I just worked oh my gosh oh and there's the icon so the PNG just works if you have the PNG set up that's going to really simplify your life basically if you already were applying the newer Concepts over to it so this is a neat oh my gosh and the nice thing is if you keep all of your package names and all your stuff the same you'd be able to upgrade and migrate your application you know your users would be able to without you know a hitch basically but if you end up looking them I get changes now what we end up seeing is it's I didn't add anything new I deleted the iOS and the Android bits right but I leave all the other things the same so that's kind of nice and these we probably don't even need still building still building okay oops now oh it's not applying okay and I think our our icons were working too because I configured them in the the Maui program right there bam squeaky would be proud I think I think squeaky would be proud now the real the real gotcha is if the Windows app will work because that would be neat if it did and I got a free platform there's our coffee bag so a few a few things our grids no longer have um little things on us there's a few gotchas in here probably this image this this isn't working um I wonder if the database is broken wait why is it broken okay unable to resolve I coffee service so I think I did it wrong oh I did do this wrong this needs to be high coffee service like that and then this needs to be eye environment and I I toast her there we go that that's what happened there so I was like I need I didn't register the interface is correct I just registered the classes that's not what I wanted very clear good I mean I don't know how clear it was I would say it's a journey and I didn't want to just make a video because I'm like well it's not going to be clean right it's not going to be the simplest thing in the world probably but all right that's good let's get my coffee is all right add Maui is The Roaster save it all right we got a database entry yes image caching it didn't seem to work all right well to look into that and see what's up there it's interesting I wonder if it didn't generate the image correct I was doing some weird image caching hacks oh I wonder if I am putting that in the view model correct hmm oh I don't think I can hot reload that accordingly no and then it does look like I okay that should be there probably partial class definitely should be there foreign generating correctly it should be it's odd because that obviously worked there analyzers for some reason the says that this isn't generating files but it clearly is because none of the other stuff would work if it didn't yeah that's obviously wrong because it is generating properties and doing things I don't know what's up with that what's up with that what's up with that all right there we go boom cool it did do it nice animations are working cool settings now we have the other themes this isn't working still so I'll have to figure that out cool that's great I mean all the navigation all the stuff is in there moving around nice Okay cool so there's that aspect of it and then beyond that I was just an image just an image that's an image uh cache so I saw like reload caches on images this is from like a camera basically but there is a bunch of um you know libraries out there and code that you can grab to display videos and whatnot so uh okay I think that is most of it let's see the windows one and what's up with that what's up with that I wonder if I broke I think in Windows I think what I need to look at is really quick foreign so I think what I want to look at is um if there's anything that has next version in it ha uh yeah so you want to see here's the issue is you want to replace it with the next version dot with nothing oop replace so that's sort of my because we changed the name of it and whatnot you're going to want to change that so that should hopefully fix this up because I couldn't find the dll if so that'd be amazing nope let me do a clean and a rebuild Maybe I feel like I messed that up somehow I don't know why what I did you know I'm assuming it probably didn't even rebuild it in general another thing I can think of is if I go to platforms Windows is this correct is correct not sure we all fine because it fills it all in huh let's see how rebuild I'm definitely not as scared or worried as I was earlier basically for the upgrade stuff um because that definitely worked really really really really really good what is going on here okay let's let's open this oven let's see if I can foreign I'd like to figure this out if that's a possibility that'd be pretty neat because I don't know what is going on with it I actually have it here win32 exception a win32 exception you say oh that's how I'm looking like it's gonna do anything hmm let me try to maybe it'll just crash and give me some output it definitely is installed and that stuff isn't going to help me really I can think of is if I uninstall it locally let's try that maybe the installed version is like referencing the old XE let's try that out hmm it's installed on my machine I don't know what why is it doing that and it doesn't really give me any oh warning okay um it's just a warning it really does it's like it doesn't even give me any yeah that's you read in my mind um probably sad but true but you could I could just delete the individual Windows ones here and let me uninstall that that's I'm gonna really try to close it out it could just be like yeah holding on to something that really does not want to delete whatever's in there come on something is like being held on to I don't think so um oh I wonder if it's this is always the the fun this is like where I like reboot my machine like reboot the machine and then like it could be trying to still no see if I go into it one more time my assumption is it's not it hasn't didn't update the so they could do this I want it won't I won't let me delete the stuff inside of it but not oh now it deletes silly okay look at the let me look at the obj okay let's try to open it one more time oh so Andres says there's so much when I made the Couture and turn on the I can't Corinthians yeah but it ran on it ran on Android though you know what I mean so that would be of Interest as to fine was It On All or was it just on that one you know what I mean they're gonna like have to redo all the stuff and down bring down all the stuff and whatnot there but this is the one thing I'm maybe have to ask somebody about I don't know whereas like something isn't supported that doesn't make any sense foreign we're gonna see we're gonna see what happens we just want to go else so I'm gonna go maybe have lunch and then figure out what's wrong I'll make this command and then if I have to make more commensal I'll do it but come on Windows the only thing I can think of is I change the namespace as a bunch you know what I mean and then that could have messed something up potentially whoa if I accidentally deleted something else let me double check something here like the only thing I could think of is I definitely just messed something else up somehow like I accidentally changed some file or did a thing I can't imagine I did it that though let's look that looks correct this is the one thing I'm really not sure what I did or why it won't work I'm like the debugger won't attach to it so like the question is does it did it even get to oh I actually want to get rid of all this stuff and oh I could have I could have died here that's interesting too it's like that's not the right way to do it obviously so I'm also kind of curious like oh there's other cleanup I need down here right so there's this like toaster so I probably need to get rid of this but it should it's like this should be correct this I don't know this is even gonna work this theme thing this actually should have been okay but be almost all my dependency service calls I can't imagine that being it yeah so Android works fine but Windows does not but I don't know if I broke something or something else happened hmm I gotta deploy successful oh okay so we get in here okay so let's we're actually debugging it I didn't change the Cs barrage so we build it up okay so then the question becomes do we get the do we get this stuff do we get this stuff ooh I wonder if my Barrel okay just some Something's Gotta hit we route okay so the real question becomes if we do there's got to be something that I did um let's do this when in doubt comment everything out and then we should just get like a blank page that's what yeah the the Cs project setting seems fine so it's like it's running it's something isn't opening correctly and the real question is is it me or is it someone else that's the question and then I think the question ends up becoming is it is it is it something that I have in the Shell right like do I have something else in here that's not correct it's a good question oops because like is it is it me uh the problem is it's not running on Windows and I'm wondering if it's me or if it's someone else because we do initialize we like never get we get our routing and then is it me is it a resource thing you know what I mean um because I never ran it on windows before if that makes sense so is something wrong here in my in my resources because that could be an issue too like maybe I was parsing the resources and it's like nah oh this is better okay window background color oh well yeah that makes sense because I just commented those all out let's do let's do this so it did parse this let's go into my styles these are all just colors right as normal colors I just want to see if there's something like is breaking it here you know what I mean these all should be fine like is there some other odd thing what's going on um Eugene that looks like it's something with your iOS configuration stuff maybe possibly foreign I should just get a blank let me try something I am curious if it's like something with this theme so what if I put this in colors and then just don't include this file I was kind of missing other resources but they shouldn't be there yet let me get rid of that I feel like it's not me I feel like it's something else I don't know what it is let's remove these routes because now the shell is doing nothing I'm not loading anything so it shouldn't have a pro shouldn't have a problem hmm I don't think so they can think of is if the monkey cash stuff that should work just fine but let's updated just in case uh well watches I mean well the thing is Billy I never had a Windows app before so actually I don't I don't know if something else is is there right I only had it on IOS and Android so that's the tricky part huh oh that's interesting as well oh that's funny so if I upgrade that that gets rid of that and then I would need to foreign I looked in the debug app but I didn't there was nothing there but now I've now gone down and messed up a bunch of stuff let me see okay okay ah I don't know how to do it all right Do It cast it to T I think that's how I maybe do it uh uh I didn't see anything yeah and this is the only thing I could think of is like unless the what's the well we were using that old one I mean maybe I changed something in a newer version but I don't think so no it's just like crashes the only thing that's in here is nothing so it wasn't that and what we end up seeing is that it does come into the app shell and it does hit a breakpoint so the app is loading correctly new app shell okay this is going to go a little bit further this is good app metadata provider what's that there's my call stack foreign no call stack and eventually just crashes I'm assuming it's in like some infinite Loop of Oddity let me see let me just double check that this runs as well or something else broken because it's odd it like gets in there it gets down in there we did all the stuff [Music] oh okay so it's doing okay well I never worked on windows before but I feel like there's something wrong that I did as this works okay so that does work so that's good hmm I don't know what it is yeah there's not a lot of uh it's like whatever this um I hope they have someone on the team to like debug it because I'm like I don't know what's happening here foreign debugger you won't attach maybe if I turn off just in time just my code that's something I could think of is like [Music] ah here we go here we go people um okay so something happened here the main object reference show call stack shell item let me try something let me put in a let's try something here let's try it out let's put in a uh add new item and let's add a okay I'm just gonna give this a good old try let's do okay let's just give it something to load it'd be cool to see uh open it on Mac and see if it launches on Mac that would be another thing to try out that's for sure it gets here okay all right all right we got something we got a page we got a page loading people all right we got something happening okay okay let's put back in our routes I don't know what happened um odd okay so let us let's just put this back in and just launch this and see what happens yeah okay let's see if these we'll get a duplicate key most likely now so hold on okay that's still worked okay okay let's move these back out it's like me unless there's like the only thing I can think of is like I don't know what I can think of I don't even know does it crash no okay this is fine okay so we're at a pretty good state so now the question is if I hide this let's minimize this let's put in put in one piece of fly out item okay okay that should I don't have any renders no I don't think so and well the platform interface I know they're in there now well now it's running right so now it's like oh okay wait what's going on here okay so now we have this page and this page equipment all right well some something is wrong in here um well the images aren't working but we have tabs in here tab once tab two John thank you for the uh sub okay so then what you do is you move this you move this around remove this here and you say okay what did I do wrong in life I don't know I really don't know they're both there well the uh those are loading now okay these aren't loading for some reason I don't know why but this is loading so that's good okay and then what you do is you just go all in and you say okay let's just run it and see what happens now because now everything's running why doesn't make any sense are you crash nope okay cool so then that's a Oddity there's some weird stuff happening but it's here it's happening it's all happening okay so then we say what happens if we take this away Nick thank you for the subscription so so now let's see what happens here so now it's working these aren't working for some reason I don't know why um I don't know what's up with that okay so these are these are working all right let me okay the only thing I can think of is I wonder if this login page has something to do with it because this user just be hanging out right right here the shell item what if this breaks it can't break because there's not it broken before because there was nothing there no this is where we're fine what ah okay so that's okay interesting so whatever this is data template login page interesting where's my login page at so something's up with that some is up with that I do not know so I'm weird Okay so that's good to know it must have been I must have something to do with that where something must have changed okay cool I wonder if I put these resources back okay so now we're good again except for all these things are being weird it's not loading the coffee oddly enough for some reason we'll look at that later but let's put back in this and see if this will light up my styles on my app should yeah there we go those those don't work that's great there's some odd stuff going on but let's let's run it on Android let's see I don't know I've I'm puzzled but all I know is it seems to be work seems to be working my friends so let's see if it'll run on Android and then we're gonna call it a day I don't know what happened that's wild that is a wild it was this this is this is the problem this login page thing so whatever this was was causing an issue for it um so there must be some Oddity with that where you can't add a shell item in top inside of it must have been some breaking change obviously but maybe it never worked because I never ran it on windows so I don't know it's good ready to do this convert update to.net Maui system Json community mvvm community toolkit so much more okay okay oh that must be something let's see that's oh I must um you do a clean maybe it didn't get like the new packages the odd if so it's there the the monkey cash version 2.0 does do that it changes it to that and then upgraded that code as well okey-doke future fingers crossed here yeah we updated there's only a few places that it had that stuff which is pretty much in my internet coffee stuff so I updated this here but this should still work as is I think hmm it's like I fixed iOS and then I break Android that'd be hilarious that should work I think it should but I don't know why it doesn't there we go yay it works I don't know why this isn't working on iOS but I need to I need to figure that out I guess that'll be the next step and why these icons weren't working and why the touch stuff doesn't work we did it we did it all right I gotta go this is too much I'm gonna commit these changes I'm gonna send in the pull request down the wire thanks everyone for hanging out that's wild thanks for hanging out and um yeah I'm gonna push this code up I'm gonna open the pr oh I only committed one file there we go pushing it live thanks for hanging out thanks for being subscribers members all the things super appreciative of it I'm gonna Now log in to git because I'm apparently not logged in I'm going to push the code as I do always I don't know if I'll come back and do any more live streams this year but maybe we'll see make sure you subscribe if you haven't yet to the channel and I'll be around this is fun it's fun this is good stuff all right it's going live right now mission successful I'll tweet it out thanks everyone thanks for being a member of subscribers all the things this is fun this is fun I'll check y'all later bye-bye [Music]
Info
Channel: James Montemagno
Views: 17,731
Rating: undefined out of 5
Keywords: .net, .net 6, .net maui, blazor, c#, james montemagno, maui tutorial, web assembly, web development, wordle, xamarin, xamarin.forms, conference app, dotnet maui, app building, migrating, xamarin forms, dotnet maui migration, migrating xamarin.forms, migrating xamarin forms
Id: EXmSmv5ifkk
Channel Id: undefined
Length: 205min 58sec (12358 seconds)
Published: Fri Dec 02 2022
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.