ReSharper & Rider 2021.3 Release Party

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
hello there everyone thank you all for joining um we've got another release party today we're going to be talking about uh resharper and ryder 2021.3 some of the new things that have uh just been released there there's a lot to get through as ever our developers are always always far too busy and far too good and give us lots of nice things to show and demo for you so um i think we'll pretty much get cracking on first of all introductions hello i'm matt um folks do you want to introduce the rest of yourselves uh hi i'm yeah hi i'm khalid i'm here from bottom to up i'm matthias uh you you can yell at me if some plugins don't work and we do i'm martin and i'm just here for the resharper bits and a little bit of writer that sounds good uh we're here for all of it this is going to be great um so yeah we got to get through over the next sort of about an hour and a half lots of fun things a couple of things to uh to start us off um first of all of course if there's any questions please ask them in the chat we'll try and answer them as we keep as we get going we'll obviously be talking and showing things we'll call out any questions uh if we can demo them uh if not we'll just answer them in the chat we're also recording this uh i presume somebody's hit the big record button haven't you yeah someone it is being recorded yes there we are that's good as long as you've hit the big button things that things are good so this will be available then on youtube later and uh all is good and of course we'll uh follow up with uh various blogs and newsletters and whatnot afterwards um so what are we going to talk about we have a number of interesting things we're going to go through the the what's new for uh resharper and ryder in 2021.3 lots of features and interesting stuff to get through so um we've got all of this stuff written down in a lovely website which you can go and have a look out there just do a quick search for what's new resharper or what's new rider and it'll bring you to a very useful big page full of features and goodness um and also of course um don't forget to check out the blogs as well so we could do a lot of content on the blogs with information with details with a deep dive into something with an overview of other things and it's a very useful way to get some uh top information there uh nice one there on the front page uh therefore uh how rider hot reload works under the covers that's a a great one there from martin um so i think it's time to dive in and get started matthias i think you're going to take over now i believe and show us some um i'm starting you're starting what are you showing us to start with in i'm showing let me share my screen i'm showing you resharper installation dialogue well the first the first thing and this is i know some people have already been using our eap builds to get support for visual studio 2022 well this is the final release or first major release that we have since then to actually support uh visual studio 2022 this is usually you know my my go-to or for most of us advocates i'm sure um the go to would be to install this from toolbox but you can see you can select it now here let's close this and also you can see i actually found this funny when people decreased that number and said it's 63-bit and stuff like this but well you can see this this is running uh i have this here in my um in my work uh workstation and well besides that i would also like to jump in right into uh some c-sharp 10 features and this is also something that we've all been waiting for you know first release with dot net 6 that is lts again and i think i'm going to start with fast uh scoped namespaces so this is really can i quickly interrupt um it turns out that at the beginning of our live stream the chat was disabled so we just enabled it if you don't see it just press f5 refresh your browser and it should be there yeah yeah i actually tried writing hey everyone and then youtube said no live chat disabled but anyway now now it's good so hello everyone say hi if you if you're up for it um but again let's let's get back to uh c-sharp 10 features so one of the things is global usings um so global usings are those kind of stuff or using that you can put into one single file so usually i for now go with globalusings.cs which then get applied to all your files in the whole project so as you can see um currently i have this using here enabled but it's not actually used anywhere only when i uncomment that then we can go back and you can verify now resharper actually knows this is being used and otherwise if it wouldn't you can actually also remove that so you always know if a global using um global using directive is actually worth having um so this is usual stuff and besides that let's also look at firescope namespaces so this is another thing almost closely related i would say because they're both very at the top of every file so filescope namespaces are those that basically we can save some indentation with our namespace declaration so we can actually convert this to a filescope namespace and now we just have the firescope namespace but the really interesting part is here and two other inspections that i will show follow the same pattern is that we can actually perform this quick fix for the whole project or whole solution so this saves a lot of time you know going through doing the the boring work you just sit back relax select this one and all the files uh in your in your current solution uh will be converted another thing is pattern matching so switch over to that uh matt once it's released i can everyone recommend to check out a talk by matt about pattern matching from the ndc oslo but for now one thing that c-sharp 10 also brought was a shorter syntax for pattern matching so in pattern matching we basically check we can we can check for for type check basically can see if that object is a person but the really interesting part goes on here in the curly braces because then we can first check okay does this have an object or not now relatives property and does it have a count of one yeah and this is i mean first this was introduced it's a bit um boilerplate let's say in terms of the curly braces this is something that has changed you can merge to nasa property patterns and again this is also let's revert this for for for a moment okay get my keyboard up and running again this is also available as a as a bulk fix again okay another thing interpolated strings this was something that i personally waited for for so long really um so here in this case we have a debugger display attribute if you don't know what that actually means um in short this helps to to inspect your objects in a nicer way than just overriding two string because it's it's not really overwriting to string but you still get the information that you put in here and this is a bit clunky as well because uh first well the usual pattern would be to have um to first mention uh the property so get the you using the name off operator for instance then showing some kind of equal sign and then this syntax here basically tells the debugger to evaluate to actually evaluate the property and this is something that we can now turn into a constant interpolated string so here just like this now this is looking really interesting i gotta say with a lot of curly braces but it's getting the job done basically another place of course is here in the default values for signature we can do this as well and again i just i just really want to remind folks about this because it's really worth remembering this is something also available as a as a bulk fix so don't go through and do all the you know uh busy work or boring work to convert these now let's head over to records and i i gotta be honest i haven't used records so far [Music] except for the examples that i'm producing here but um one thing that i'm sure will will you know drop me off because i wouldn't know what to do is when you when you have this signature then this basically reflects several several elements on the il level so we will have a constructor argument we will have a backing field a property even and so if we apply an attribute to one of these then you can see this attribute is only can only be applied to properties then resharper will help us to actually go here and relocate that attribute to a positional attribute which means that this modifier i think it's called modifier is added here to make clear that this property belongs to the um that this attribute belongs to the property another place um about about parameters and oh my god i forgot to reset that um so another great thing with c sharp 10 is that we can this is also great you know usually i've been writing a new action and then provide the lambda expression over there uh now you don't have to do this anymore but in some cases we might want to add attributes to these as well and if we do this like i have a very let's say simple lambda expression here which is a single parameter we might start just here you know adding the parameter and again resharper will tell us this attribute is not valid here because this should actually go into the parenthesis so also easy fix you know also learning the language while you're doing it wrong basically um which i think is very great to uh just over time learn how it's done right the next thing i want to talk about are caller expressions um so and you may remember uh if you haven't seen it there are some other caller attributes for for capturing information about the core side um so far we have the file path line number and the member name this basically works this way um just for those that that haven't heard about it is that um you provide a default value and you won't you will never pass that value from the course side but the compiler will insert that information for you okay and so what has been added now is the caller argument expression attribute and this basically helps you to capture the expression from from another parameter or argument that was passed for this parameter so for instance parameter name this refers to this first object here and when we call this like not not here for instance then this would basically be the argument you know because this is an extension method and we're passing this whole thing as an argument and i think a better way to actually show this is to switch over to writer just for that just for this um so if we look at the decompiled source code then you can see that while this is being called the not now extension method then you can see here in the il view that there's actually a string which represents the whole argument for that one but now let's get back here the thing that we added here in this case was so that you have good completion for this it will also it will also notice if something is going wrong so for instance if you have the wrong parameter name in this case then it will tell you okay this this doesn't make sense it's self referential uh and much more of this the next one i have and now we're getting a bit also into into uh performance optimization all that stuff but i think it's worth showing anyway read-only records so here i have another record uh just a point you know with x and y value and these methods that we call here like accessing the x value or get hash code they produce no copying for this struct type however once we have another method let's take some for instance uh now that the compiler does a defensive copy of the struct right but resharper still knows at this point that uh the point is never actually um never actually modified because in that sum method we could actually do a mutation but we don't um but in this case resharper will suggest us to use the read-only modifier just you know to get the the the the last percentage of performance out of your code and we'll add this now the reason and just just one more thing if we actually have a mutation then of course this suggestion will go away one thing though that it's important to you know kind of kind of get the point here get the point um is that this inspection is only shown when we know that there's that there's a need to add that now in this case we do know that there's no defensive copy anywhere in the solution so we don't suggest it just you know to not overload this uh amount of modifiers that you have to apply one important fact here is that you have to enable solution wide analysis for this to work and the last thing i want to talk about is our interpolated string handlers now this is this will be a separate blog post actually but i still want to show it for those people that might use them so this is again a performance optimization uh where we can defer the construction of an interpolated string to um to a time or or can decide whether it's it's worth constructing that string two things about this that are very interesting is first you can you can navigate to the declaration from this little dollar sign here because then you know okay this was this will be calling this trace logger params interpolated string handler and another thing you can also show usages from these append literal append formatted methods that you usually provide so in this case we can show usages and you can clearly see okay these are being used here and there okay um let me i'm not sure i think this is the place where i head over to martin right i think it is so i'll skip into my screen here hello everyone welcome from my site as well um i will be talking a little bit about the reference types and some very because both are based on the same engines martin i think we might be having problems with sound there oh fantastic i was waiting for this to happen shall we uh no i think you should just uh i think you should just struggle for a bit longer we could just sit here and uh and laugh at you for a bit come on try try doing some more robot voices all right am i still a robot yeah you're still a robot let's move on right the next section is um oh it's martin that's so fast um well i think what we've got next actually is uh a bit more matthias mhm now it's like me and khalid is going to sit back and relax this is good oh man yeah i i can yeah martin do you want to reboot or something or just trying trying differently yeah i'm going to go for a quick reboot so i'll be back okay okay okay um okay so let me look up what i have next um oh yeah copy code reference this is actually really great um it's a feature that many many of the resharper devs have been used using you know internally i think it was uh only available in internal mode right anyone can confirm matt or khalid copy code reference yeah i'm running in internal mode all the time so i can never remember what is and isn't anyway uh so the the feature that has been polished and made more you know ready for for uh for the public is the copy code reference action and we've been using this uh usually under the name of fqn uh you know fully qualified name and um this is this is still uh available as the as the let's say name for the action to call this but of course an art enter and you can also do copy code copy code reference but now when we execute this then you can see that we have various options to copy the current code or reference to the current code so for instance the fully qualified name this is usually by default copied to the to the clipboard or just the class name the namespace etc another thing that's interesting of course is a link to let's say github in this case with a branch or a specific commit id or commit hash or martin is back i will finish this though um and xml doc id so for instance let's actually do this so if we want to document something it's not actually the place where i would do this but if you have a c ref tag then you can you know you get this xml doc id that you can just paste there and that will be working immediately one thing that's worth to mention here is let's head over to the settings and you can actually extend this this pop-up by yourself so for instance uh the default that we have is for space so if you would happen to host your project on space then this would be generated for you but of course you can fully customize that and you can use these placeholders or macros here which will then get replaced automatically and you will get the proper link of course and here you can also choose the title whatever will be uh shown in in this in this pop-up so we can actually do this again and i hope it does show up it doesn't maybe i i saved it to the wrong to the wrong settings layer but this is the this is the place where sorry this is the place where this is done yeah it's probably safe to do the wrong layer so you should there's actually a notification about this so you should save this to this computer to work um one thing though it's not it's not exactly the same but i still want to point out that in in writer you also have this so copy copy reference you can actually also search for that so xml doc id but there's also a second one i don't know if there will ever be a time when this will be merged but there's also copy path or reference and this will also give you some nice options if you have two box installed for instance uh or some others and you can still actually navigate to the copy uh reference dialog that that also resharper has i haven't seen that toolbox thing before what does that one do it does let me let me check i think it includes the full uh project so usually project you see this part uh will will be taken from the solution name and then it's just the relative i can't go over there with a mouse but it's just the relative path to that file so if if you have the toolbox app installed you can click that link and it will navigate you to the right place exactly so for instance if if i had slack openers or some other uh place where you can paste links to a colleague or something uh then you could actually click this and it will open up write a correct project um correct correct file correct column and line number that's nice i like that um if anybody doesn't know by the way toolbox is a great app for managing your installs um it's it's really good for keeping everything up to date and installing different versions of of your apps and what have you got more than one app uh from jetbrains then toolbox is is the way to go yeah i was gonna add if you're not using toolbox like how are you living your life i don't understand uh yeah so sorry to jump in there matias um have you are you done with a copy code reference we see if martin's uh microphone is fixed these now sure yeah so i did not really intend to sound like daft punk um but apparently there is a hardware trick so if your ethernet connector is not deep enough in the computer your connection apparently is not as fast as you would expect it to be so that's the reason why my microphone is taking out in it and put it back in again yeah probably and then remove duct tape that my colleagues pasted on it and all of those things you you fixed this in just five minutes or even less yes yes yes i am respect so it's all ready to show us that martin so as i was mentioning i will be showing some nullable reference type stuff that has been added to resharper but also will work in writer so whatever you see here will work will work in both ides so let's switch to my screen here and switch to visual studio and what you will see here is that i have a code file that has nullability disabled style so we won't be using notable reference types or any annotations and and why are you laughing is this my audio yeah your audio is gone again so i think you're gonna have to just reboot do a sentence reboot do a sentence and reboot into a sentence yeah exactly so is it doable or is it really out of the question just power through it just power through i think we'll be okay i'm gonna power you keep it really short is if you have some codes you will um yeah you want to write some code and so on and you can of course do that yourself but what we as the developers very often do is we go to a website or google something search for something and we find some codes to do something for us now in my codes i have no ability disabled this one comes from a websites where everything has no the annotations and numbers streams notable streaming null checks and all of those things now if i paste it into my class that does not have normally enabled you will see that these things are not really required so what's resharper we're doing right now is that you can either replace them with jet brace annotations so we can use the pre c sharp nine or c sharp eight feature where uh the jet brace annotations could help you do that um or what you can also do is remove all of the notable analytics in let's say this entire file and there you go now of course i realize that a lot of people will be doing the inverse migrating from non-nullable code to nullable codes well yes there's more releases of reach sharper that will come in the future so we will uh we might actually look into that at a later point in time the other thing that we have is more infer nullability so resharper will try and look at what is going on in your codes to help you migrate towards uh using nullability so if instead of disabling the ability you say know about the enable we will see that this null is uh really it's getting an inspection and uh i sound like standard girls this is fantastic i love reading the chat by the way um so you will see this this null value is actually um noted as something is being wrong so what i can do here is hold enter and i can either um suppress the global warning which you could do or i could say okay i assign a null into this variable or into this parameter maybe i want to change the type and you can do that immediately in one go and make a novel as well so that this code is now correct the chat is fantastic by the way this is really really distracting all right another thing that happens is if you have no ability enabled you will see that if you do a null check somewhere in the main that's where there's no nullability specified in the method significature what will happen is resharper will recognize that you are doing a note check which means that this parameter could in theory be noble so what you can do is also alt enter here and change the type in this met that's to being malleable and let resharper fix this for you so you can again migrate to making use of normal reference types mr robot command the chance keep it coming this is this is fantastic all right i have some more stuff and i promise i will be plowing through at a quicker pace so i can stop laughing with my robot voice uh let's switch to records uh mathias was already talking a little bit about records um not only for c sharp 10 but also for older um c-sharp versions that have record support we added a couple of quick fixes so the first thing i'm going to do is i have a last person here that i'm using using property initializers i'm going to change this into using a constructor which is decent and works very well this one is not used i'm going to remove that one and it's the next thing that i'm going to do should i be updating this oh yeah the next thing i'm going to do is make this instead of a class to make this a record so what i'm going to do is alt enter make this a reference this constructor can be removed but by making this a records and i've two constructors here that is the reason why things are wrong by making these records we actually already have this name and h property that we can use so this constructor is no longer needed resharper will let you know you can simply enter convert the primary constructor and you will get closer to a record type that you might expect also now we have uh constructor parameters but we also still have properties so what you can do is either uh change this one to using an unit accessor for example which would make it a real records and resharper will recognize that this is no longer needed in your code base so you can also so here remove these explicit properties let's say in this entire file and we now in a couple of alt enters refactored a class person with just property initializers to being the records that you can use in your code base which is quite nice actually um some other stuff that is there my microphone is encrypting the voice this is this is perfect this is to make sure that your love for nets uh is not being uh being hacked anyway um arithmetic martin martin i think i think we should move on to be perfectly honest i think uh this perhaps getting worse and you see if there's something you can do while trying to fix this someone takes over the next next section yeah we haven't seen everything and we can do this as a chat we had somebody suggest maybe turning off your video might help but maybe that's worth a try but your incoming video or well like either video i mean we won't see your handsome face but maybe that's uh maybe that's worth what you're calling me yeah try try disabling video mods if you let it go just quantity are handsome too sir i don't i don't let's let's quickly try this let's disable my camera is this better right now it sounds good yeah so it's so good if it's bad let's let's do this this is fantastic um so yeah arithmetics uh resharper has gotten some inspections that analyze the flow of your codes to make sure that you can actually uh get some hints on how things work and i s before laughing so let's uh let's maybe drop that i am going to type one thing well i'm gonna leave it to the next presenter and see if i can fix this yeah let's uh let's just leave martin for a little while and we'll see what we can do and we'll move on and um funnily enough next on the running order have a guess it's matthias this is really the medea show isn't it martin someone wants to say hello it all makes sense now okay uh actually this time i don't have much to show except for one thing and that is that um writer now fully runs on natively on m1 apple macbooks on apple silicon you can actually verify that for some time we've been providing actually builds for m1 macbooks but now this is also automatically available through toolbox and it runs.net six rtm and all that stuff so i can tell you very good experience very fast and all uh the only thing with the m1 m1 macbook was also camera wasn't working i mean my external one so we had a lot of pain today with technical issues okay that that that's it for me yeah for now yeah that's the end of the metea show and now we start the collection all right let's do it what have you got for us khalid oh my god all right so uh folks probably know uh or maybe they don't know but i'm a mac os user so um and mostly a rider user so folks probably can get the hint from earlier from uh matthias and martin uh talking about c sharp 10 but we do have net six support now in rider so when you come into rider you're you can see the new uh welcome screen here and if you click new solution uh you'll see right here in this new solution dialog you'll see this sdk and you can see the value is 6.0 you can come in here and pick any sdk that's already installed on your machine uh and yeah pick six because six is awesome uh is it just me or are you aren't you sharing your screen oh did nobody turn that on all right let's go do that no no supposed to do your own ah come on guys come on all right let me start let me start over this is the best webcast we've ever done it's easy too early to start drinking it's a farm show yeah that's water i promise no but uh so again i'm a mac os user so if you come into the welcome screen and you click new solution you'll notice that uh you have all these templates if it's the first time you're running writer and you've just installed the.net 6 sdk writer will scan your sdk directory for all the new templates so here we can see the.net.net core templates and these are going to use the minimal api minimal hosting templates that everyone's kind of seen at this point and especially if you're getting into dotnet 6 you're definitely going to see them because they're going to be there by default and any community style templates that you install they'll also appear in here so net 6 sdk and not 6 template support just works with ryder right out of the box so let me jump straight into kind of some new ide features in rider that a lot of people are going to notice as they upgrade their iteration of rider so i'm going to open this i love hot reload project and the first thing people are going to notice right off the bat is the new and improved main toolbar most people seem to like it there are folks who maybe have differing opinions that's fine you do you that's that's great and we'll have options i'll show you how to do that but let's start from the left and we'll move to the right the first thing in the new toolbar is the navigation items here on the left so you can move back and forward as you move through files so that's a really nice quick navigation you have source control enabled uh our new source control widget is right here and it shows you what branch you're on whether you want to create a new branch or whether you just want to you know check out a tag or revision you can also update your project you can push your changes up you can commit your changes and you can also get this you know your version control system menu up here so if you're not a shortcut person and you just want to click some things you can do all these things uh additionally uh the unsung hero of a lot of our products is local history uh so if you want to retrieve something that maybe you forgot to commit but you ended up deleting i urge you to check out local history it's pretty awesome next for new users of rider if you're not familiar with the shift shift shortcut key we've created this button for you so again if you like to click you can click here and you can look for stuff and we'll search everywhere for it and that's pretty awesome okay now on the right side of our new toolbar we have the build solution button this actually changed right before release but now you can actually select whether you want to run in debug or release or if you have any other solution configurations you can kind of edit them in here as well and then finally the the hero of the new main toolbar is our new run widget so here you can manage um the the first launch configuration we've also made it a lot easier to add multiple run configurations so you can kind of come in here and choose all the run configurations that you want to run side by side but you don't have to but it's kind of nice it's a nice little thing uh and then we have the run debug and then if you're the kind of person who likes to attach to process uh we have some quick icons here and then finally we have our settings thing uh over here on the right but uh before i continue and uh pass it on uh let's look at what happens with the run widget when you actually run your project so i'm going to debug this console application and this is really important for new uh users of rider i know from the past people have kind of got hung up on like where the debugger is and how to continue uh the debugging process so the new run widget actually will transform when you're in a debug session uh and some of the icons will change so you'll have the ability to rerun or restart your application you can just resume so if you've hit a break point and you just want to continue you can resume right here and you can stop debugging these icons are also like somewhat repeated in the debug window so if you're an old user of writer you're probably familiar with doing a lot of your debugging in the debug tool window finally for folks who maybe are old-timers in the writer community maybe you don't like this thing you can always come up to view appearance and go to toolbar classic and you'll see kind of the difference here so it's really it's really up to you i personally like the new run widget i've really enjoyed it as an addition to rider and i think you will too so that's really it for the toolbar i'm going to pass it on to somebody else that'd be me um i'm going to carry on talking about some uh ui stuff as well so it's not just the uh the toolbar that we've changed um we've also changed the way that we sort of show errors and warnings uh within a file within the solution so if we have a look in the corner of the screen uh we can see now this little widget here i'm gonna let me try that again well i'm actually in the corner of the screen and we can see this little inspections widget that we've got going on here there if you hover over that it tells you how many warnings how many suggestions how many errors there are in the file uh and you can sort of uh click those to sort of navigate around there's a couple of options in here which are quite useful you know you can sort of uh say whether the f2 keyboard shortcut or again i'm on a mac so i've got no idea where that is on windows but it'll tell you what the keyboard shortcut is it'll allow you to sort of cycle through the different errors and warnings and so on and you can decide to turn down uh syntax highlighting and you can also uh where i use compact view to just show the usual little icon there uh but that just kind of shows you the values that are available in a particular file um if you click on it you get a full list down the bottom here this is a new thing we've got here this is the problems view so we've got a new toolbar window uh called problems view and uh it's split between uh three different things you get to see the current file all solutions and the tool setting environment which i'll come on to in a sec this is really quite useful it's a great way of being able to see what is going on in a particular file we can look at a preview so you can very quickly step between the different uh files there through the different messages and see what's going on and how to navigate around and fix them and that's very useful for a single file if you want to have a look at all solution files this is a tool window which we've had before it used to be docked in the top right there this is the solution-wide analysis this is really useful if you have an error in a file for example it very quickly gets picked up and found if i have something which is being used here like that then it'll show me where the errors are now because this symbol can't be found and again i can select that and uh it'll show me where the error is if there are values being used in different um different files it'll show me the error across the whole solution there which is useful so um this is the same sort of uh list of things that we had before but it is now been moved to sort of go with the current file all solution files and then finally the third item which is really cool uh which is one which is telling you sort of warnings and errors about the current environment and this can be any kind of things which are going on it can be things like the project didn't load um here we've got something which is saying that the ms build is incompatible with the.net sdk so i'm using a wrong ms build version for this project here clicking on it now gives me a set of options as well so it gives me an easy way to try and fix problems with my tool set or with the environment and it shows me items listed on the side here with uh links that i can actually do and click even little helpful thing to say well what is ms belt what does this error message actually mean and if i click that select different build in settings it'll bring up the settings for me here and then i can choose the different ms build value there from the the drop down now there's a whole load of different things that are going on here and sometimes it's hard to demo so we've got a sneaky little diagnostic mode which just basically gives me all of the error messages that you can possibly have there and it shows me some lots of fun interesting things like you know duplicate references found within a particular project or if we go on to something a bit more interesting android sdk not found and so it's going to say well this project uses the android sdk but you don't have it installed so well okay okay i can click then install android sdk and it'll take me to the settings page there to actually put in the right values uh other useful ones which are good in there things like xamarin xamarin.sdk not found again if i click that it shows me uh what to do and i can click the install the xamarin sdk and this takes me to an environment page which is really useful i've had this in rider for a couple of versions now but this is a great way of making sure that the different tool sets and tool chains that you want to use in your project are available to you so you can make sure that net is up to date mono xamarin uh and so on and those are very useful uh things to do there it'll also show you if you've got errors in your ms build file and things like that um other useful things you can do here is you can right click on those and do ignore issue and it'll hide it so if you're working through a bunch of issues there you can say okay i'll fix that alt enter sorry uh right click and ignore the item and you can get rid of them there and also of course you can use alt enter here to sort of open up the options there so you can do it with the the tooltips as well sorry with the keyboard as well okay so a quick check of any questions looking good with we've got quite a few developers in the chat today so if anybody's got any sort of proper uh interesting questions fire it into the chat and you might get a some useful tips from the developers there um right i'm going to swap to a different uh solution now and we're going to talk about the debugger so let me just i've got a simple demo program here i'm going to ignore what the code is at the moment and i'm just going to start the debugger because again we've got some different user interface changes going on in the debugger window as well so let me just let me just see if i can just zoom into this a little bit so we've got a tool window here and what we have done is we've cleaned things up a little bit so you might see we've got a list of tool toolbar buttons at the top we used to have buttons at the top and buttons at the side we've kind of merged all those into the top now just to make it a whole lot simpler we've also um cleaned up the the item there so the tabs you've got there if you've only got one program being debugged zen all of the tabs are sort of pushed up a level so you we're trying to make as much use of the virtual vertical space as we can if you're debugging multiple programs they'll show as different tabs there and again as a top tip you can debug multiple programs at the same time you can debug your front-end services and your backend services at the same time and you can attach to multiple programs and debug them sort of separately there as well so we've um we've moved various tooltips sorry various buttons to the top here you can rerun you can stop you can resume the program and pause it to break points uh and we've got step in step out and so on extra items are inside the little drop down here so things which you don't use quite so often are available here useful things we've got smart step into this is a useful idea which is basically merged into step into as well but this will make sure that you can decide which item of a nested method call you step into you can run to a cursor uh you so you position the text position the text cursor uh on a particular line click run to cursor and it'll be it's like you've put in a temporary break point until stop at the right place there there are also useful settings here which you can do so you can modify the run configuration decide how you want to open the files uh how you want to show the variables hide frames from libraries this is a nice one there so if you have library code in your core stack you can just hide those and we've got that filter button just here as well so you click that and any frames from a library third-party libraries which you're not interested in you can click those and it will hide those all the way um the other things that i want to show in this this place is the uh immediate window so we have changed the way that we evaluate expressions no go away don't want that that's working so um previously we had the evaluate button at the top we've still got evaluate here so we can click that we open up a dialog and we can evaluate an expression and it will show us the results of that an empty array which is a bit boring but there we go but what we've kind of done is we've merged the immediate window with the uh the debug tool window itself so you can just start typing values here and it will now evaluate that and put it into this dollar result sort of pseudo variable there and it shows it as we're going on there so we could do things like um well let's do arc zero it's going to be empty well it's gonna fail actually because there's nothing there uh um could add the event and it will now sort of put that into dollar results i can also uh extend expand this and we've now got uh our immediate window here and again i can do my arg starts length and it'll show me that there but i can do more interesting things like p equals uh arg.lengths and it will now actually create a variable called p i've got this synthetic variables item here with p which i can use and i can do something like uh v times 2. but it's zero it's not gonna think p plus two there we go magic i can do maths ish um the other interesting thing you can do with this one then is when you are doing this if we do arg.length now we can see we've got a little tooltip down the bottom here if you do ctrl shift and enter that will actually create a watch out of the last expression same as clicking this button here it'll create a watch and now then we've just got that added to our watch window and it's always going to be available last thing to show you here is this toggle button here this allows us to stop at break points when we are evaluating our code there so if i called a method here i could call a method to evaluate something if there was a breakpoint in the body of that method even from the evaluating value here it would then hit that breakpoint so it's a great way of debugging and trying to figure out what's going on there you don't have to rely on what the code in your app is already doing final thing to show you then is let's get rid of that is to go back to the code that we've got here now code is completely made up and is deserves no uh real purpose but you can see we've got a number of uh lambdas going on here a number of uh event handlers going on so i've got a simple lambda here to return one i've got an event handler which i'm adding i'm adding another event handler there to a lambda and i'm adding a an event handler here to a method which does nothing so what the method is actually doing isn't really important but what is useful is that when we want to debug this we can actually sort of get a better idea of what's going on here so if we have a look at the event handler here we've got this new node called subscribers and it shows us now what methods and lambdas are subscribed to to this event handler and so for example we've got program.dosomething and i've got this navigate link and it'll take me straight to the line in the editor and we've also got program.run and if i navigate to that it's actually going to take me to the appropriate lambda which is really cool if i open this we've got a captured variables item and if i expand that then it shows me what is being what is being captured as part of that lambda and it shows me that it's capturing x which is being called here it's also capturing args because of the way the c-sharp compiler works it's uh both lambdas share a display class that one's one of caption variables and so they both have x and args so it's a really nice way of being able to dig into uh your methods your lambdas and where they're being used and to see what the values are being passed around with them and navigate quickly to the actual lambda that you're working with which is cool um and then that brings me to the end of the debugger stuff so i think i need to have that over here yes i have one thing i i just i just always want to point that out in the immediate well let's say bar now yes uh one one thing that i love so much about this is uh currently we're dealing with an area right so you have to you have to use dot length but even if you type arc dot count uh it will actually work because it's using the same you know editor engine and all that stuff um including code completion that's what we already see but it's using uh the existing you know smart features uh just keeping you in the flow and just turning it to what what you actually intended yeah absolutely um that is a very small little feature i mean we're so used that uh to using arrays and lists but it's like okay it's an array there for its length it's a list therefore it counts so there and it's just like well don't you worry about that we'll fix it up for you some yeah cool we feature khalid you want to take over with some hot reload sure i think i'm going to remember to share my screen so i'm going to add it to stream and we're going to enter the matrix for a second all right so um yeah i think i think everybody has kind of heard rumblings about hot reload and kind of what's happening i will actually point you as well to a blog post that martin and the devs wrote about the inner workings of hot reload you can find that on our jetbrains blog it's really excellent and kind of shows you how all this stuff kind of works but as a developer you don't actually need to know how any of this stuff works so the canonical example will start with a console application the one we started from my previous example and then i'll just go ahead and i'll run it so yeah so it's saying hello 2021 right so uh we're heading into the new year right so i just changed that value of uh 2021 to 2022 and you immediately see two things happening in the ui you see this yellow bar up here which hints at the fact that our sources have been modified and you see this chunky little light bulb here so you can click either here i'll click this and you'll see you can apply changes so i'm going to go ahead and apply changes and what's happening is rider is taking the changes in my code and actually injecting it into the running process using some dotnet apis so immediately you start seeing we go from hello 2021 to hello 2022 and since uh matt is my friend i'll go ahead and say hello matt now you can see it it's changed again right so hot reload works with a lot of different types of applications but the applications i work mostly with are console apps and demos and asp.net core applications so i'll switch over here to my ilovehotrelo.web and again i'm using minimal apis i'm going to run this project and you can see it's saying let me crank this folks can see that now right so it says hello world uh and i'll say hello martin and i'll throw a robot icon in here just to be safe um uh so as soon as you see me change that uh you can see the apply changes uh and the light bulb shows up again so i'll click this and uh if we go back uh and refresh you can see now i didn't restart my web application but it says hello martin now so that's basically how hot reload works right now it's an opt-in uh to applying the changes and especially in an asp.net core application right now you have to refresh the page but we do have um we are working on making it so that we can inject middleware so when sources do change your pages will reload and stuff like that so while it works really well right now for applications and web applications we are working on also improving kind of the feedback loop with hot reload so that's kind of the high level overview of hot reload uh and that's it for that i'm gonna close before you move before you move on then we've had a couple of questions about xamarin where does hot reload and xamarin sit so um this technology of hot reload is specifically for net 6 kind of projects xamarin has a version of hot reload but they are using the same term but they kind of operate differently we actually do have hot reload for xamarin but it doesn't operate in the same way that what i just showed you does so um folks can probably go check that out i think i remember writing a blog post about it so check out our blog i think there is xamarin hot reload stuff on there if you want to check that out but i think that's been there for a while now that's probably one of the first frameworks that had some hot reload functionality but yeah hopefully that answers that question is there any more questions um not that i'm aware of just at the moment so uh oh we have do have a one does hot reload work with blazer ooh laser i don't think it works with blazer right now i i am heading into blazer and blazer wasm debugging um it might potentially work with uh blazers back end uh codes if you have apis and stuff like that um those can definitely potentially be uh but i i don't know definitively right now so i'll have to check and get back to those individuals a really quick robotic intervention i hope at least that my voice is still a robot right now um but for blazer you can probably use the plugin that khalid and i wrote do a not reload i'm not sure if you installed it i do i have it i have it i can show i can show folks that if there's time at the end but uh i'm i really like our plug-in i think it works really well and uh uh basically does net watch so um instead of if you're in a tighter feedback loop you can just use netwatch and everything kind of works it's pretty nice so we'll say that to the end martin though just to get through some of the features uh in our resharper writer thing so thank you robot overlord for intervening uh i'll jump i'll jump now uh into uh yeah hello martin i'll jump into now the thing that a lot of people have been asking about which is a blazer wasm debugging so here i have a blazer wasm man i'm never going to get used to saying blazer wasm but we have a blazer wasm project here with our pages which are each of these dot razer files is a blazer component and then here we have our counter component and all it does is spit out the current count and we have these methods so we have increment count which is called when we click which calls really increment which calls no really increment count and then we actually increment the count so i'm going to hit debug and i'm going to explain this because i think there's a lot of misconceptions in the dot-net community around blazer wasm and kind of how debugging works in general but uh let me open the dev tools because right now you can see certain things happening um so i'm gonna move this down here i'm gonna switch to the console and if we head back to rider you're going to notice that the debug window looks slightly different than you normally would be used to in say a.net c-sharp kind of application we're actually using some of our webstorm debugging tooling here to connect directly to uh the chrome uh whoops where is that window let me oh man windowing is hard um where'd it go oh it's over here so yeah um we're connected to here so if i was to go ahead and say console.log say hi uh i haven't said hi to matias yet so if i say that you can see that it's output here but if i go over here you can also see that it showed up in the browser right so we've created a bridge between rider and your instance of you know chrome if i come to the counter page this is the component we were looking at if i click click me i'll go back here you can see that the debugger has paused actually in the browser right like we've hit a break point you can also see like here's debugger's pause and you can see the scope that we're in well that scope is also reflected inside of writer so think of it like you're connected to chrome and you're stepping through the debugger in chrome but we're bringing that experience to you back in rider if you were to start debugging blazer wasm right now and all you're seeing is this i recommend adding a watch to this and this is actually the context of your component so if i see this [Laughter] um so if you add this this keyword you'll actually have the blazer component you'll see the current count which is zero and you'll also see other private members as well to the blazer component so has the component ever been initialized or rendered and that kind of stuff so from here it's your basic uh debugger experience the kind of experience matt just showed us previously so step through and we can see currentcount has actually incremented to one so yeah that's it and i can hit resume and now uh you can also see that we're still connected to the chrome window as well so that's how we know that the debugger is still you know attached but yeah that's it if i hit this again we're back in rider and we're debugging so uh one more thing i want to show here so uh if you're looking here there there's a reason to my madness and why i have all these methods the debugger will actually show you the call stack so if you click through you can see where we started and you know where we ended so you can kind of step through and see what the context is if there were parameters you could see those and uh yeah that's really it so there's laser wasm debugging i think that's it for me i'm going to pass it back to i want to say matt no don't say man we're going to try martin again oh let's go to martin i'm excited this is this is good martin's going to talk about uh sql injection apparently is that right martin uh sql injection sql language injection actually um am i a robot again yeah there's a small hint of it we will okay so if it gets too worse let me know and i'll i'll give you a quick bat button and then we can switch to the next speaker again cool so sql language injections i'm not sure if everyone is familiar with the database tool window in writer so on the right hand side here you can open the database tool window you can connect to any type of database that you want to work with also if you have a sql file in your project and i'm a robot again aren't i this is perfect um it's not as bad a robot as previous so power through for a little bit and if it gets really bad we'll we'll kick you out all right this sounds good so if you have a dot sql file you can also connect to it as a ddl data so that writer will parse whatever is in there and i'll also give you all of the tables and columns and all of that that you described there now the moment you have a database connection in writer is also the moment that inside of your c sharp code you can start writing queries so you can say select star from department for example which is a database table in there you get completion because you have the database connection so you will get all of those things together and you can say where id i think instructor you can add those things as well you can alt enter from here and for example run this query in console if you want to do this what's new in writer now is that this all works with multiball or string concatenation as well so first of all if you do something like this and i would recommend highly against it because if you inject any parameters they will not get escaped and you actually get sql injection that's equal language injection but if for whatever reason you want to beautify this a little bit and say okay in the string i want to do multi-line and say um it should be something like this where you add this on a new line and so on that not works so writer gives you complication with that and it will even give you completion on all the columns of that department there what's also interesting is if i drop the space here you will get air notification because there is no space in the resulting query on this concatenated stream so you will see those things don't fit together and don't work all right am i breaking up cool then yes that will be the last thing that i do on stream here so what does a robot pirate say when he's is high i don't know r2d2 anyway i think we should just end the stream right there basically yeah i think we're gonna top that are we i can't follow that it's uh impossible i think the thing is i've got to follow it it's my turn go for it go for it all right all right we'll find out i'm gonna i'm gonna right we'll let's uh let's do a uh a screeching handbrake term and start talking about some unity stuff then um so thank you for the jokes there martin um so uh i'm gonna spend a couple minutes now just talking about some of the new things we've got for uh unity and uh game development stuff uh we've got a great support and rider for for unity and this this iteration we've done a lot of interesting things with assembly definition files if you're not familiar with those they're a json file like you can see on the screen right now which effectively defines an assembly or a project for an assembly there and we've added a number of interesting things we can do there so for example here at the top you can have references you can have a references to an assembly called post processing we can click that and navigate to the definition of that it's a fairly boring definition but you can still see it in fact if we click through to that one again uh we can also do the find usages if i hit the find usages keyboard shortcut we can see everywhere that post processing is used and it's only used in two different places but uh still useful and you can also do references by guide so uh unity will reference all files in its projects uh by guide so if you rename it it doesn't break references and things um unfortunately if you've got that in your assembly definite definition file it's really hard to see what it is so we've added these little uh hints at the end there to show you what they are so this particular assembly definition is referencing unity editor.testrunner and unityengine.testrunner and again i can control click that and get through and i can control click this one and get through there if i jump back to i think this one's probably better and if i do find usages on that it will show you the find usages of where it's being used as a plain text name and also as a guide there so we kind of understand what's going on with a bunch of things there other cool things in the assembly definition file you've got this idea of version defines so you can well actually let's let's start with something else where is define constraints you can have an array here of define constraints and what this is saying is that the assembly definition will only be compiled if particular defines are met so if i've got a define called unity well 2020 i get code completion and it allows me to select known constants that are already being used in the project uh and then everything's good but if i say well okay i want to be 2021 then this project isn't referencing unity 2021 so that is grayed out and it's showing me that it's an unmet defined constraint and the assembly definition going to be uh compiled we can um we can even do uh expressions with that as well so we could do 2020 or unity 2020 and it will show you which part of the defined constraint there isn't being met but also your overall that it is being met and everything's good um we've also then got uh some work with version defines as well so you can actually create your own uh defined symbols and these are based on what packages you got installed or what version of unity it is you've got installed so here we we're saying well i i want unity installed and it tells me that i've got unity 2020.3.23 f1 installed and then i've got an expression to match that and if that expression is correct then we're going to define this tooltip fixed symbol there and again this is something that i could use here i could use tooltip fixed and everything is good um if we have an expression that doesn't match so i'm saying well it's got to be 20 21.2.3 and exactly then sorry or above then it that doesn't match our 2020.3 and so it's saying that that's not defined and it shows us why it's not defined we can do a sort of similar thing there and if we want to use uh a package then we can use code completion there to select uh packages there as well so a lot of um nice features there nice sort of uh quality of life features for working with um uh i wanted to talk about assembly definition files uh which is good um the other things that we can do this uh a feature which i really like and which people are never gonna notice and that's my favorite kind of feature it's just something that just works and that is that we now understand how to highlight uh referenced code correctly so i've got this file here unity installation dot cs it's part of a package which is not part of user code so this is something that unity is going to compile for you but it's still distributed a source so you see it on the disk as source and in fact if i find out where it is there we can see that it is still under my packages node here and we've got uh unityinstallation.cs so i can navigate to it i can view it i can set breakpoints in it so we can debug it but up until now we haven't been able to show you the correct highlighting in here if there are hash if directives here because it's not part of a project so ryder doesn't know what how this was compiled it doesn't know what symbols were defined when it was compiled and as far as it's concerned all of these are undefined and in this release we've now actually sort of figured out what they are and we tell ryder and give it that context there and so it knows that actually it was defined with unity 2020.2 or newer and it's then highlighting the appropriate uh part of the file there and so that just works for you so that's a really nice little feature a couple of other smaller features we've got uh are things like if you've got a serialized field here which has gotten xml comments we can do alt enter and we can do convert xml doc to tooltip attributes and now it will rewrite that xml doc comment as a tooltip which is going to be used in the unity editor inspector window there and if we hover over this now we actually see the tooltip itself is defined there but then we've got it down in the bottom there as uh part of the quick dock and if we use this in uh code completion there so with uh time to next wave when our pops out there we see the tooltip being shown in the uh in the window itself just put it there so we can do that uh and i can do uh yep convert to tooltip as that's uh yeah convert to next uh right now that's that one actually um the only other things then that i'd like to call out are uh two nice little features if i go this way and have a look at this here um we've supporting ios usb debugging for apple m1 devices and also linux as well so we've added support for that so you can now debug games which are running on an iphone whether you're running on an apple m1 device whether you're running on linux as well uh and the other thing to point out as well is that meta file tracking has been uh completely rewritten and so it works now with more cases there so we used to do it so that any file which was part of your c-sharp projects would be automatically handled for you uh we now work with anything that you can see in the unity explorer window so it's better and more more resilient there moving on to uh unreal uh we've got rider for unreal which is uh still in preview right now and uh what we've been working on uh this time around though the big news the big item that we can talk about uh right now is uh unit testing we work with the unreal engine testing framework so we'll discover those tests and we can run them straight from rider itself there and we'll show all those results then in the tool windows uh with all the sort of features that you'd expect um the other things we've been working on is of course getting it ready for release we've been working on it making it work better with uh unreal uh projects with the newer versions of unreal unreal engine 5 later versions of unreal engine 4 and we're starting to work on bringing that in and merging that into the main code base so we'll have more to talk about that very very soon and uh also we're hoping to bring a linux build of unreal engine i'm sorry rider for unreal engine um out in the next week or so which is going to be rather fun so we've already got a mac build we've got a windows build as well so you'd not don't have to be on windows you don't have to be using visual studio there you can use the mac you can use your uproject files directly and we're going to be supporting linux on that soon as well um which then brings me to the end of that uh and then i think i'm handing over remember heading over i'm heading over to me i think aren't they so that looks like i'm handing over to me uh to talk about something completely different and that means going back to one of these files there um a nice feature which has been asked for a lot is um to work with code cleanup on save and we've added some actions here for actions on save this is configured through the settings uh dialog there if you want to try and find it you can always search you can search just about everywhere in in rider there just type save and we come to this actions on save page here this is this page i believe is new for this release here and it shows us a number of different actions which you can do when you save a file and we've got things like um you know file watches which we can configure running uh lint files for for web-based files and then we've also got this reformat and cleanup code there you just need to check the checkbox choose which profile you want to run so we can have code cleanup profiles and these can be different sorts of uh co-cleanup so you can have it to say clean absolutely everything up change um uh type names into var change uh use expression body syntax use all these kinds of things or you can say well actually no just reformat my code make sure that spacing is correct that line breaks are correct and anything in between you can define your own profile which you can select and use there another useful thing here is you can apply that to the whole file or just to change lines as well so that's a really nice thing so instead of having to change your entire file is just make sure that the bits which you've edited are formatted nicely and the other thing to point out here is that um we've got this configure auto save options down here rider does a lot of it will save your files automatically for you so it will save files before doing a refactoring it'll save files uh automatically if you leave the ide idle for a while and so it does automatic saving and we don't run format code every single time we save because that could just get a bit surprising you know just about to refactor and all of a sudden your code is reformatted what we will do is we will only uh reformat your code when you explicitly save it there when you hit the sort of control s command s there to actually save the file itself and uh that's me so now who do i hand over to me back it's the khaleesia again no i i do want to add one thing to what you're saying those profiles are very very very configurable so if you only want certain things to happen you can go and create your profiles and it's pretty awesome so i i showed some people that and kind of blew their minds so all right let's uh matt could you could you do the honors and switch to my screen so that i was just about to show how configurable they are there's just millions of things there look at that there's loads of things and it's the uh khalid style okay anyway let's change back to there you go you're in control all right so uh i think we're saving the best for last but um you know we like f sharp here at jet brains uh f sharp is awesome so uh one of the one of the not so big surprises but is big news for everybody uh f-sharp six support drops with net six and we have f sharp six support so in this release you'll find a lot of quality of life improvements code completion refactorings navigation and just generally a lot of f sharp awesomeness so i'm going to highlight some of the big things that we announced uh in our announcement uh one of the first things is kind of just allowing you to create variables based on tuples and single case union types so here i have some nonsensical code but it kind of gets the point across if i was to go here and hit alt enter i can say you know create a let binding and i can choose either to use the async int or i can just use let bang i'll use this one and you can kind of see that in place uh let's do another light binding uh let's use the async one oh i already did that one um let's go here replace one occurrence and we'll do this one so you can do that which is kind of neat you can also if you're returning two types a tuple in this case i'm returning a tuple uh we'll actually let you uh deconstruct here so we can do this which is just taking the tuple which isn't really that interesting or we can break it apart deconstruct it so if you like deconstructing tuples yeah writer will do that for you now so i'm just going to switch this stuff back because we'll just continue down the road uh so uh another nice thing in f-sharp if the type you're returning uh implements i disposable we actually detect that now so you can introduce a binding and you can either use let or you can have use which will dispose of that so that's that's really nice okay uh this is this is awesome so i'm i'm a functional programmer i've created the the world's greatest functional method uh and it's the fibonacci sequence but something's just not right you can see uh i have my method here declared and this fibonacci sequence method is right but what's going on well the writer the resharper engine is realizing that something is wrong and it's hey this this function should really be recursive and i do that and it adds the rec keyword to make this function recursive so you don't have to worry about that if you forget that uh writer resharper has your back it's pretty cool here is another thing so for union case patterns writer will actually suggest that you use pattern matching for particular fields so here we have as part of this type a first last which is a tuple of string string so if i go down here i haven't completed this pattern matching yet if i go first last you'll see writer is recommending that i deconstruct the first last field and now i can say first name last name and i say you know now i can use that are you well you can see it down here copy it oh uh oh see writer smart saying hey that's not right so now that was pretty cool i was able to deconstruct this and ryder just kind of hinted as to what this potential pattern matching should be here one of the last things which is really going to be a quality of life improvement for f sharp programmers with the addition of interpolated strings you can now kind of you know increase your selection correctly inside of interpolated strings so here i have name selected if i expand the selection it'll select name then it'll select the braces with name and then it'll select the entire string contents and then it'll select the entire interpolated string so i think this was uh this was uh like um contribution from uh andrew rublioff so that's why i have his name here so those are some f f-sharp improvements that you can find in the latest release of uh ryder if you want to see more you can head over to our github where we have release notes and more detailed you know listed items as to our f-sharp release other than that that's f sharp f sharp six support and rider uh and i think i'll pass it back to uh matt i'm gonna say that the nice try is still not passing it back to me passing it over see you interrupted me i said matt and then you interrupted and i was going to stay in matthias i was just too quick off the blocks there right i apologize so that's good um yeah and um just as a another plug for the what's new page um you know that if you want more details on what is new in any parts of resharper and ryder we've got a couple of fantastic pages detailing loads of uh new updates features changes and whatnot in there but yes we're gonna hand over to matthias uh i think we're very nearly finished i think you've got pretty much the last section matias nearly i have like three minutes i have um actually two more things to say about inspections uh because we had this hiccup with martin unfortunately but first off we have we we we worked on on performance for our inspections and that only applies to a subset of the inspections that you know but just for you to to get a sense of it so we improved performance for those that can be applied in bulk so some of these that i've initially showed and that is because we can reuse the information from solution-wide analysis so when you have the opportunity to turn that on uh you you might do that because uh results from there can be reused to improve that performance and also these inspections uh can now run on multiple cores so i've seen a table i don't have it at hand but you've you you should see for some inspections an improvement in performance uh quite a bit actually um also one thing and it's it's funny that some of our developers also watch the stream where we where we show off the features that they've been building um so uh andrew uh reminded me okay come on also show this pass in uh string interpolation uh quick fix so in this case we we've been talking about interpolated string handlers and you may remember that we can define a handle like this and that this can actually receive an interpolated string um but we can also use and i hope this is the right way andrew that you intended but we can also have a second method which uses the old style basically and in that case if we also have that attribute applied and then go back to one of the usages then you can also see we can actually transform this into the new string interpolation handler by saying pass string interpolation and we're done and this can also be again be done here this can also be done again in bug of course okay but but there were some missing bits about inspections the last thing that was actually scheduled for our agenda was um was something about dot cover and testing so what we've added in this particular version is let's go um to code vision so i currently didn't have it enabled but let's enable code vision let's save and now you can see for the tests that we have and i already run a coverage run for this uh we can actually see how many tests uh this will cover now from the test point of view this doesn't make much sense to be honest let's go over to pattern matching for instance it doesn't do anything meaningful in this case but i want to show you these code vision items here so in this case you can actually click this you also have the knowledge how many tests are actually covering my code at this particular position or in this case for that for that member where the code vision item is shown and from here we could uh you know just run coverage again or or debug or anything and also this is uh available if you needed more more granular basically uh this is also available from from the left hand side so from the gutter from the gutter marks so in this case this one is not covered so we don't see any test makes sense for the one that is covered we actually have four so it was actually just to just to trigger uh that feature to show you and show you that a bit and i think if there aren't any questions that's it from my site um okay i gotta say that's really cool this first time i've seen that one and um that's that's really nice i like that good integration there uh and we will have had a comment there saying that this is zippy is this uh intel silicon hardware and no matthias is the lucky one out of us who's got the m1 so it's like uh there we go this is um running on the m1 uh so yeah again but thank you for bringing allowing us to point out that yes this release does have m1 support and it is nice and zippy and fast so it's it's good and uh we're all jealous that matthias has a better laptop than us you don't need to be so jealous i mean my camera doesn't work so [Laughter] nobody's jealous of martin's microphone so that's something um so that brings us to the end of what we had scheduled there um we've been bang on an hour and a half which is perfect um i think we could probably squeeze in a couple of minutes to show that.net watch uh run configuration if you're available to quickly show us something there khalid or martin oh let's try martin anybody has any questions right now as well throw them in we've we can have a few more minutes i guess to try and answer a couple of questions before we wrap up i just i believe in martin come on martin you could do it are you sure this is not going to end well also i don't have a project open to you thank you yeah yeah let's go let's go so um yeah let me close this and uh let's go back to i love hot reload so uh martin and i actually i'm gonna bring this up plugins oh right here oh man he's updated already man so martin's been updating a lot of the plugins so if the audience can kind of give him a clap for updating plugins but we actually have a netwatch run configuration plugin that we released as part of the advocates we worked on this kind of on our time and it's pretty cool but you can kind of come in here edit your run configurations and add netwatch so this will actually use the commandline.netwatch and then you can pick the project that you want to watch continually you can pass in program arguments and you can kind of set the logging for paucity you can also suppress hot reload there's some kind of applications where you don't want hot reload to happen if you're creating some kind of reple-like experience you probably don't want you don't want hot reload so yeah you can select the project i'm going to select the web project hit apply and now we see this unnamed i probably should have named it but if i run this it'll actually just run dot net watch and now it'll watch our project and it'll just kind of loop oh this problem really so on mac os you have to give um each new project access to your keychain it's kind of a weird thing with net but you only have to do it once per project so here we go hello martin and then i can just change this to hello matt [Music] and let's see oh since this isn't a web project it won't upload or won't restart but if you had like um cshtml or something like that it would so yeah um this is kind of nice for razer application or razer pages applications but yeah it just kind of works so um quiet plug but most of the credit goes to martin he did a lot of this work uh i basically gave him the idea and just kind of watched over his shoulder that sounded kind of creepy but just saying martin did most of the work so thanks to him and so what is it that people need to search for in the plug-ins uh marketplace for that oh just.net watch yeah yeah with watch run configuration so i'm gonna live on the edge right on the demo i'm gonna oh crazy kid yeah crazy all right okay right um we have uh one last question here which is uh i'm not sure i know the answer to this one do uh do you all know any news about the new runtime of.net six that was re-implemented using c-sharp is there some news about it in rider i'm i must confess i'm not uh aware of that um the a lot of um dot net is already written in c sharp so you know all the uh base class libraries and uh a lot of other parts of it are written in c sharp so but i haven't heard about anything uh anything else like that there is anyone else aware of anything no looks looks like misha just answered that uh on linux and mac osx the rider actually uses it on it six run time to run the back end of recharger yeah that's a very good point actually and that is why we can support the m1 uh silicon as well because we are now using um net six as the uh there's the the framework for uh va.ness in in rider so all cool okay um okay right well then uh singers are no more questions i will uh add myself to the stream there and say that if you have if you want to get any more information there's a couple of places you can go to jetbrains.com.net you'll be able to download any of the products you've seen here so um you can get trial versions of resharper of ryder of the.net tools.net cover sorry.cover.trace.memory the blog has loads of content and loads of info useful information there blog.jabranes.com.net for us we've got a few different uh twitter feeds there one for jetbrains one three sharper and one for jetbrains rider itself and of course then the jetbrains tv youtube channel where this video will be um available uh but then if you're watching this you're probably already there so that's that's the thing um and um that then leaves me basically to say uh thanks for joining there are way more videos that we've got available on the jetbrains channel there um so uh what is it like and subscribe comment click the bell or something what is it the cool kid say yeah thumbs if you liked it uh subs if you loved it i think that's what they say on youtube i don't know i have no idea i'm too old for this nonsense um but thank you very much for joining and um if you have any more questions please let us know um pick us on twitter on the blogs and what have you and we'll see you in the next one you
Info
Channel: JetBrainsTV
Views: 2,299
Rating: undefined out of 5
Keywords: rider, resharper, webinar, what's new, .net, code analysis, rider 2021.3, resharper 2021.3, sql, f#
Id: eereCKwEOq0
Channel Id: undefined
Length: 94min 42sec (5682 seconds)
Published: Tue Dec 14 2021
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.