ASP.NET Community Standup - Contributing to ASP.NET Core

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
[Music] do [Music] [Music] [Music] [Applause] [Music] and hello welcome to the asp.net community stand-up i am quite excited about the show there was quite a lot of excitement in the pre-game as we were getting all set up so this is going to be a ton of fun i am john galloway i'm a pm on the.net community team and today we have with us sofia abdullah david fowler and damian edwards can you folks introduce yourselves very quickly for people who are new i'm vivid i am new here i'm here i'm a developer on asp.net core remember that developer architect person what do y'all do oh i'm uh hi i'm damian and i'm a pm architect on asp.net core which is just a title that we made up basically uh i am sofia and i am actually a developer on asp.net core yeah type on my keyboard a lot very nice all right well today is exciting because by popular demand today we're going to be talking about how people actually contribute to asp.net core and we're going to talk through what people on the team do how you set up a computer uh for instance in the hypothetical case of if you destroy your computer how you rebuild that computer and get it set up like maybe david would have some ideas on that i don't know maybe that's something that david might be able to talk about with some recent experience not sure mike if you're still working actually um yeah so we'll talk through that workflow and uh but first as always because we do i'm going to start with some community links i still need to get that song set up where's the audio john loves community john loves is there it is okay i'm sharing them here here's how i share these are all links that we are sharing today okay cool wonderful and i'll find this okay here we go first of all couple on microsoft graph um so this is from damian bowden and he's talking through um some cool stuff with creating teams links from an asp.net core application so as he always does this this post is complete with a lot of code he talks through all the configuration one of the neat things here is when when you're set up using um when you're hosting an azure and you're using microsoft identity web some of the graph things just kind of automatically work so here he talks through kind of the setup with graph and he talks about you know the packages to bring in and stuff and then there's decent amount of code you have to configure all the you know all the goods and make sure that's all happy but once you're there you can actually just programmatically go through and configure a meeting so this looks pretty neat i can see uh setting up some internal things and bombarding you all with meeting requests on teams and the cool ending result is this here so here he's got a cool you know form and then go through and create the create the team's meeting so it's pretty neat that's pretty cool yeah it's you know like there's always like a hump with me for graph like there's a decent amount of like you got to set everything up you guys yep yeah but then once you got it configured you're like whoa it actually worked that's amazing you know and there is some pretty cool stuff going on with azure recently as far as authentication between services more and things more and more things just kind of automatically authenticate uh which is pretty nice all right here's another one this is from justin u and this is using uh microsoft graph from blazer webassembly and azure static web apps so the neat thing there is this is a static web app this could be hosted it's just static application could be in github pages or cloudflare or whatever um so here this is uh this is talking about you know handling all the authentication doing all the the same sort of configuration things um and configuring across their graph so and of course like the the magic stuff that makes this work again is the aad configuration that's where kind of like so your application just needs to say talk to graph and it kind of handles that stuff so anyways there's that uh okay here's a few cool ones andrew luck is doing a walkthrough on new things in net six and so the first one here is configuration manager john i just have to jump in so people are complaining they can't see fowler in the bottom left of the screen because they are very nice because that link retires and i was like this is crazy you know there it is it's frustrating i gotta tell you yeah those things i wish it's like we don't have control this is one of the few things we don't have control of with steam yard and and i said steam yard i mean stream yard but they should automatically move stuff when you got a banner so but yeah now we can see the guy at the bottom [Laughter] um yeah and one neat thing though that i can do is i can move myself around which is kind of fun uh there's no key code that's another problem but it still all works um okay so configuration manager so here andrew talks through uh how configuration manager works and comparing it to um configuration builder so honestly this one i any thoughts on this any kind of high level tldr on configuration manager because yeah so so we added this because of the other new hosting modeling.net six and the intent was we needed something that could both read read and add config add config sources and read config sources as they were being built uh and it kind of merges of being able to read and you take and pick at the same time um there are some providers like key vault who need a connection string from config to configure itself for more configuration and this helps that search and so you can kind of put in the first um the constraint the key vault can come from configuration from from your environment variables and then you can add more config via key vault on the same builder um before you had to build the configuration halfway and and and you can add a half a half bill config this one does the same thing but but it makes it a more first-class api and it's cheaper to do so okay that totally makes sense i've definitely run into that with some things where it's like the way you configure yeah you have you need the configuration to connect to one thing before you can connect in the next inception so you build a configuration before you're done building the configuration tab so you can finish it awesome okay cool this totally makes sense so with that background in mind i will reread this and there now it's clear what this is saying i just i i didn't connect that so very cool um so that is number one and i'm happy there's a series here here he's also looking at web application builder and comparing that to generic host so again this is one i pulled up this morning these are on my reading list and i have not read through this in depth um this is a good one yeah okay give me give me the tldr again it's basically comparing what we did from asp.net core 1.0 to no and all the changes from you know having the host having your app have all the configurations to having these helpful methods um to adding the generic hosts in three point x and five point x and then now the new host it it's funny i guess we kind of went in a circle where we had a ton of code then less code then less code but still too much code and then we have like the the least code i think it's like we served you a deconstructed latte in the first round i gave you all the was like over time you were like you know what people are complaining that they have to make their own latte maybe we should just give you a latte i thought we did it from the right and because i mean i think we were so obsessed in the beginning that we we didn't want to fall into the trap that retrospectively we felt we had fallen into with some other parts of asp.net where as um edm's changed over time in the industry and people wanted more control over certain things or whatever it might be we had a ball of mud in a lot of ways and it was impossible to pull that ball of mud apart back into like water and dirt and whatever else you needed um with asp.net and so we really like worked incredibly hard to create all these beautiful layers and have like things depend on each other in the right order and this is basically what we talked about i think with steph and john on the show so it'd be good for folks to read this who perhaps don't like sitting through an hour of me talking um this goes through it with accuracy because it actually shows rather than me just talking about it um you know so yeah it's it's we did kind of come full circle but in doing so we because we did in the order we did i think we ended up with a much better result than if we tried to do it up front and to damien's credit like remember in net 2.1 and two he was adamant that we had the create default builder because in one point oh startup was insanely huge right yeah it was like every computer was added everything was explicit we were like pay for play everything has to be there in your face and it got easier as time went by um and i think we're in a better place now because we actually did that whole end-to-end journey so you can start from a full thing clear things out add more things i think and if you think about aspirin out full framework you couldn't really turn things off super easily right um so i think the model we had where we started with nothing and then and then we had this kind of helper to add default things that helped us let you we design a system where you can actually start with defaults and then clear defaults so you don't have to kind of have everything on by default the whole time yeah yeah that was one of the rare cases where you and i just like before the show today where you and i we have a great point and i never have in asp.net core two and you didn't agree so much with me that i literally had to write the code yeah i think i called it the demon functionally and it was like like you had the fowler template which was the empty web template oh yeah and this was the damian function the web host class um with the create def default builder and i wrote that class including the first versions of map get and whatnot um and as you said we've kind of come full circle now it just takes time sometimes well and and one nice thing with this is that you work you see what people use and what connects with people too exactly you you have it you have it here's what i think and here's what looks nice in the code and then you see the community like uses or doesn't use things or gets confused by things you wouldn't expect yeah and then be able to kind of iterate that's a good point though like i think also at the beginning we were kind of hesitant to try things and like give them to them put them in the product and then see how they go let them go out into the big great world like you you're kind of scared of making a mistake right we've got millions of users and obviously a fairly major platform in our industry and it took us a while to build up the courage in some ways like the product courage and the institutional acceptance to say we're going to try this we have good reasoning we believe as to why we want to do it this way we may not all agree on the team but we agree that this is worth trying and given the nature of the product now where we can make changes and do so in a fairly safe way modular the normal things that are difficult to do in dot-net um we we do that from release to release we will make changes that can be bold if i might use that word um and potentially um not land well with a bunch of folks initially but i wanted to try that out what's that disruptive you mean yeah i'm trying to choose my words carefully um and and then if it does if it you know if we decide ultimately that it really didn't work we can change it back right we're not completely concrete we can actually make changes and let things evolve but i think if we don't do it that way it's very difficult for us to to innovate it's very difficult for us to try things um just due to the nature of like how preview software works it's very difficult to get people i mean it's hard to a b test with something like net right you can do it in visual studio it's very hard to do it in in.net so there's some questions of chat and this is from a um from a you know full framework point of view but kind of this big fundamental thing is in in previous with full framework you had web config web config which is an xml file and it's very much you're just listing here's what i want but you really don't have control and you don't have logic to be able to get in and say if i'm in development then use this or whatever right so so i think as david answered in the chat but like web.config there's there are still occasional times where it's pulled in to configure iis but as far as the asp.net application all the configuration happens in the in the builders right and i think this thing even this code sample right here as i remember this is no longer required right this happens right automatically now yep that's right so the the is thing is interesting so acemicore is a bit unique compared to other frameworks and now we we love windows so our stack works with ios by default so even though you have this super lightweight function that the create default builder thing um we still configure the the whole thing for for is for castro for other servers by default um so when you run this on i it actually works um out of the box without more configuration i think the question the question is around before we had one config file web config for both app configuration and for ios configuration and for the favorite itself on asp.net core that that config is split so app configuration is is from app settings or environment variables or other config sources that may may be configured in the application but config is purely for for ios configuration so if you want to configure modules or handlers or any is specific setting then you can then you can use web config but for other app settings level things those go into the apps json and it's important because it's network doesn't just run doesn't just run on ios anymore it runs on other servers it can run on on linux where you don't have ios so we we didn't want the config coupled to that that that asset all right when you publish an application i believe you do get web config by default in the output folder not anymore we changed it so we changed it so that you do if you publish on windows so i see red runtime id either implied or specified is windows we publish a web.config it used to be true that no matter what you published for we just gave you a web conference yes we changed that very recently i can't be interested i don't know if it was not nes6 or 5 but i remember making that fix not that long ago so now if you publish on linux you don't see this file in your output that has nothing to do with running on linux got it makes sense yeah cool cool all right is that also true for the sp module and skip it [Laughter] um here's a couple on uh general streaming stuff so jurgen who by the way had a really cool book that i'm still reading through on uh configuring asp.net 5 and a lot of like like down deep kind of configuration stuff but this is on async streaming using i async enumerable so that's really handy for you know streaming large amounts of data um so and there's another recent post i featured that showed some kind of like benchmarks with this and showing specifically how this enables just streaming it's nice because i've seen over time people have written things to do this sort of thing and it's a lot of code in here it's just kind of enabled um so i've always found the overload of the word streaming and net and unfortunate like every time i hear the word streaming in this context i still think of like oh dot net streams but outside of net the word stream typically means this type that's the generically oh you're streaming data right i don't know i've always found that unfortunate in our ecosystem that we it's just an unfortunate kind of overload we'll support streaming but we have a stream that's right and this feature is really interesting because it's very specific right people think it is service and events or some other kind of streaming what it really is is a very specific feature around you can stream arrays to the client and if the client supports uh reading streams on the flight so reading parsing adjacent array as a incoming stream and not as a big single array object then you can actually stream on both sides on client server so there was a recent post that i featured that showed this using json ld which is line delimited json and that's that's what works with that because then each otherwise you need the entire json file to parse it right yeah right you're able to do that so right this is pretty handy one other neat thing i want to call out is that he's using um gen fu which is just a pretty handy like for mock data it's really neat it handles things like generating names or you give it some general kind of information it just will create as much mock data as you want so i've um it's it's a and it's been around for a while but it's just very handy if you're like i don't care i just want a thousand people with phone numbers that'll just create those for you so kind of neat um so this is a short one this is on websocket perm per message compression in asp.net core six um and what he's talking about first is that he uh had first written something he said a hacky way to get this going himself and he's happy that now it's just supported um so talks about configuring that and then also overriding that for per message so this is actually a third-party contribution this whole thing is done by someone by the camera name though but by contributor actually a really hard thing to implement and i think we actually had to make changes to deflate the actual deflate algorithm um which i think we get from intel or something anyway yeah that the whole thing has to change to make it work wow it was impressive super impressive feature being added so what what's a high level why would you want per message com compression it's part of the website at spec you can do it for message compression and the reason it's permissive is because there's a security issue with with compression and https so you don't want to you don't want to sense you don't want to compress thing messages that have secrets in them because of the crime and breach i think are the two names isn't it you don't want to encrypt things that have user echoed encrypt i'm sorry compress things compress user data in them so there's like a line can affect the compressed data because then over time you can't curve it's the same problem as https yeah yeah it's the same the same issue right yeah yeah and so that's why i think in don't five or maybe three one three or one we we added the uh a new feature in the features collection to uh to indicate whether you want to enable compression for the compression middleware um over hbs at the request level so because it's off by default because of these issues but you can say no i know for example this view has no data in it no text whatsoever that is echoing back something the user could have typed in and thus it's okay to enable compression um but you kind of have to do that manually we don't have a declaration for it you can't just say like make this whole folder like that but no one has asked for it so we haven't bothered there's a lot of ways we could make it better but no one has asked so got it okay cool um let me see this is funny because uh there's a question in the chat is it possible to upgrade from something to something and david says you can upgrade anything to anything as part of that here's his uh migration guide so david apologies i just grabbed a few of your gists that you have tweeted recently uh these are awesome yeah so this is this whole kind of migration walkthrough um yeah we always we always have like there's official docs which like are maintained and you know argued over by content editors and and things and um but but as you're going you're just kind of writing this up so these are kind of your i would call these like your notes as your yeah right so essentially we have to generate content for for doctors to kind of put into the docs format and and overall um docs page so this is essentially why i give the lock scheme uh really cool this is the actual content we want to put in the migration guide for instrument six baseband coresight so and this is just like how do we get all the data in one place so we can actually say like here's the content let's figure out how to actually put it into the real document as official and whatever we have to thank safiya safiya called you out completely and then you felt totally blessed and you went off and it's incredibly well done too my brain dumps have no formatting they're literally just like no carriage returns i just keep typing you actually put effort because i i get analysis paralysis whenever i try and do stuff like this these days but you did very well i was right once you start yeah it's easy the hardest part is starting and then structure and then you have to figure out where to put things and that's the worst part so now i gotta look because here we've got here's what's in the dock so i'm sure these are like the dates at the top of that and then how how long ago was this dock written was it is it march march yeah so we haven't updated the migration guide to six since march which is obviously way behind and so yeah we'll we'll get that updated hopefully by the rc2 release which is a another few weeks away and yeah it says preview oh i see it people you know may not think about this but this is part there is a lot going on right now at microsoft as the features kind of harden and you know like the features aren't changing now but the tooling the docs the you know guidance the like we're doing all this work for microsoft learn going through and reviewing things and how are we gonna you know update and so and it it also reflects what's in the templates you know and all that kind of stuff so there's a lot of work that goes into all this stuff to you know trying to get along with yeah yeah and we made some pretty impactful changes this release uh you know the templates and actually leveraging some of the language feeds there were some impactful language features this release and then we actually used them in the templates along with language features from c sharp 9 and nc sharp 8 that we hadn't sort of done the work to bring the content forward and so this is in a way one of those catch-up releases i guess where as you said whether it's templates or docs or learn material or whatever it might be yeah quite a there's a bit of a backlog honestly and we we hope to do a better job moving forward of keeping the stuff more modern when we add features we need to use them so as an example here's this the minimal apis at a glance and also there's tons of information here and we've had several shows on this and you know there's lots of blog posts but you know a lot of time it's great to just read some code and and so i i appreciate this for being able to just kind of read through yeah my goal here was to basically create remember when we learned to code on msdn forever ago yeah you would literally just copy and paste code until it worked so the goal is to give you snippets that you could just copy and paste for specific scenarios acps or or routing or catch all routes or like binding because i think today our dots kind of give you the background and the foreground and the details all at once so the goal here was to give you a kind of at a glance shot of all the features in one file it's like here is how you can use all the features right and the the tlc can kind of help you jump around to like do you want them about routing binding um the host and it will just show you that the things that that you kind of have to know to get things going it's funny like as as one of the um john and i john you might remember we're the old people in the room um back in the beginning of web development when asp was just version one and was still sort of not even out yet um there was a website called asp101.com oh yeah that's where i learned how to write asp and it was as follows sort of saying it was basically the front page was a table of links with uh with columns for like what version or whether what database you're accessing or whatever and then you would just like click or i want to do this thing whether whatever it might be and you would click on it and then there would be a code sample and you would copy and paste it into your asp page and it would work and you would move on with your job and i do i must admit like i think that style still resonates a lot it's so valuable just to have this one long page or one toc where you can just like control f in the browser search in one search term that you're looking for like connection string or whatever that was the other one connection strings that was the website dedicated to getting connection strings if you if anyone remember it's probably still around yeah um and it would you'd pick your database and remember to give you the connection string format and you'd paste that into your audio or ado or radio.net code and then you could connect your database um i still remember that's those sites and like i that's how i learned to code like in the beginning of the internet basically it was on those connectionstreams.com someone when someone from your internal you know i was an internal dev back there and they said can you can you make this thing connect to my excel spreadsheet and you're like i guess let me go and find the connection spring format to do that well and so like of course there's like here yeah this is still here by the way so but there's tons of different things right there's all go db2 or you know text file or oracle the of course the the old one was access right yeah bring back memories here olay bb connecting to exchange 4.0 like i remember all that there anyway we should move on to like something valuable this is very very valuable but we always whenever we're on we just keep talking john kind of wondering yeah well so i just including these mostly for reference but these are um released last week right after our stand up so um this is the overall dot net release post and then here is the whoops i got that twice wonderful um here let's go back and let's he also links over to the asp.net one which is here so we covered a lot of these because we did a blazer stand up last week and a lot of these are blazer specific features but a lot aren't right so there are things in templates minimal apis this was where i read also about the um the default i believe the developer exception page being listed um so a lot of other stuff that also i love seeing and we've done some shows on this recently but things just as far as logging and traceability all this kind of stuff that's kind of under the hood and doesn't get you know it's not like well check it out but it's really useful as you're developing developing apps so yeah so long post and we've already gone kind of long on community links so i will stop talking and turn it over to you folks all right i have a machine set up i actually managed to get my remote desktop working to my other machine and so i'm going to share my screen let me find the right screen it's that one okay let me let me know when it's it's there excellent okay um i will zoom into things as i can this is 4k remote desktop like it's all stuff going on here so i will zoom in in browsers and whatnot as we go um what we wanted to do what i wanted to do was um initially was quickly walk through the steps that um someone needs to do to you know clone the asp.net core repo and get it to build if as a step towards either contributing or perhaps just trying to learn more about how the code works and step through it or even fork it and you know make a different version of one of the assemblies for your own for your own purposes um there are so the first thing we're going to look at is basically there are some docs that help you walk through this i believe safiya had a lot to do with getting these docs updated um and and uh and functional and i leveraged these docs when i had to do this myself a few months ago when i started uh working on a few things again so if you go to the docs folder at the asp.net core repo you'll see that there is a build from source md file right here and if i click on that you'll get this pretty good markdown file that walks you through a whole bunch of of the steps involved it is quite long and so this is not unfortunately one of those repos yet where you can just walk up you know clone and then type build.cmd and you're off to the races i wish it were that easy um but the product is quite uh complex some of the complexities you know just off the top of my head uh we have native code uh you know to do with iis and the asp.net core module that we talked about before um which then flows into other dependencies that we have so that you need to have some c plus plus tools installed um we have java code because we have a java client for signalr so that shows up we have a whole bunch of client web client stuff so node and type script and those type of tool chains also show up as well um but the rest of the code is mostly just manage code the vast majority of it is c sharp but then there's a whole bunch of custom stuff as well so these aren't they don't look like your typical net projects there's a lot of customization that's gone on with regards to like where the assets get produced they don't go into a bin folder they go into a central location underneath um the repo artifacts artifacts um they we we don't use the installed version.net core or net like it is a hive a private hive that is installed underneath the repo path and you have to activate that hive when you're in there in order for things to work correctly and then depending on what subsystem of asp.net you're particularly interested in um there may be quirks or caveats for those like templates for example have their own set of of constructs and configuration and flows and helper scripts and stuff as well and there's another readme to kind of get you going with that so i want to at least get through kind of the beginning and see if we can get a successful build of the repo um in this show and then we can we can talk about and answer questions as we go along so um as i said step zero like getting started you're gonna need git and i already have get on here um and it talks about some of the but it links you to the basics of forking and contributing on github if it's your first time on github um then there's kind of a flow associated with uh working with people's repos on github and then contributing back um shall i fork shall i i probably should shouldn't i i should probably do a fork and do this properly yep yeah we recommend forking okay so i'm gonna hit the big fork button and i'm going to fork it into my account it says it should only take a few seconds ooh challenge accepted see how it goes that happens there it is damien edwards asp.net core it's my personal version of asp.net core i like github for desktop so uh github desktop is a pretty cool uh so i'm going to use it here so i'm going to use the ui yeah it's beautiful cheese beautiful the github tools for vs code are licensed once you get to the point of doing like pull requests and lots of stuff it's just really nice it's a very nice way of seeing all the stuff that's in your machine and it automatically like pings in the background so it knows when there are incoming changes and it has a fairly good rebase ui and et cetera so i and and it makes it very simple to squash commits locally you can literally just like you know control click a bunch of commits and say squash which is very nice and also for cherry picking so there's like lots of different visual tools for git but i i kind of like this one um someone telling me to move to dark mode i explicitly didn't use dark mode because i was presenting it that's okay so let's see if i can find my my fork i might have to refresh because i just created it [Music] and i'm not going to clone to this location because who on earth puts stuff in the the uh the default location i don't and i don't want to do that oh it's refreshing it's taking a very long time there it is beautiful so i'm going to clone it into my local path and i do have very fast internet here so fingers crossed we will not be spending a lot of time waiting for things which is good cloning cloney cloning how big is the repo it's pretty big right it is pretty big we've got quite a few sub modules in it there's like three sub modules that we pull in um obviously lots of sources i'm actually impressed with how fast years did it i was cloning mine earlier and because i have the stream running it took maybe about like three minutes which is okay yeah i'm lucky enough to have gigabit here and it's pretty pretty good gigabit like it's actually gigabit which is nice so i can't say the same for my event but yes lucky you oh i refuse to do anything while streaming it's so slow that's i optimized my setup here for this show so like i am currently on my work desktop which is like an 8th gen intel 8700 it's not like a beast or anything but it's running three screens but this is all running on my personal desktop which is offshore off-camera which is i built this year and it's like incredibly powerful um like if i you know just show you like i have a lot of cause and i have 64 gig of memory like it's it's a pretty good machine and it's an incredibly fast hard drive so hopefully this will be the fastest you can possibly do it and we won't have to wait for things this is something else that's nice about github desktop is like it actually asks you when you fork do you want to set this up for personal like sending back to the parent or you're just going to use it for your own purposes so if i do this i think it'll actually do like the set up the downstream and the origin all that sort of stuff for you aliases correctly um we'll see because it's been a while since i've actually fought anything all right so i've got it here now if i go to the command line i see asp.net core there's my asp.net core beautiful so if we have a quick look at the folder structure here it might actually be easier to look at it on the browser all right as i said before we've got the docs which is going to be a place you'll go for some of those markdown files and whatnot there's this eng folder which uh you'll need to kind of get familiar with as well because this is where a bunch of the scripts are located um in order to do stuff let me pause you familiar with ho so like to be honest that folder is a clone from a thing called arcade our kit is our build engineering ms build that a team there's an entire team of engineers who like who write that stuff i'm making this stuff this stuff is i don't say it's immutable but a lot of it is immutable and shouldn't be changed by a human that's right so when i say familiar you'll need to know it if you want to build the repo because the build file is in this review you're never looking here i know you may not you have a feeling and i think that is that each developer has a fairly you turns out it has a somewhat unique flow that they use but you at least need to build the repo once to get pretty much anything to work properly because of interdependencies between parts of the repo um and fowl is lying if i was like there's the dot shortcut that brings it up and then browser vs code it's pretty good sofia uses that i know and i use it for um finding stuff it's much better than sort of just search so the dot experience which is you know open it in spaces right yeah um is super used like if i hit dot now i just hit dot it's the first time i've ever done it on this fork obviously and it's there it's done it's open right and then i can say hey let's go and find um let's go and find the request delegate factory which is a new type in this release and then usually what i would do oh and look at that it's not working at all did i type it wrong no that's pretty tiny have the sources been loaded it may be taking a little longer i'm going to enable local indexing just to force it because i do use this myself mostly just for searching rather than doing actual work i don't know what it's like for dinner so now it's working i don't know what it's like for doing actual work i can talk a little bit about that later since i've been um doing actual working code spaces and have done some fun stuff with the setup to make it a little bit easier and take off some of the like repetitive tasks that you have to do when you're getting started on a new branch got it nice okay so let's jump back out and we'll actually i'll come back to here i'll go back to my docs i'll load it in a new tab because i just put up the um the code spaces stuff and let's see what the docs says to do next i think i need to admit my sub modules is the next thing is that right yep and i think you want the doc the build from source file for stocks correct docs and i want build from source we'll leave that open so yep i've done my clone and you can see here it says i have to do this i always get this wrong i always type sub module init dash dash update i don't know why i just always get this wrong when i do it so let's do that first it's tough what's that i could use so does the git ui not um bring in sub modules by default when you close it doesn't seem to no recursive clone oh man it doesn't seem to yeah or maybe it does and i just didn't realize maybe i don't know but i've always had to do this on my machines all right so and i have poshkit enabled on this machine so that's what's giving me the git information uh in my terminal here so if i do get status you know i've got nothing it's all up to date and it shows that i'm on main so that's poshkit for those who don't know what it is you can search for poshkit to get this information in your powershell window okay so next i want to build like i got all the code let's go zoom in zoom in on your screen a little bit it's small good uh-uh make it bigger seriously oh wait yeah oh you're delayed okay it looks good yeah that's good so in order to build we have a few dependencies and so if we go back to our uh machine here it says that you want to set up your fork for remote changes this is what github desktop did for me before automatically when i said i intend to use this fork to send changes back up stream so i'm going to skip over this part but this is the typical github for set up the remote origins and whatnot for doing these things i could do a branch i'm not going to branch right now i'm not going to actually make a change so i'm just going to move forward to actually getting this thing to try and build but you can easily create yourself a new branch so on windows this is out of date you actually need visual studio 2022 now 2019 is not supported anymore because dot net 6 requires visual studio 22. i already have visual studio 2022 installed which is the public preview but as i mentioned before there are um certain workloads or components that you need to have enabled in visual studio in order to successfully able to build the asp.net core repo we have a script for that and so this is another time you'll need to dive into the eng repo repo i keep saying repo folder to uh get visual studio set up now if you already have an existing install this should work we made some changes to this recently so let's go and find what happens when i try and actually run this so i'm going to grab this stuff here and i'll paste it in and then i'll edit the bits so i want to use the preview channel and i have enterprise installed so i'm gonna ah it's wrapping you know what's interesting there's actually a better way of doing this now there is in the installer you can actually point to a manifest that's true and this the script supports this um i believe it has an argument for pointing at a manifest yeah documented though update yeah that you can type in here uh as well but that's also not documented but people only really support 2022 now painful it doesn't really matter um if if this doesn't work there's also another argument you can pass to just point it directly at an of visual studio you literally give it the path to where it is and then it will uh launch the installer uh to add the extra bits so let's see what happens i type this it downloads a bootstrapper nice all right okay yep cool and then my hope is that this will point to the existing install which it did so there's the location it says at their 2022 preview and i've already got stuff ticked because that's the stuff i've already got installed if you are doing this on a on an install of visual studio where you don't currently have everything installed then this instead of saying close would say like install okay because i've already got all the components i've already done this step to avoid having uh having to watch download and install visual studio 2022 but this if you're on a machine without visual studio or you're on a machine with visual studio and you don't have all the components this is the step that you'll go through to get visual studio up to date with all the components that you need in order to build so i'm golden says close which means i've already got it all set up uh the way i want cool so that's good now these are the steps for doing it with visual studio yes full visual studio you could also do this using vs code or yeah you can it's a little bit different um and safiya has more experience with that aki have no experience doing that and safiya has done it with ps code you won't build everything i believe if you go that route is that right safiya um no you only build the projects that you are editing that's also the recommended workflow if you're working in visual studio um basically if you know you're working in signal arch just build signalr and its dependencies same for blazer minimal apis um try and avoid building the whole repo um because then you're gonna have a bad time and unless you're damien with a super beefy machine your computer will probably hate you never build a repo i'd say you'll have to build it at least once and the template dock says the same thing is that not true can you get away with never building the entire repo you generally can't so you'll have to restore the entire repo um you don't necessarily have to build it the templates are a little bit different because the dependencies that the templates have are so exhaustive but that's only if you're working in the project templates okay so that makes sense because if you're in the templates that's an app that kind of wants everything because you want the shared framework and all the rest of it and so you kind of have to build the repo at least once to satisfy that dependency yeah but you're saying if i'm in a subsystem like a specific middleware project or something it really only depends on 12 other things and they are easy to build just with the managed tooling okay gotcha yes um so you mentioned restore i think that's the next step right so i need to do my first restore so if we look in the root i believe there's a restore command which there is so i'm just going to do that now one thing is restore without any arguments we'll restore the c plus plus we'll do npm yep java yep native so if you want to skip those it won't do java if it installed it there's no job right oh good that's fixed the purple message that came up said it detected node on my system and so it's going to do node okay it will do an npm install for all of the npm projects which you want um and it will also install the um local version of net that's defined in the global json yeah so that's the thing that we mentioned before is that you know i have net installed if i go to a new tab and say net version i'll just zoom in on this a bit i have the i think this is the version that was released like today or yesterday this is like the rc1 prime i think this is 21463 and it came from visual studio i didn't install it specifically this is the one that just comes from the visual studio preview um we're not using that at all over here um well we won't i haven't gone i haven't got far enough yet we're in the step of restoring and so we're you know we're relying on the internet um and then my machine to do some stuff and then once this is finished uh we'll be in a situation where hopefully we're almost ready to build um the restore step is something that if you're working on the repo frequently you might need to do you know on occasion right because the the script we we update the version of dot net core or the.net sdk for example that the repo depends on and if you don't run restore again you might hit an error because there was a change that the code that you're working on now depends on from the sdk right we basically use the newest version of net to build the newest version of the espinit core like pretty often and we update that version super often see you when you're diving in in our reposes you end up having to run restore to get a new sdk pretty often okay it's weekly we do it very frequently yes we try and do it once a week every monday um so okay okay so i must admit there's been there's plenty of times where i just forget to do this step and then i'll go make some changes i'll run build and it'll fail and then i go oh let me first try to restore because i forgot to do that and then a lot of the time that is what i forgot to do okay so we've got restore now the next thing is the thing that i often forget to do also which is activating this terminal session with the version of.net core that just got installed in a local hive it didn't get installed you know somewhere off on my machine it got installed in here so if i look up here you'll see there's this.net folder and that's where we install this local sdk is that right yes okay and so i need to turn that on and so i have to say dot space and then type uh activate and then you get this kind of dot space dot slash activate dot ps1 and that if you don't invoke it that way i think it actually detects it and it says you can't do that you have to make sure you invoke it with this special leading dot okay this dot source thing so if i do that i get this nice purple um message that says it's been activated now if i type net version in here you'll see i've actually got a different version and see silly me i'm using main what am i doing this in maine for there's no way this is going to work this is on version 7 [Laughter] i literally haven't got maine to work yet anywhere else since we moved to seven but let's find we'll just continue through this um so fun thing is i never use activate personally how do you do it i just i pass to the to the net folder manually what the issue is activate changes your path so i'd need to have two shells just for this session though yeah yeah i prefer just having like not doing that but like you have tabbed terminals now like why why i don't i i personally so two things like i use i use ide to run tests and stuff so i'm hardly i'm hardly on the command line okay to run tests and stuff and when i do i just dot path up to like the folder and do dot net test or whatever isn't there literally a script that launches vs for you with it yeah start via script so what fowler is saying to make sure i understand is you can end up in a flow where you never have to activate because you're choosing not to just run.net from the command line or when you do your happy pathing to this instance um figure out what worked well for you yeah if you're in id for the most part you pretty much can just run tests on dev from nvs and you don't have to go to the command to run test build whatever okay i am not going to start vs just yet i'm going to get a build going first sure that's not i also don't have your crappy machine [Laughter] okay we will however how about we do this john can you put timer on the screen that would be cool i think it's out default there we go all right so i'm gonna i've wrapped it in measure command yep so we'll actually see and because i've piped it to outdefault we'll still see what it's doing um and then it'll give us the total time elapsed uh when we're finished um i'm going to not pass any arguments to build and it's going to build everything except java is that right let's find out i'm i never use built-in there are already bets going down because you can do you can do well i could do no restore because i just did restore right so if you i believe if you run just the build command on its own it should provide you with help instructions that outline all the different flags available and then um there's also a docs page for the build command that talks about i'm pretty sure i just run build i think it just tries to build a default set now doesn't it let's have a look yeah let's find out so here's an example uh build no build native no build manage may be necessary after switching branches so it does take um some arguments that you can give it to constrain what gets built um and i'm pretty sure that by default it doesn't try and build java for example because i don't have the jdm installed on this machine so i'm going to just attempt to do this and i'm going to pass no restore because i've already restored we'll see what happens so okay so it says no default projects were specified so building the managed and native parts all right so this is going to build everything yeah c sharp and old c plus plus i'm building c plus plus is awfully slow but all right our project is smaller so your machine that might be awfully slow it's absolutely crap that's huge that's nuts i will probably hear my fans spin up from the other side of the office so we'll leave this going and we come back to this when it finishes and maybe there are some questions or maybe safio do you want to show or talk about some of the stuff that you were talking about yeah so i think this is a good opportunity for me to talk a little bit about the code spaces setup which ties into the flow that i personally use for working in the asp.net corey bow which is very command line um and editor heavy i use vs code primarily so yeah why don't we give that a stab and we'll see if i can get it all done before finishes it's just challenge okay all right yes i do code in the cloud okay i don't see your desktop yet i'm about to start sharing it it's coming to you cool okay awesome um so first things first in order to use what i'm about to share you do have to have access to the code spaces beta on github however a lot of the principles that i'm going to cover they're also going to apply if you're working with vs code in the command line for both windows mac linux one of the great things i like about um like the vs code cli combo is it's pretty platform agnostic so you can kind of share the same instructions with everybody and it should work for you regardless of whether you're on windows or um if you're like me and you develop primarily on mac um cool so damien was talking a little bit earlier about all of that fanciness that he had to do with cloning and restoring and yeah i'm a busy person i don't have that much time and code space just gives me back that time so um what i actually want to do is i'm going to try and fix the docs page that damien was just showing where we were referencing 2019 when that's not actually the case um and i'm going to actually do it on our release 60 branches to avoid that gnarly issue with um e dot net seven targets so i've switched to the release 60 rc2 branch um in the repo now all i have to do is create a new branch off of this for my changes and i usually do that in the github ui so if you go into github and you switch branches you can create a branch off of the branch that you're currently viewing so let's do sofia slash update docs finished my bill just finished just so everyone knows are you kidding nope okay you've got to share your screen and show us okay i gotta prove it sorry i just i had to interject so i'm like yeah oh it's okay there you go oh there we go share coming up there it is so two minutes and 32 seconds build succeeded and you can see i mean you can't see the full history it did peg the cpu at one point uh but that was a full build from nothing so obviously i paid for the restore at the beginning it took about a minute to run restore and then i did the build no restore so at that point it's all local it's just power of the pc so so if you want me to build you a dev pc just drop me a line and i'm happy i really publish the hardware requirements i don't have anything to build anymore because i finished mine oh sebastian just just uh make me another lemon uh that lemon tart you made me last time that would be wonderful and then i'll give 20 bucks to charity how about that all right give the screen back yeah all right switching over so unfortunately i can't be as impressive as um as damian and show a two-minute build on my beefy machine but i could show you using the cloud to write code so now that i've created my new branch again i'm all in github i've used the github ui to do everything um i'm gonna navigate to this bright green button that beckons me um so clearly and um there's you know the usual tab where it shows you how to clone a repo locally but then there's this code spaces tab if you have that enabled and what that allows you to do is you can create a new code space which is a containerized development environment that's running on the cloud with a vs code ui that's running locally so when i click open in codespaces it's going gonna take a little bit of time to do some of its work the work it's doing here it's like um pulling up a docker image oh my gosh no this is so terrifying i knew this was gonna happen i knew this was gonna happen i was like i'm doing a live demo container builds failed of course it's not even my fault this is so terrifying all right um change of pa plants um instead of creating a code space in a new branch i'm gonna actually show you one on an existing branch that i've been working in so i had to fix a bug recently um as part of rc2 we had a little bit of an issue parsing date time and date time offsets from rep parameters and minimal api so i was working on getting a bug fix app for that i was actually using code spaces to do it so i've got the code space for that already running and i'm going to open that up i hope this one doesn't fail and it's not just like an issue with code spaces in general right now like you know how often does that sir how often do you see failures with code spaces what does that mean to be honest i know no one's gonna believe me but this genuinely the first time it's happened in maybe a month i'm just extremely unlucky um yeah oh well sucks to be me um but cool we'll keep going forward so it's really great it's it's good to understand right and it's not you're not running the service it's not like you you didn't crash anything um and i'm pretty sure if you did run into something like that like try it again um those things are usually generally pretty transient but one of the great things that um this codespaces setup will take care of is it will clone the repo with the sub modules and mount it onto the container that this environment is running in it's going to run the restore script so when you pop into the code space all of your projects have already been restored the local version of net has already been installed and activated so once you get into here pretty much all you need to do is start coding and building so my typical workflow usually consists of running some tests locally on the cli so let me go ahead and run this request delegate can process date times to utc test now note all i'm going to do is i'm going to change directories let me zoom in a little bit i'm going to change directories into my test directory if you're not familiar with running tests in the cli with net um you can use the net test command and then there's a set of filters that you can pass in if you want to narrow to a particular class or method to test so i can filter down to a class that was my bad accidentally pressed enter instead of um paste um now it's going to happen here is it's going to run a re-restore if necessary for the projects that have been changed it's going to build it and then it's going to go ahead and run the actual test within um my repo that's kind of the the dev loop that i tend to have when i'm developing with code spaces i don't run the top level build command i um very rarely run even the build commands within specific projects usually i'm running dot net test which is going to implicitly build the dependencies that i need um and then i'm it's like a very test driven development workflow that i try and go for and when i'm not running actual unit tests one of the things i'll do and this is actually a pretty neat thing to show you is i can actually try and run um some samples so let me go ahead and discard the changes i've made here so in the repo we have quite a few samples for things like minimal apis um and we've got a minimal sample in the http directory so i'm going to change into that really quickly i'm going to run this sample and one of the cool things that you'll get to see here with the sample is that i can actually run um this sample web application inside my container um and then i'll be able to visit it on a publicly available host name so it's all like proxied out for you to be able to view now one thing to know is you might have noticed that builds have been taking a little bit longer for me um certainly a lot longer than damien's beefy machine one thing to know is we are like running in containers here so um we definitely don't have gosh what was it 16 cores 64 gigabytes of ram and what have you um but once your application is running um you can hit open in browser and we'll actually be able to visit the app once it finishes loading so i've hit a 404 because i don't have run anything running on my index page but i can go to hello safiya which is one of my endpoints and i'll get back that plain text response from my sample application so incredible yeah yeah yeah it's pretty neat this works yes it works wow um so i think that one one of the key takeaways i have is um really when people like try and go through the repo i think the most important thing to know is clone with sub modules and restore and then when um building can kind of be a scary thing but i kind of try and focus on like the one thing that's going to help help set me up for like a successful dev loop so maybe it's running a sample maybe it's running a unit test um maybe it's like building a making a change and like building a single project and seeing what like compiler errors i get so try and hone in on like the smallest iteration that you can do and then either used.test.run or dotnet build to like um get your dev loop started 4vs or vs sorry vs code also works on windows um so yeah this the instructions i shared should should work on everything um so yes do try out code spaces um there are so code spaces is currently in beta right now i believe it's out of beta for organizational users but it is in a private beta for like just general everyday github users if you are in the beta um it is free to use you do have a limit of 20 code spaces um i haven't really had any issues with that usually what that means is every like three weeks or so i'll go out and i'll prune my code spaces and delete ones i haven't used in a while um that's the state of things um for the beta uh we'll see how um like things move forward once it's out of beta for the general public wow that's super impressive yeah that's really compelling well yeah it will um well yeah i don't know what's involved in setting that up for a repo to make sure it's got all the you know dependencies and build tools and all the stuff yeah i can go ahead and talk about that real quick um let's see oh so um before i talk about that there is an issue and i'm gonna try and paste it in the private chat so that john can share it out with folks if you have access to github code spaces and like any of this intrigued you and you want to help us make our github code spaces better there's an issue we're using to get folks to like provide feedback and polish up our setup for github code spaces um so that should pop up in as a banner soon yeah went out in the chat also awesome so the setup for github code spaces it kind of relies on i'm going to call it a standard i'm not sure if that's the right word term to use to describe it but there's this dev container set up that you can use with vs code to define a docker-based configuration for a vs code environment what i mean by that is that whether you're running in codespaces on the cloud or you're running vs code locally and you've got the remote docker extension where you have docker installed locally and then like vs code is running a server in your docker locally the same configuration will work for both so what's really great about this dev container config is even if you don't have access to the code spaces beta on github you could still use it locally on your windows linux what have you if you have docker installed and vs code with the remote docker extension and the setup is um basically a docker file um here we're using a standard image that microsoft has provided for working with dot net um there's not a lot in the actual docker file itself this is something we're kind of working on iterating but we're using a base image provided by microsoft um it has a collection of def containers for like dot net and c plus plus and python and all those fun things so our docker file uses that and then there's a json-based configuration where you can define the docker file that you want to use to build um you can do things like outline a collection of extensions that should be installed by default when the user opens up the repo vs code is a very extensions heavy platform so you know if you want a c-sharp or python or javascript functionality you usually have to go out and install an extension so we can define what extension should be installed by default um we can outline what things should be done when the container is created so remember when i was telling you earlier about how i magically get my repo cloned and i get my my projects were stored and everything at the beginning this all happens because we have this container creation script that runs post um the container being created but before we actually have a chance to start um developing so yeah this dev containers where a lot of the fun happens we do some work to make sure that everything is pointing to the local version of the install.net um so yeah if you have your own repo where you're thinking about oh i want to set up def containers for my repo do take a look at our setup it might be helpful to you it's not too far from the generic recommended setup for dotnet applications on codespaces but there's some there's some helpful tidbits in there cool yeah can i talk about.net grab app what was that oh i was gonna share something that i think uh is helpful for people who are contributing or just curious i don't know if people know about this um so fowler is um a member of the source.net team for life correct yeah source.net team boo i'm on a different different cohort um there's this really um fantastic tool called.net.grab.app um i can honestly say that day to day i spend probably 60 of my time in this and that's typically because if i've ever you know run across like a method definition and i want to see hey how are other people or sorry a methodification i want to see hey how are other people and all the.net repos using this um for example recently i was working on writing um a set of analyzers for minimal apis and i was literally spending all day just looking up keywords on um dot net graph so let's do something like descendant nodes and this i picked a wrong one because i always spell it wrong how do you spell descendant yes there you go um so it's super fast which is really great but you can do something like um look up a invocation and now i could look through all of the tests the code base um in every repo under the dot net org and github and see how people are using it so if i kind of like need some inspiration on how to do stuff or i just want to like check out how people are are using things this is this is where i like to go it's a lot better than source.net sorry david yeah right there's some interesting questions uh going on about what do you do when you need to change something in the dotnet run time uh in order to change something in hp net core like build on top of it um we as we said before we have this whole a system uh called that we call code flow which is basically there's a there's a back end app um that we the internal website basically that we can use to monitor the status of all the builds and like what the daily.net installer which you can get from you know github.com.net installer if you want to get something more recent than the official preview release it's supposed to be daily but sometimes it there are issues right infrastructure issues or test issues where it might be there is it is a very it's a fairly complicated code flow as you can imagine it's a fairly large dependency tree and we have a dedicated team i think fowler said before uh that that not only builds the tools to manage that like everything in that end folder but also maintains the services and the you know the azure subscriptions and whatever else where all that stuff runs and but there obviously are cases where sometimes you want to tweak something in a dependency that isn't in ace net core in order to do something in asp.net core i've never done it myself fallo i don't know how long it's been since you've done it or safiya when you last did that um but it's possible like everything could be pointed at somewhere via ms bill yeah it really hurt i mean it is not it's so hard we avoid doing it unless unless we really want to make sure something isn't broken before merging our typical our typical thing is to check it into into runtime and then have it flow and then we test it in the pr which means that you don't do things like branches it's not like you create a branch of runtime build a feature build it and then you know consume the output of that branch over and over right we just typically don't do that um it does make some things more difficult perhaps than they otherwise could be but performance it's incredibly it would be very complex and expensive frankly to set up the facilities to do that type of thing reliably on top of what we have already which is incredibly complex and expensive as it is um stephanie you were saying something just know oh and i was gonna share that um if you are a new contributor generally for the issues that we label help wanted we try and make sure that they don't put you in a situation where you do have to run like do all sorts of craziness um there are ways where you can um for example maybe you want to try how things are going to work with a like different version of the roslin apis or a different version of an external dependency um there is not documentation on how to do that there is a way and i will write the talks for it um yes generally yeah go ahead yeah generally um you'll have to work with um other dependencies but i've i don't think i've ever had to like change something in runtime and validate it maybe once while i was working in blazer debugging but yeah i know there are folks in the community who do it i know ben adams has done it i think nick crave has done it um and if you're if you're set up to build.net runtime locally and a spin at core it it's it might i don't want to use the words it's hard you have to and like our benchmarks does do this as well like that they have the the capability to run you know specify the version of the runtime separately to the version of net core yeah so that we can find regressions and we can identify whether it was a runtime build that caused it um you know ultimately a net app is just a folder full of bit of assemblies and generally you know one or two config files that might point at another folder full of assemblies that sort of most simple case and so you can hack things pretty yeah if you know where where to change stuff to to tell any given app hey i want you to load the net runtime from over here and i want you to run you know load the asp.net core runtime from over there that's all doable it's really hard straightforward um and as nick's saying right now i'd say it's harder to update your local build setup than just set it up initially oddly enough yeah i believe that yeah um so yeah let me let me show my setup before we we we bailed in five minutes i'll show you my typical flow when i dive so i'm in is my things right now is it there yeah so i am in the release 6.0 branch because apparently seven point doesn't show up in vx yet i thought it would but it doesn't doesn't get i actually installed the 7.0 um msi last name but it didn't show up at 7.0 for some reason who knows why i think i installed it let me check before we i'm not sure that we've done the full brand what we call branding um right so 7-0 is like in like way in the future uh it is main though um but i don't think we've finished the end to end yeah i installed it okay not working at vs yet so typically i would run restore cmd and i have these kind of built in from a long time before we detected java and detected node and skip them i have those two things installed but i i don't ever for the most part i don't work super often with um javascript or or java so i kind of skip those in my typical restore command so i'll run restore cmd i'll skip java unknown and typically native to if i haven't built it in a while i'll skip um the c plus plus the java and the node.js for a fast restore can you zoom your terminal a bit please ah with this is that good one more there we go massive all right so i'll do a five i'll do a restore cmd with this in the root that'll run and then i will find the thing i want to work on so let's say i'm working on kestrel just servers oh my gosh the navigation is let's see that castrol every subfolder not every every supporter has a start vs.cmd and we have this thing called a solution filter that will give you a solution file for just that subset of your repository so you can i've been working on castro it'll give me capsule on its dependencies for working on hosting et cetera et cetera the higher you go in the style the more things that gets pulled in and and you almost blend the whole solution if you put in like a blazer or a templates or an nbc right um if you work low in the stock you typically only pull in the things that it requires which is just a small a small subset of things i'm going to open asp.netcore.sln on my machine just while you're talking it's going to take a day i won't even try to open this because i'm streaming but star vs will launch the solution filter with the right net version um that i restored locally so i can work on this one one part of the the project right and then i typically will build actually i typically will build on the command line like one dll and the tricky thing here is when you're when you're trying to dive and run tests it's fine to run it in the experimental repository but if i'm trying to actually test a new api test something in an application i will spin up a real application separately and then reference dlls from my build in asp.net core in the main app so i can test things that aren't in the repo and it's it's it's kind of a mismatch between using an official build and using build up best i built myself but it kind of gives you a better idea of what the end to end would look like when you're not actually in the repo itself right finished opening by the way it did no no you made it open but it isn't working yet it's open and it's working like it's so done vs started syncing the theme for vs because i had no do you have intellisense do you have like the restore finish everything yeah all the background stuff is is done he's already made a commit i call fake news [Laughter] my machine is nuts um so yeah that that is my typical workflow restore build use bits in in a real project and then test apis that way how do you make it use it in a real project i do also reference right now so i don't copy i actually reference them in place sorry reference can you show that can you show that because it's obviously quite not at all idiomatic now with how dot net works right yeah yeah yeah but it still works and it's funny there's no ui for it and yes it's all ms bill group um so assuming i had an artifacts i do have butterflies here let's say built like and this will have to be our dramatic conclusion for this show yes yeah yeah we are done so i would do this grab this folder in my project if yes it's like struggling to open though it's like why are you streaming david you've talked about this for years damian there should be a setting where like windows is like don't install updates no no no in this case this is just fowler refusing to buy a new machine this machine is awesome wow okay and that will just magically override yeah okay so it'll use whatever build i have as a baseline so i always i always make sure i have a baseline installed that matches whatever the effect corey puller roughly is using okay so right now if i'm if i'm running rtm i'll install the rtm if i'm doing if i'm doing rc2 or 7-0 i saw that build and then i would grab those changes and apply my diff on top okay we gotta wrap an hour the vs toolbox team is gonna come for us they're starting a really cool show which i hope people stick around for um it's at live.net and they're going to be showing all the things mads christensen leslie richardson and the whole vs team all of them thousands of people now but lots of people are going to be showing off all these cool new features so stick around for that this was awesome this was really useful i am going to play with code spaces especially that looks really neat so all right thanks everybody um lots of fun here let's remove this so we can wave goodbye bye bugs [Music]
Info
Channel: dotNET
Views: 4,487
Rating: 5 out of 5
Keywords:
Id: hVdwb41FPvU
Channel Id: undefined
Length: 83min 21sec (5001 seconds)
Published: Tue Sep 21 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.