Master New Cross-Platform IDE for .NET: Rider by JetBrains | Elias Spock | Skillshare

Master New Cross-Platform IDE for .NET: Rider by JetBrains

Elias Spock, Chance favors the prepared mind.

Master New Cross-Platform IDE for .NET: Rider by JetBrains

Elias Spock, Chance favors the prepared mind.

Play Speed
  • 0.5x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 2x
27 Lessons (2h 45m)
    • 1. About the Course

    • 2. Intro - Basics

    • 3. JetBrains Web Site

    • 4. Installation

    • 5. Plugin Installation - Presentation Assistant

    • 6. More About Settings

    • 7. Run and Debug Configuration

    • 8. Debugging Breakpoints and First Chance Exception

    • 9. Cloning a GitHub Repository

    • 10. Inspections

    • 11. Navigation - Solution Structure

    • 12. NuGet in Rider

    • 13. Code Editing - Selection

    • 14. Fold/Unfold, Move API Members

    • 15. Copy/Paste

    • 16. Remove and Comment

    • 17. Code Cleanup and Reformatting

    • 18. Templates

    • 19. Code Generation

    • 20. Navigation - Textual Search

    • 21. Navigation - Major Features

    • 22. Bookmarks in Rider

    • 23. ToDo in Rider

    • 24. Using IntelliSense

    • 25. Refactorings - Main Refactorings

    • 26. Quick Fixes in Rider

    • 27. Refactorings Demo

  • --
  • Beginner level
  • Intermediate level
  • Advanced level
  • All levels
  • Beg/Int level
  • Int/Adv level

Community Generated

The level is determined by a majority opinion of students who have reviewed this class. The teacher's recommendation is shown until at least 5 student responses are collected.





About This Class

Learn about the main competitor of Visual Studio: JetBrains' Rider which enables Cross-Platform C# Programming.

Modern integrated development environments or IDEs, in short, allows us to perform miracles. Why? Because we live in the twenty-first century and modern computers are so powerful that modern IDEs become indispensable assistants which can save us thousands of hours. A decade ago, no one could imagine how much powerful IDEs will become in the future. However, nowadays, developers are armed by superpowers such as deep static analysis, automatically performed refactorings, code fixes, super simple navigation, and many other things.

This course covers:

  • Navigate through the code base: how to select code, how to find code, camel humps in IntelliSense, navigating through the tabs

  • Edit and format the code base: deleting and removing code, formatting, commenting and applying refactorings

  • Run and debug your code: working with breakpoints, new features in Rider

  • Code snippets: existing code snippets and creating custom code snippets

  • Refactorings: a great number of refactorings that can be applied to enhance the code base

  • etc.

I need to warn you that Rider is a paid IDE but despite this fact, many professional developers use it on an everyday basis.

Rider provides tons of refactorings, analytical features, fixes and a ton of other features. So, you'll see the following:

  • Installing Rider

  • Rider Settings

  • Creating Code with Rider

  • Exploring Code with Rider

  • Refactoring with Rider

  • Unit Testing with Rider

Enroll and start learning how to double your coding speed in Rider!

What you’ll learn

  • Harness the power of modern IDE - Rider
  • Rider Settings
  • Refactorings in Rider
  • Code Editing in Rider

Are there any course requirements or prerequisites?

  • Basic C# skills

Who this course is for:

  • Any C# developer who wants to get acquainted with new IDE for C# developers - Rider


Meet Your Teacher

Teacher Profile Image

Elias Spock

Chance favors the prepared mind.


I'm thankful enough for that I love what I do.
I began my career as a postgraduate student participating in Microsoft ImagineCup contest.
I've been working with .NET platform since 2003. I've been professionally architecting and implementing software for nearly 7 years, primarily based on the .NET platform. I'm passionate about building rich and powerful applications using modern technologies. 
I'm a certified specialist in Windows Applications and Service Communication Applications by Microsoft.
I'm one of the coordinators of the MSK.NET User Group in Moscow.

"If it's work, we try to do less. If it's art, we try to do more." - Seth Godin.

What I can say is that software is my art.

See full profile

Class Ratings

Expectations Met?
  • Exceeded!
  • Yes
  • Somewhat
  • Not really
Reviews Archive

In October 2018, we updated our review system to improve the way we collect feedback. Below are the reviews written before that update.

Your creative journey starts here.

  • Unlimited access to every class
  • Supportive online creative community
  • Learn offline with Skillshare’s app

Why Join Skillshare?

Take award-winning Skillshare Original Classes

Each class has short lessons, hands-on projects

Your membership supports Skillshare teachers

Learn From Anywhere

Take classes on the go with the Skillshare app. Stream or download to watch on the plane, the subway, or wherever you learn best.


1. About the Course: Hi. This is injury spark from injury spark dot com, and they'll be leading you through the course. I've been working with the dot net platform since 2003. I've been professionally architect ING and implementing software more than 10 years, primarily based on the DOT that platform I'm passionate about building reach and powerful applications using modern technologies. I'm a certified specialist in Windows applications and service communication applications by Microsoft, and I'm one of the co organizer's off the most kudos that user group in Russia. And here's my teaching approach. No fluff, no ranting, no beating the air. Steam your time course material is succeed. Yeah, comprehensive. All the important concepts are covered particularly important topics not covered in depth for absolute beginners. Offer my help on Skype absolutely free if requested. Take this course and you'll be said it's fine. Welcome to the course Master. New cross platform i D for .net rider by jetbrains. There either is a new cross blood from I D, which helps you to develop dot net a Speedo. Now dot net core is hammering or unity applications on Windows, Mac or Lennox, and so in this course, you learn how to harness the full power off these new powerful I D E, which is nowadays, is the main competitors off visual studio. So here's the course outline We're going to learn. Why would you prefer Rider over, Say, visual studio? We will look a pricing off writer how to install it. I'll walk you through the installation process, all the settings, how to run and debug applications in the writer. And after that, we will take a closer look at more settings provided by a writer. You learn how to use the editor provided by writer how to Reid code how to select code etcetera. The writer provides a lot of features related to navigation and searching. It is very powerful in these fields, so you learn how to navigate and search through the code. Using keyboard shortcuts, you learn about a lot off re factoring, and here you'll see a great power off writer because the rider is extremely powerful injury factoring and called analysis. So applying re factoring so you'll make your cold cleaner and taking into account their results off performing code analysis, you'll make your code much more robust, and of course, you'll see Rider in action. So we're going to implement a simple application and you'll see how to do that, using all the features and how to write unit tests using writer. So a lot of things are waiting for us. And, of course, you learn about many additional features along the way. I encourage you to general right now and learn about the new I d buy jetbrains called a rider. It's very likely that writer will replace your beloved visual studio. Okay, then I'll see you inside the course. 2. Intro - Basics: and the first thing we want to address is that Why would do you prefer writers saying over the same visual studio? The first and quiet important thing is that Riders 64 beat while visual studio remains a 32 bit process and the consequences are quite clear. Because of that. A rider cattle work much faster because it has a lot of memory under its disposal. I mean that a rider can store much more cash in Ram. What we can't say about visual studio visual studio had to become a 64 bit process long ago , but it didn't happen. And who knows when will it happen? The second reason is that a rider is a cross platform I. D. So it works on Windows, Lennox and Mac. Yes, Avarice, visual studio code. But the problem is that that you have to learn visual studio code for programming on Lenox and Visual Studio for Mac to write programs on Mac and actually these pieces off software. Yes, so they're similar, but they're still different. They have different set off features, and you have to get acquainted to both off them. If you write programs both on Lenox and Mac from time to time. While writer will look the same on all the glad firms. What is a writer roughly speaking? Rider equals in Tala J plus every sharper in tell Ajay idea, in my opinion, is the best i d for Java developers and of course, intelligently idea is the product off jetbrains. And if you're a C sharp developer than I bet you know what is every sharper? Every sharper is the best productivity tool for visual student. And you must know where a sharper s a plug in for visual studio, Every sharper is an extremely powerful tool which can perform different re factoring is different analyzers It even can build c sharp code. So what jetbrains deed is that they separated re sharper from visual studio and made it cross platform and intel. Ajay idea is used here s a front end and it is cross platform as well because it's written in Java. So using some slick tricks, quite slick tricks, I would say guys from Jetbrains managed to Mary Intel Ajay, Andriy Sharper, so intelligent is used s front end and re sharper ass back end writers supports quite a lot of features, including the following so it supports the following languages. C sharp visual basic dot net and F sharp. It supports unity for creating gains its support Zam Arena a speed at net. It supports such weapon which is s jealous creep types creep html, CSS, sas and so on. It supports no GS react angular vou, Jess and ah concerning the dotnet framework it supports full dot net framework and the modern cross platform dot net core riders support different version control systems such as Geet, subversion, mercurial, perforce and TFS so you can work with them out of the box. And it supports sequel s well so you can work with sequel and data basis without leaving. Writer, you can connect to data basis at its chemists and table data around queries and even analyze Caymus with UML diagrams. And of course, you'll have syntax highlighting smart cold completion and on the flight called Analysis called for matting and navigation. And finally, writer supports various plug ins that can be installed to enhance the i d by bringing some additional features into play. So let's visit the website off Jetbrains and Luke at a writer more closely 3. JetBrains Web Site: So here is the main page off rider on jetbrains dot com slash a rider, and the first thing I want to say is that the writer is not free, so you have several options. If you want to buy a writer for individual use, you can either buy a year's subscription. And if you buy only the writer I D. It will cost you $139 per year and, ah, the second year will cost you 111. And starting from the third year, it will cost you Onley $83 per year. I bought the every Sharper Ultimate Plus a writer package, and for that you'll pay $179 for the first year. And starting from the third year, you'll pay for that $107 or you can buy it monthly and so monthly you will pay $13.9 per month. If you want to buy only the a writer I D or you will pay $17.17.9 for re sharper ultimate and writer. And if you don't want to buy it right now and you just want to try it, then you have one month off a free trial. So for 30 days you can try a writer for free and to install writer. At first we need to dumb Luke dry either and clicking on download. You'll get to this page where you can pick up the required package and a free 30 day trial will be provided here. So I'll just will download the X e File the vaccine Stoller for Windows, and I woke you through the process off installation in the next lecture. 4. Installation: when the installation process is completed, we can launch the Jetbrains writer. I'm not going to import any settings to show you the whole process off adjusting off all the settings that is asked by writer initially. So I'll click OK, and at first we need to select a U EY theme. You can choose either Dark Lola and light you I things and you can guess that Dark HLA is a dark your theme while Lite is a lighting guy theme, so I prefer dark lower, so I'll stick with the CEO I theme and I'll click next going to added her callers schemes. And among different color schemes, you can stick with the re sharper color scheme, visual studio, dark color scheme or the dark or course scheme for users who are more familiar with intelligent e than visual studio. Actually, the airy, Sharper's dark and visual studio's dark schemes are quite similar. But as it says, that visual studio scheme is a bit minimalistic and soft, while the sharper colors are with highlighted identifiers and I'll stick with the re sharper. And after that I'll go to key maps, and again, you need to select one if you're accustomed to visual studio key map, then maybe you'd better stick with visual studio key map. And if you're a costume to the re sharper key map, then you'd better stick with re sharper key map and idea default. Key map is for Java developers who worked with Intelligent Idea before my choice. Easy, sharper key map. And after that, I'll go to default Loggins by default. All the plug ins are enabled, it seems to be, but I don't need the support off Unity soil. Disable it and I'll customize the version control system. I'll disable CVS, Queer Old Force and Subversion. I'll stick with Didn't need hop. I like of sharp, so I leave it enabled. And what tools are here? You can see that in other tools, there are the falling boxes, remote access. It seems that remote access means the remote debugging, though I'm not sure about this tick box. Um EL. To work with Diagrams Terminal is a plug in, which allows to send command seen the terminal inside writer, the support off xsl, TENDEX path and other plug. It's so I'll go further. You can install and enable additional plug ins such as idea of in which emulates the team editor, you can install the keep allocations viewer, and it's a very cool plugging we child recommend you to install. If you want to work with Biden, then you might want to install the bite on community condition. If you want to view the log files you can use, the ideologue featured blogging for that, I'll install it. Maybe we will look at it a little bit later. And if you work with the teen city as his server for continuous integration, then maybe want to install this one s well and you can get the support off. Coburn Atis If you off course, know what it is, and I will start using Jetbrains Rider. The license is already applied, so it is licensed to me and you'll get this window where you can create a new solution. Open up an existing solution or a project were open a certain file or an entire folder, which consists off several source files. Or finally, you can actually check out Source cooled from virtual version control systems such as Geet and other version control systems that you selected to be supported previously. This time I'll create a new solution, and you can see that creating a new solution you can use different options. You can see here several sections, and in the first section you can create an absolutely empty solution. And after that, set up all the things on your own. There is a section related to dot net core projects, and in this section you can choose class, library Console application unit, Tasked Project or a Speedo Net Core Web application in full dot net. You can select class library console desktop application, which is a WP F APP unit test project, a speed up net and a shared project, and you can create as Amarin application as well. For now, I'll stick with the consult application, which started the dot net core, and here you can ride a solution name and I'll name these solution test writer Damn it, and I'll create a git repository. By taking these box, you can choose the languish of a project so you can choose C sharp F sharp end VB. And in this case I'm going to stick with C Sharp and our project will be based on dot net core rap 2.1 and you can see here the project template information. And finally you need to click on the create button to create a solution. And finally this solution opens up. Let's dig into the details about Jetbrains rider in the upcoming electricity, so that seat for now. 5. Plugin Installation - Presentation Assistant: and here we are in the editor in the Jetbrains Rider. However, we're not going to write anything yet, because at first I want to install a specific Blufgan, which will show you on the screen the keyboard shortcuts, which I use throughout this course, and to install it plugging in the jetbrains writer. You should go to file and settings or just press control Old s. And here's the settings window. The section off blackens. The blood in section is divided into three tabs called Marketplace Installed and updates and blackens In the marketplace are official plug ins from the Jetbrains Blufgan repository that you can easily install and thus add support for different things like version control systems. Boost your productivity and so on. In the installed tab, you'll see old installed bludgeons, and you can enable disable them or remove so do disable it. Blogging. You can uncheck SPC Box and in the updates tab you will see the available updates for the plug ins that are currently installed. So I'll go to market place and search for present, and the Blufgan that I want to install is called Presentation Assistant, which shows short cuts off any action I'm going to invoke. So I want stole it. It asks me to acknowledge the fact that the black and vendor can collect some personal data . I'll accept it, and after that I'll have to restart the I. D. I will do that. And in the next lecture, we will continue to learn more about Jetbrains Writer. 6. More About Settings: and we're back again in the writer I D E. And before writing some code, we again need to go to settings and learn a little bit more about settings in writer. So I'll go to file and settings. We already looked at bludgeons, so I'll go to appearance and behavior. I'll expanded and we'll go to the first item, which is gold appearance and not surprisingly, in the appearance section, you can change some settings related to I D styling. For example, you can change here the theme and override the default fund for the theme, which I wouldn't recommend to do. There are two check boxes related to accessibility. Such a support screen readers and the just colors for it. Green vision deficiency. The options in the U. I. Option sections are quite self evident, and in 99% of cases, the default settings here are quite logical. Antill izing is not what you want to change. In 99% of cases, Windows animating doesn't have any significant influence on performance, so I wouldn't recommend you to uncheck the animate Windows option. If you want to watch the memory consumption. The I mean the member consumption by the I D. Then you can take these box, which is called Show memory Indicator, and you'll see how much memory is consumed by writer. If you want to enable by pixel scrolling instead of byline scrolling, then you might want to check the smooth scrolling box. But I am not going to do that. There is a special mode in a rider called Presentation Mode, which is a special mode for demonstrating purposes. Like when you give a talk at a conference and specifically for that mode, you can set the phone size, which is by default equals to 24. The next section is menus and tool bars, and here you can customize the menu. You can move down and move up specific menu items at separators at actions and sell on in the system settings. You also can manage some options. Such a surreal, open last solution on start up, which is turned off by default, and they like it. It's more handy when you can choose on your own which solution you want to open. To avoid unintended exit from the application, you can take the box called Confirm Application Exit, and it is enabled by default, so I'll leave it s cities. The other options here are not so important in the majority of cases, and some of them are quite advanced and I wouldn't touch them. System settings, in its turn, contained several sections such as passwords. Indeed, the writer can save your passwords. So once you use to access password protected resources such as version control repositories and data basis, it can save particular passwords. So you can set up here the bath to a database off a key pass. Best word manager now. Http PROXY If Ryder should use an http proxy to access Internet, then you might want to specify the proxy settings on these settings. Page data sharing about sending usage statistics to jetbrains Service Update Settings Manager The mode off checking updates for a writer. So, for example, you can turn off the automatic check for updates and at last, in the Android sdk section, you can installed a particular android ap eyes and as decay tools and manage the sites which are used to check the updates. For android as the case and tools, the key map section is all about settings he related to keyboard shortcuts For now, I used every sharper key map and to change the keyboard shortcuts for particular actions. You can either search for a particular action using these tax box or find it in the list and right click on it. And most likely, you'd be interested in the at keyboard shortcut menu option, which allows you to assign a keyboard shortcut. So to change it, you can just just press the keyboard shortcut on your keyboard like so. So I pressed Controlled Plus W, and it says that it is already assigned to particular action, so I'll cancel these change. And of course, these actions are not about navigation through the code base, for example, or her factoring and such. The next Big Settings section is related to editor, and it provides a lot off settings. I want to change the default fun size I got to the front section for that, but you can see that actually, the current formed and fun size are said in the color scheme. So I'll click on that and I'll get to the color scheme phoned, and I want to be the default fun size for the editor to be, say, 18 and you concede here that the color scheme settings override the default settings, which are set to mono spaced. We've fund size equal to 12 and you can see here a lot off sections. It related to different technologists, land witches and so on. And, of course, all these settings will be related to the editor. If I go to, for example, Javascript. You can see here that we have a little window here with a sample off code, which is clickable, and I can easily manage the caller, for example, off a particular parts off cold. So they're clickable. If I want to change the color off global function name, I can click on it and then change the color. Or I can go to the key word like function or bar or this, and I will be able to change the color for the keywords in JavaScript. You might remember that these management was extremely inconvenient in visual studio because you had to know the name of a particular setting to set the color correctly for a particular part off gold. And in this case, everything is clickable in the code sample, so it's very convenient. You also can manage the cold style. So, for example, if I go to see sharp, you can see that I can manage here the Indian style and then size and other settings related to tabs in dance alignment naming in these tab so you can see that we have multiple tabs here. Here, you can manage the cases for different parts of gold. So if you don't like the traffics, for instance, private fields, you can remove it here. For example, in the cold style tab, you can manage the severity for different suggestions. For example, you can treat this suggestion to use var instead off a full glass name, Sanchez suggestion or hint or a warning. I prefer to see it as a hint, but everything depends on your preferences. The default style off braces for C Sharp is BSD style. Well, curly braces are vertically aligned. I like the current again and the reaches style. It's well so you can change it like so. And you can see now how curly braces will aligned after changing their style here. And you also can manage the gold generated for not shaking here. Inspection settings are related to inspections provided by the every sharper s a back end in the system off rider, you can entirely disable the code analysis here by un checking this box. In the majority of cases, all the options here are set logically, you can change the inspection severity in the inspection severity section for different languages and technologists, you can see here a great number off options and for the majority of them, you can change the severity by going here and selecting one that is appropriate for you. The code vision is a cool feature provided by writer which is intended to in reach the code by showing additional information about it, such as the number off usage is off particular FBI members and the number of inheritors and such. And you can manage here where to position the metrics, the number of metrics available visible, I mean and so on. Here you can manage the custom cleanup profiles and the two default profiles are full cleanup and reform at the code and you cannot modify them here right away. But you can clone them to make new custom profiles and then apply them manually in the process off writing the code life templates are used to generate code in existing source files. For example, by the wave of a magic wand. You can wrap some code in the trackage block, for example, and to use a life template, you need to use a corresponding shortcut and you'll see how I use them throughout the course version. Control systems are out of the scope of this course, or we're not going to dig into the options to related to version control systems. You rarely need to manage the options related to debugging. And if you need to change such options concerning build, execution and deployment, then you want to visit the section, which is called Build Execution and Deployment. And I would say that this section is an advanced one, and we can't spend a great amount of time to learn about all the options here. It's just unfeasible to cover all the options related to debugging and such, because that would require, too explain many advanced topics. So here you can see the options related to debugging to Newgate package management, for example, you can uncheck here. The box, which is called include pre release. If you don't want to see pre releases in the results of searching when you uninstall and you could package you may want to remove all the dependence is so you may want to check this box and so on. In the unit testing section, you can set up how many assemblies in parallel you allow to run and to set specific settings related to specific frameworks such as X Unit and Unit and Emma's Test Concerning and unit. You can see that the writer enables support for any union to end and Unit three, you can manage the environment current directory concerning and Unit three here, which can be quite helpful if you want to get something from a specific place. After running the union tests and actually continues testing, which is a great feature related to task driven development, engineering practice is built in a rider, so by default rider will Iran. The tests in continuous testing sessions on builds and you can change these settings to they save action. So when you'll save a filer or a project, a writer will Iran. The corresponding unit tests continues. Testing for free is a very cool feature in the languages and Framework section concerning C sharp. You can manage some options that are related to see Sharp Interactive, where you can type in the commands directly written in C sharp code. I mean, you can Ron C. Sharp code on the fly in the separate window, which is very similar to what F Sharp interactive provides. And if you want to manage the options to related to different tools which are integrated into the writer I D, then you may want to visit the tool section, and you will see different settings here related to Zamel Preview. If you work with WP f Ssh Terminal Terminal, when where you can issue different commands. Some options related to database Web browsers and son. So I'll click on Save here, and you can see that the form size has been changed. OK, then that's it for the Settings window. For now, though, we will get back from time to time to different settings in writer throughout the course, and let's move further 7. Run and Debug Configuration: Now I want to say a couple of words about running and debugging projects and about build configurations. C Sharp solutions and projects created in writer are fully compatible with solutions and projects created in visual studio. So solutions are of S L N extension and projects are off CS Project Extension, and they internally have the same structure. So the top organizational level is a solution which consists off one or more several projects. And because of that, you have, ah hierarchy off build configurations. A solution configuration consists off the set off options related to all the projects in a solution. So by default as solution has two configurations one for a debug mode and another one for release mode. A debug mode has its own configuration, which specifies how projects should be build or maybe not build if you uncheck the corresponding check boxes. So in a debug mode, by default, all the projects will be billed in a debug mode, while in release configuration, they will be billed in the release mode. And of course, each project configuration defines how the project should be build. And for managing the field of a project, you can go to a specific project, right? Click on it and go to properties, and you can see here a bunch off options related to debug and release configurations. So you can see here that the code will be optimized in the release mode, while in debug mode it will not be optimized and it will contain de bock symbols. So this is a difference. And not only that without foot bath is also different and so on. And of course, debug and release are the default solution configurations you can and the other configurations as well by going to solution properties and clicking here on the plus sign, and you can give here and name for these configuration, you can target the CPU. This is going to be the any CPU build. I mean, that's a platform. And so now we have three solution configurations, and another important thing to mention is that to run or debug the code in writer, you can use different Iran and debug configurations which represent a set off start up properties, and for now we're using the default configuration suited for dotnet projects. So if we go here to edit edit configurations, you can see here that we are now using the default configuration for dotnet projects. And here you can manage another set of options so you can pass here. For example, the arguments to the program changed the working directory yours, mom her on time and so on. Target the framework and specify the environment. Variables. You can also add new configurations. By the way, there are different templates for different types of projects, and all the projects have their old default template for running and debugging. To build an entire solution, you can press control shift being, and in the pop up window, we can see that build succeeded to Ron in a default configuration. You can press control of five and to debug in the default configuration template, you can press alter five so we five press control of five and click run. Here you can see the hello world string in the output. That's it for over viewing the Iran and debug configurations. I hope now you understand that jetbrains writer supports roughly the same way off configuring the solution. So we have several configurations out of this solution level, and we can have several configuration spirits project and use different templates to specify the startup properties 8. Debugging Breakpoints and First Chance Exception: Let's look at how to debug applications in the writer I d. For that, I'll create a new class called character. And let's say our character will contain some properties like a name health. And we can incur some damage here by calling the heat method, which takes an integer so I will subtract damage from health. And let's say that I want to debug these application. I want to create a character and call the keep method passing. Let's say 10. And to put a break point at a specific line of code, you can press F nine and you can see here there read circle, which means that we have a break point on this line. You can add break points by clicking the left button off a mouse. You can see here that we have a black cross inside the red circle, and now if I press all five a running our application in the debug mode, we heat the break point. And in the pop up window, when the application is in the suspended mode, you can see the local variables. Here they're stayed. You can see the least off off threats here and the frames frames comprised the cold stack. Actually, if you want to step in, you can press like in Visual Studio F 11 and you can see that we stepped in the heat. Call the call to the heat method, and if I press F 11 once again, I stepping the next line of code. And if I press F 11 once again, you can see that now the health equals minus 10 while damage, which is a local variable in the heat method, equals 2 10 So basically, the debugging process is very similar to what you've seen in the visual studio. But Writer also provides the analytical tool for tracking the memory traffic so you can go to the memory tab and click load classes, and you'll see which objects consume more memory than others. String is always seen the first place almost always so. It's a simple yet powerful tool for tracking the memory traffic. We're not going to dig into specie fix off memory profiling, so let's move further. For now, I'll stop the debugging process, and as you can see, you can do that via the Ron menu, calling the Stop Lord by pressing shift F five Another important feature is that you can set up break points to math a particular condition. So, for example, if you want a particular break point to be reached Onley in a specific threat, you can specify a threat i d here or any other condition, such as SPC FICA value off a specific variable. Another important feature is to suspend the execution when a specific type off exception has been thrown. This feature is gold in visual studio First Chance Exception. And to add a specific type off exception facing which you want to suspend the execution process, you can go to Ron and stop on execution from the main menu and search for a certain type of exception, like invented cast exception. Double click on it. You can see that new exception break point has been created, and if you go to run and have you break points, you'll see the full list of break points. For now, we have to line break points. Ronnie's at Line 13. Another one is that Line 21 and you can see here a more beautiful page for setting up the exception so you can set up here the heat count which manages the heat count until the break point will be fired up or reached. In other words, you can write something to a log automatically when a specific break point was reached. Or remove once heat and other options and another section you can see here. It's called .net Exception break points. And for now, when an invalid cast exception is thrown, the program will be suspended, and we also have some options here so you can remove it once heat enabled just my code and logged the stack trace and the Break Point Heat message. So now even invalid cast exception has been thrown. The application execution will be suspended. I'll remove the line break points and press alter five, and you can see that we stop here when we face the unhand Aled exception off type invalid cast exception, so the stack will not be unwind down to the main method. Well, we face an exception off a specific type which has been added to the least off exceptions that have to be treated as break points. By the way, I want to add that I just forgot to mention that that memory profiling for now works only with the full dotnet framework off version 4.5 and above, as well as dot net core, while Monta is not supported, at least for now. 9. Cloning a GitHub Repository: and I also want to demonstrate you another feature provided by Jude Brents writer and I'm talking about the feature off, checking out from version control and specifically from Jakob directly. And for that, you can click here on Chek Out From Version Control and Choose Gate. And to clone a repository from get up, you need to log in to get hub. And of course, you'll need to feeling the your L and clone it to a specific directory. And to do that, I'll look into get Hub by clicking on this button. And of course, I'll feel in the credentials and I forked project on Get Hub Off an unit and unit project, and I can find it in this combo box or just by feeling in the name of the project. And I contest the connection and it is successful, and you need and installed Geet to see these working fine and I'll click alone. And the process of glowing glowing is going on. And this is how you can clone any the repository from guitar under your account. And after loading up the solution, writer takes some time to build caches and such to make faster your further work with with these particular solution and unit contains eight projects. And throughout the course we will learn the features off Rider using these solutions. I'm I mean and unit. 10. Inspections: you know, I didn't have any plans and to show this feature, but along the way, I recalled about it. So after looting the solution, writer shows that, uh, it detects an inconsistent naming off ST Ick read only fields and it suggests, to update their rules off naming. So writer automatically analyzes, sold this source files in the solution, and it checks out the naming patterns. And if it sees inconsistent naming, it's just too update the current configuration according to the existing naming pattern. So if it sees the mismatch between the default naming configuration and existing naming patterns in the solution, so you can either configure explicitly the default settings or update the current naming rules according to the existing naming in the solution. And after clicking on Update ah, writer will not complain about inconsistent naming eso in in this particular case about a naming off state agreed only fields for now. It underlines it because of another rule, and you can take another decision about this particular inspection by clicking on a yellow bulb in the left gutter. And so you'll you'll be able to, um, to make these fueled as ah property or a PSA Constant or something like that. For now, Writer detects 481 errors in 100 a in 149 files, but these are not compile errors. The's are errors found by a writer as a result of applying different inspections, and in this case, the majority of these errors are errors related to naming rules. And so you can either fixes them explicitly or change the current configuration to change the severity off these rules or change the rules themselves. Actually, the whole least affairs so we can see here errors and solution. Aled. The errors are grouped here by source files and, for example, right here we can see the inconsistent naming again. It's in inconsistent, inconsistent naming off local variables and to change. Ah, how writer treats such things. You, Congar Oh, here to inspection and configure inspection severity. Right now it's it has treated s error, but that's too harsh. I would make it neither its hint or suggestion and almost older errors have gone. Only 40 errors in 10 files for now are either detects and all the remaining errors that have been found by writer. You also can go through them and decide. Ah, should writer treat them as errors or not again by changing the inspection severity or fixing the problems right away or changing the rules explicitly, I mean the naming rules. 11. Navigation - Solution Structure: just several words about navigating through the solution structure. You can see here the navigation bar. And in fact, it's a bath to the currently open file we're currently in test case such a bit Fixture, CS file. And to get to this file, Uh, in fact, we need to pass through the path and unit project and the unit solution and unit has data project and then go to test case attribute fixture CS and to jump to navigation bar. In my case, when I have the Harry Sharper keyboard layout, I can press out home, and then I can navigate through this bar by using arrow keys, for example, laughed arrow key than, uh, down arrow key. And then I get to the list off files within this project and unit has data, and ah, I can navigate to specific file. And of course, you can do all these things with the mouse. And you can also notice that all the open windows within Writer ah, and unit Ah Oh, I mean, unit test and you get and then so on. They are all prefixed with a number and to open a specific window, you can press old and the according number. For example, old old eight. It will open up the unit tests window old seven, and then you get And this is how we can never get through the open windows within. Ah, writer. And we also can use control tap to open a switcher window where you can see all the again all the open windows, all the available windows within the writer right now. And so you can just click on the ah, concrete window are a file in the right side to get to that file or a specific window. And of course, you can navigate through the solution structure using your house, uh, and to open or minimize the window, you can, uh, press old one and again, old one to, uh, open it up. And by the way, the solution Explorer has two presentations. One is solution one and another one is filed system. Uh, the solution Representation Ah, view is when ah, you'll see the solution structure in a convenient way from the point of view off off a programmer so you don't see all the not allow the irrelevant files that that have been excluded from the solution and If you want to see the bear file system, you can switch to the file system mode or a review if you want. Uh, and then you'll see all the files on your disk, uh, that are excluded by default. So this can be quite convenient if you don't want to open up and Windows Explorer explicitly. So I'll get back to this solution view. And by the way, there is a button show all files. If you don't want to switch to another mode to to not switch to file system of you. And if you want to see all the files that were excluded from the solution, you can click on this button. And, um, of course you can Ah, Creator Ed you files and projects from here. So right, right button, click on your mouse ad and you can see cured class and to face structure in, um and so on. I older, different options. So, um, you also can press Olten served when you're, uh, staying at a project, and then you can choose a particular option. So this is roughly the same in this case. I can create a class so it will be inserted into this project and roughly the same way we can create new projects and staying at solution level. I can go to add new project using the amounts. And what we have here is ah, weaken. Uh, had a class library, for example. I'll call it in your project. And so here it is. And if you want to rename a project, you can, uh, right click on it and the reflector this or control shift our or even ah, renamed directly via f two. And so I'll give in your name and your project renamed. And I also like the option of rename a route name space, which is experimental for now. I like it because almost always wrote name space corresponds to the name of a project. Eso I like these tick box to keep all the name spaces named correctly. Ah, we are going to talk about control Shift are not once throughout the scores because this is a very helpful shortcut. CEO in the next lecture 12. NuGet in Rider: the new get package manager is a tool that we use on a never day basis. So and and actually for many years already, it's so let's look at how writer allows to work with new get packages. And there are two main ways off interacting with a new good package manager built in the writer. And, ah, the 1st 1 is that we have a window called and you get per fixed by seven. So pressing old seven. We can open up the package manager window and what we have here, so let's look at it. We can see here that we have 10 installed packages in our solution and to see then you could packages in a specific project. We can switch here the solution of you to, ah, specific project, and you'll see the corresponding new good packages installed in a specific project of the A prayer. Lee is tick box allows to include or exclude the pretty early's version softened packages from the view, and these option allows to ah, switch between different sources for, um a fetching that you get packages and in these tab sources, you can see that we have several new good feeds that are enabled right now and ah, concretely your else. And if we switch to the folders tab, you'll see ah, the different paths that are used by then you get package manager to keep cash is, uh, mostly cash is global packages cash local packages and for example, for now, the global packages Cash is ah thes bath. See, users insurance parking ticket package ascended. It's almost two gigabytes for now. Here we can see the log that the new good packager manager rights and you can switch here, the verbose it to level of the log and ah, some other minor features. And if I and get back to Becky, just I I want to add ah, several words about these strip off buttons. This one, this button restore allows to restore the packages explicitly the's a button of Breydel packages in an unit allows to upgrade all of the packages in the ah specific project or a solution if we switch to the solution of you. So these buttons are bound to the currently to the current view. We absolution er or a project. Ah, and and then you get settings here. Uh, the button, which allows to a managed some settings and I wanted to say about another way off in directing within you get package manager and you can oppress for that shift old and and you'll see. Then you get quick list where we can explicitly restore new good packages. One is a restore and another one force their store. And what is the difference is that the force to restore relies on ah, quite smart area heuristics which allowed to so to speak, detect which needed packages should be restored and in big solutions it might be helpful since it ah works pretty well in all the other cases, you can stick with a regular restore option. Okay, lets a switch to a new project renamed and look what happens here. When I switched to ah, our new project renamed Project. I see the available packages and ah, if I want to install the noodle soft geese on, I click on it. And in the right side I see all the details about this package. In the end, it can install it by pressing on the green plus button. And now we can see it inst old in the new project renamed so thesis how we can interact within you could package manager Okay, seeing in the next video 13. Code Editing - Selection: writer s any other normal i d e lows to effectively work with the cold editor and for example, it allows to effectively select the code we need to select code on an everyday basis. I want to quickly go through all the most common shortcuts that allow you to select the code. And as in any other normal editor, you can select all the text in a file by using control A and for example, Ah, like in ah, regular word editor. You can select tax to using shift so shift and arrow key shift right key left key. You can select bywords for that. You need to press shift and hold it and then press right arrow key or left. So these old it all these things work as usually. And ah, if you want to select the whole line, you can press, shift end or being in the end off line, you can press shift home. A rider allows to select code by pages. For example, we can select all these code by pricing control A. Or we can select all this coat by pressing control shift page down. But you can see that these symbol was not included. I don't think that you'll use these shortcut there often. But look at what's the difference between control A in this shortcut. If I expand the explorer here, the unit unit, that's window. And if I go to the top off the code editor and ah, press control chief to page down, then you can see which part off the code was selected. So actually controlled shift page down. Select all the visible code Older, visible cold while control a always select old the code within the source file. Yes, I said, control A is used more commonly, but just in case, I decided to tell you about control, shift page down and pay job. Another shortcut is control D, which allows to duplicate code lines. I use this shortcut quite commonly, and if you want to cut the current line instead of pressing shift and and control X, you can press control L. And after that, using control V, you can passed it back somewhere where you need to and, ah, it's also convenient to select code via control W And when you continue to hold control and press w, the selection will expand, expands Teoh properties the whole class. And if we press control shift and hold control shift and again press W, it will shrink how? It's quite commonly used. A short cut, um, very convenient one. And if you want to select all the document until the end, starting from the current position of their cursor, you can press, shift, end or control shift home if you want to select from the end up to the bottom to select code in columns. Unit to hold control, shift old and then using the mouse. You can select code in this way so you can see that this selection is column based. And ah, I would say that this is everything I wanted to say about the most commonly used shortcuts related to code selection. Okay, see you in the next lecture. 14. Fold/Unfold, Move API Members: several words about folding and unfolding off code from time to time. I use these features, and I also want to at a couple of words about a prime members they're ordering. So, um, to tell the truth, I had some problems with code folding and unfolding, and I had to go to settings Key map and ah, make a copy off the default. Very sharp key map. Yeah. So to edit the key map, I had to create a copy. Then I found the expanding collapse commands, and I signed my own shortcuts. So I had to do that. Well, maybe you're good to go with the default settings, but unfortunately, in my case, I experienced some problems. Okay, uh, I assigned, um, control old minus for collapsing all the code, but in this case, but we don't have enough gold, so let's switch to another solution. So controlled, minus two, collapse. All control old plus to unfold everything, uh, or to expand everything. What's important? The plus about which I'm talking about is on the nam pad. So controlled, plus plus is on the NAM pad and minus is also on the number. So if I want to collapse a particular AP. Remember I signed to this command control shift plus on non pad control shift plus for unfolding and controlled shift minus for folding control shift old and arrow key. We can every order of the A P I members, so control shift old down arrow key and the weapon property goes down, for example, you can see instead of coping, pasting and counting the prime members, you can reorder the members using control shift old and arrow keys. It's a very convenient Okay, then that's all about folding and unfolding and a P i members reordering See you in the next video. 15. Copy/Paste: several words about coping paste. It's apparent that control C and Control V and control ex Ah, work the same way s in other text editors. So this is how I have cut the property and then pasted it. I can call p these property buying control C and pasted toe control V. So all these things work as usual. And in addition, in writer, you can use the other two shortcuts. I'm talking about control shift, see? And this shortcut copy is the full path to the current file. So I just cope it in the bathtub via control should see, And you can see that I can paste it two of the note pad and you can see the path to the open file program the C s and going the same way we can copy their reference for that. You can use control shift, old C, and in this case, you see that we have a pop up window here and it depends on the position of the cursor. So in this case, the cursor is at the age property and you can see the pop up window several options where we can a copy The reference either off a class, either off a property and so on. So if I choose the 1st 1 and then paste, then you can see that we have a full path to these proper team which resides in the test writer Dama name, space and the class character. So that saved about copy and pasting in the writer. 16. Remove and Comment: you can command and remove code in the writer. Well, as usual, like in visual studio. So if the cursor is behind the word and you want to delete that word, you can press, control, delete. And if the cursors at the end of the world and you want to delete that word, then you can oppress controlled backspace, so you don't have to select that word at first. You don't need to do that. And, of course, using delete just delete. You can remove characters to a command code line by line. You can press, control slash And if you want to UN command, then you can press control slash once again, staying at the commanded outline. And if you want to command out a bunch of coat, then you can use control shift slash and toe on command. A chunk of code you can a repeat the same shortcut Control shift slash. So everything again is usual regarding so common commands. Okay, See you in the next lecture. 17. Code Cleanup and Reformatting: Of course, writer supports the older for matting of gold. And you can see here at Channel Cough, um, ugly for mattered code. And if I want to formatted, you can select it and use control. Old l and writer will for Matt that selected piece of code. And you also can call the reformat and cold cleanup window of our control F. And here you will be able to select a cold cleanup scope, whole solution for a specific project or a file or a custom scope. You can set up a custom scope and select a code cleanup profile. You can either run a built in full cleanup and ah, reformat code. So full cleanup includes the reformatting phase and, um, has several additional things that will be a run. Okay. And you can go to custom settings here to take a look at, um, a specific settings off particular, um, profiles. You can Ah, look here. Ah, What? What will going on in c sharp? I mean, if you apply full cleanup in c sharp cold, so it will arrange. Call the fire so you can see figs built in time preference and so on. And if you want to change it, you need to clone it at first. Ah, let's say, um, name it for clean up to. And now you can see that Aled. The options here are available for changes so you can enable and disable particular options here and after that, you'll be able to apply your own custom profile for now. For some reason it doesn't appear. But later on, believe me, it will appear and you will be able to apply it. In this particular case, I will. Iran the full cleanup in Parsi, a city Onley in this file. And you can see, for example, that all the excessive use ings have been removed and all the ah excessive lines empty lines were removed and so on. So use controlled L for for matting just a chunk off selected code and ah, controlled F for running full flashed cleaner profiles, which include removing off unused using excessive lines. Some actions like terms forming specific types in Tovar, keyword and such. So a full cleanup profile should not break your code and this is very important. So it it is related only to cleaning up your code and ah you know smaller. Factoring it should not break your gold. Okay, that's it for now. I'll see you in the next lecture. 18. Templates: welcome back and we're moving further. Okay, so we're either supports a different templates. The most commonly used our life templates and Bostick's templates. Eso, um, among life templates, I would say about before template. And you can see here a special Aiken. And to expand a template, you need to press tab. And now we need to add it all the available items for editing. So we need to give a name for the iterated er and then ah, um, specify the upper boundary for these loop. And after pressing entering the end, the cursor will go inside the loop. What is very convenient If you want to run a reverse for you can use four R and expanded by a tab again. And all the things here are the same. You need to give a name and all the things, but there is a for each template, and you can expand it in the same way. Then added all the edit herbal items and older things go very fast. Very convenient. Ah, way off. Generating the code. And there ah, humorous off life templates. And to look at them at the full least, I would recommend you to go to writers, help and Ah and you know, choose those ones that you'll use on an everyday basis because a different programmer prefer different templates. And you know, 1 may use one particular template most commonly, and another guy will use another one and other helpful template is and greed, via which you can generate Ah, greed. What is also quite convenient? You can throw an exception, so teach our transforms until thrown you well. What else you can generate quickly properties? Ah, so prop prop Jeep prop will generate property with a public getter in public setter a while prop g. Let's expand it. Prop G generates a proper to with a private center. Okay, that's good. I would also say about the try template, which is also quite convenient, and try f which transforms into try finally. Okay, so these templates are my favorite ones, okay? And I would add a couple of words about plastics templates and one of the most commonly used plastics templates concerns the null checking. Let me find a method which takes on argument that can be checked on now. For example, this one min max some of Virginia, which takes string file. So if we want to ah, check the file argument and now we can write file Doc. Now we're not now and, ah, weaken its usual expand one off these templates just by pressing tab and you can see now the IV statement. Okay, that's also quite convenient. Or we can hear throw an exception like this argument exception dot throw and expand it, and the gold will transform into a proper syntax where we throw an argument exception. Tulis speaking. I used post fix templates much more rarely than life templates, but they also can be quite helpful and neat. So I would recommend you regarding plastics templates also to take a look at a writer's help. And maybe you'll find some that will help in your work on the daily basis, and you'll use them on a daily basis. So okay, that seat for, um, templates. I'll see you in the next lecture 19. Code Generation: a writer provides a different options for coal generation and it allows not only to generate cold vier um, templates like proper up G and so on. Writer allows to generate, you know, more intellectual code via old insert. And ah, old insert is a contextual action eso you'll see always you'll see different pop up windows , depending on the context where you press all concerts. So, for example, here you can see that we can generate a constructor. We can override members delegating members generate delegating members, equality members and so on. We live in a d spokes better s. So if I select constructor, you seek your window for constructor generation and I can and I can select here all the properties, uh, and feels that I want to initialize from the constructor and that can change the access rights for these constructor and ah, generate checks for nose. And you can see the constructor here. That's cool. And you also can generate a constructor via template seat or PC tor f. So if you want a constructor which initialize is old, if all the fields and only feels you can you see her F if you want to initialize Onley properties Nancy Torpy If you want to initialize both feels and properties than sit or f b . But ofcourse, old insert is more intellectual. It's, um, more sleek where you can set all the options more granular early, with null checks and so on. So templates are not so smart. Okay, so let's try to use old insert for generating and dispose better in here. Um, in this case, we don't have any members for disposal. And so, by default, we will see, um, and empty Dispose method. And of course, the class inherits from my disposable. Okay, So what else? Let's look at how we can generate equality of members. And this is ah, very cool feature. We can select those members that will take part in comparisons. In this case, I want to select first name and rating, for example, and I can choose here the string comparison mode, orginal and so on current culture. Okay, handle is generated. And what we see here, we can see here that, um, we have one equals method, which takes the cheese chess player type argument and another one we Trevor rides the equals method, which takes an object. I would say that quite a big chunk of code was generated. Um, and we can generate inequality. Compare. This is, um, very similar to the previous one, and you can see here. Ah, how we generated. So we have a private on generated class here which implements to the eye equality compare. And, ah, an instance off. This class which inherits from the I quality compare uh is defined Curis property. And you know, it's it's full fledged bettering. I would see. So it's ah, safe's pretty much of time. Um because otherwise you would have to write all the things manually and that will take much time. Yeah, So it's a convenient thing. And by the way, get his coat here is generated a swell, which provides quite a good range off hashes. And I would also add that you can generate code via surround templates using control voltage a shortcut. So, for example, if I am here in this method and I want to wrap ah, this but this chunk of code into another chunk of code, I can press control J and I'll see the options here. For example, if I then press eight or nine or eight. If I want to wrap it in to try catcher, try finally block and then press enter that chunk of code will be wrapped into the try catch expression to the try catch block. You know, that's also quite convenient. So try these options while programming in writer and you'll find it very useful. That's it about the basics off Gold Generation and writer See you in the next video. 20. Navigation - Textual Search: in this section. We're going to talk about writers. Features are related to navigation in the code base, and they are marvels. Um, like So writer provides a lot of features related to navigation as well. Assert a sharper as a plug in for visual studio. And they're very helpful when you work with the large solution. And let's start with the most simplest thing. Ah, with the searching for text. And of course, the rider supports control F, which can be used for ah, searching for some text using different options such as much case and ah, regular expression and so on. And a control H can be used for replacing a chunk of text by another chunk of text so we can replace here. Inconclusive Buying conclusive yet off course. Ah, uh, this is meaningless. Here, revert back all the changes. And if we want to run the search in the scope, then we can press control shift F and you'll see a pop up window, and we can define here is coped like solution project directory, a specific directory. Um and ah so So we have different options here, and the same options such as much case and a regular expression and mask. So this is, Ah, window with many options which provides that more granular surging feature. And you can use control F three for moving through the, uh, entries. Yep, that have been found. So you search for a word, and if there are many matches you can navigate through them by control F three or or shift F three if you want to go backwards. Yeah. So it just called move to previous SecuritEs. Yeah. Okay, So that seat for the searching in writer, it's, ah, quite easy to use. So let's move further. I'll see you in the next lecture. 21. Navigation - Major Features: Yes, I already said a writer supports many navigation commands. And let's try to look at the main features related to navigation in writer. Well, maybe the main navigation window can be opened through control and which opens a window on their tab, where you can search everywhere. What means that you'll be able to search for any symbol, any file, glass and action typing in the corresponding name. I mean the name for which you want to run a search so you can really search for any text that will be used by writer for searching everywhere. So we in glasses and files and symbols and so on. So, for example, I type in here do and we see here all the classes that contained do all the files that contain dual the symbols. Symbols are properties, you know, methods and so on. We can switch here between the tabs and search within classes within files and symbols. In my case, for some reason, there is no a shortcut to jump into the classes tab right away. But I could bind one if I want to, though, for example, I have control shift in for switching to searching within files to search for a symbol I press control shift old N In general, I would say that in the majority of cases, you can always use control and for searching everywhere because searching in the Ryder works blazingly fast. And in 99% of cases it's enough convenient fast, and you just don't have to think about anything else at all. And you also can use Control E for navigating through the recent files and actually can be quite convenient because maybe you, you know, you opened tens off files, then closed a bunch of them, and you need to never get back to one of them. You don't want to press control shift and for searching a file, because it will be much faster to call these recent files window by Control E. So it's a very convenient shortcut. So to navigate through the previous positions off cursor, you can oppress control minus concede this year, So writer tracks down all the positions off the cursor, and ah can navigate back through the least off recent changes. For that you can press control shift back space. Yes, indeed, I renamed here something in the work. Inconclusive. Yes, I already said to jump over to the navigation bar. You can oppress old home and then we can go through the menu using the arrow keys. Another navigation shortcut. So is go to declaration and to go to the declaration you can use control. Be, for example, the cursor here is at the message variable. And if I want to go to the ah declaration in the signature off the method, I can press control B and the cursor goes there, you can see this gear. If the method is quite large and it uses a field and you want to jump to the declaration of that field, you can use to these control be shortcut. So in such cases, it can be quite helpful. And another feature is called Go to Type Declaration. So, for example, if the cursor is that the message variable And if I go here to the type declaration pressing control should be, then I navigate to the declaration off the off the type of the very blend. In this case, this is string control. F 12 leads to a window where you can navigate through all the A P I members within the current service file. What's also very convenient because, ah, it's always more convenient than more faster to navigate through the narrowed down, at least off classes, members, symbols and so on. So in general you'd want to call the window, which contains the least number of items, because it is easier to navigate through, say, 10 items rather than through 1000 items. So, of course, you always can use control. End to call search everywhere. But actually I prefer to use when it's appropriate. Such shortcuts s control of 12 and control shift and and and so on and other convenient shortcuts after wealth and Shift F 12 to navigate through problematic places where, where errors are detected by, ah writer So pressing F 12 you navigate to the next highlighted error and pressing shift F 12 you navigate to the previous highlighted arrow. I commonly used these shortcuts when, ah, I do destiny in development because I need to generate gold jumping to the places where explicitly type in yet inexistent types and methods. You'll seem the demonstration lecture, how I do this. Ah, a little bit later. Okay, The next feature, If you are looking at an interface and you want to look at which times do inherit from these interface you can use control, old chief, to be and actually have to commands to look at the inheritors and implementer Z implementer , XYZ and inheritors are different things, but in this case they're the same and via controlled being you can look at the derived symbols and we can navigate to a specific implementer here. And of course, we can navigate to the parent classes and interfaces using control you. So it opens up a pop up window where we can see the base times and we can freely navigate to anyone to which we need to navigate. And so writer also provides contextual actions that can be called via control shift G. And ah, this contextual action is called navigate to. And so the options in this pop up window will depend on the context where control should be was called. So being called control control ship G being called on the name of a class gives us these options go to declaration implementation based symbols and so on. So if you forgot a specific navigation shortcut, you can try control Shivji. If you want to quickly navigate through the methods you can use another shortcut. Old arrow key. So old up, arrow key or down arrow key. So, to sum up, I would say that using writer, you can almost completely avoid using your mouth. Okay, Let's move, Father. See you in the next lecture. 22. Bookmarks in Rider: the feature that can be found in almost any text editor is called bookmarks. Actually, I used this feature quite rarely, but sometimes they can be quite useful. And, ah, to insert or to leave Ah, bookmark. You can use control shift and a specific number for example one and you can see here the number off a bookmark. And if you, um, went away somewhere And if you want to get back to a bookmark to bookmark one, you can go to these bookmark via control one. And if you have many bookmarks and you want to look at the list off all the bookmarks, you can oppress shift apostrophe And in this case, ah, we see our bookmark at Line 35 it's quite convenient to see here in the preview window where these were a particular bookmark leads So you don't need to a jump over between all the bookmarks until you find that one that you really need. Actually, again, everything is quite simple regarding Marks managing in writer. I use bookmarks if you need them where appropriate and it's eat for bookmarks. See you in the next lecture where I'll show you how to use to do lists in Writer 23. ToDo in Rider: among all the other navigation features. Writer supports two Duce. And in the end units, solution will weaken. Seek your one off the two Duce. So to set to do you can write to do column and the inscription. And there's also a window where you can navigate all off the two Duce in the solution. And they're grouped here by projects and, uh, by a search files. And you can change the scope looking for them in current file and and, uh, in a custom scope, so to set at to do you right, slash slash to do column in the description of the to do, everything is simple. This is how it looks like. And so we see then you to do in the current file here. So usually we used to do to struggle with the technical debt on and most likely to not to forget about something. But you should remember that in the serious project a union, a special tracker where you track all the problems to struggle with them to struggle with technical debt to do so are not suited for such important development fields. So you need to use special tools to track down important problems and two pigs them. Okay, then Everything is simple here with two Duce. So, lads, my father 24. Using IntelliSense: for a demonstration off different features in the writer. I use different solutions and ah, this should not bother you because nothing really changes because of that. And in this video, I want to demonstrate you how intel a sense works in writer, so to speak, Intel a sense because actually, the this name, I mean, intelligence came from visual studio. So I'm not sure that we can use in Tallis since name in writer, But okay, let's try to look at how it works Intelligence and right there. And let's say I want to read all lines from a file which I have Here s an argument passed to this method. Then I want to skip the first line, then parse older lines within existing method and then perform selection and take a top 10 off records. And this file contains the data about chess players. So let's try to do that. So how writer will help help us with its intelligence? Well, the first thing I can say that Intel is seventh in the writer works very, very fest, so I type Ingvar list equals and L Riedel lines from file seen filed a dot and intelligence suggests all the methods in the file, the stated methods and I can use the so called camel humps to navigate through the methods . And I don't need to type in the whole name. So, for example, if I want to call the real lines, I can type in all the only the upper case letters are a l Yeah, like so. And actually, for some reason, writer, I didn't suggest us the Riedel Lines method. Specifically, uh, it seems that this is because I read all the text and they read all bites, has the l letter after a and so writer treats these options equivalently. Okay, that's not a not a big deal. Read a line spacing the file. Then I'll call Skip. It's keep the first line, and then I want to call select. And I want to notice that everything works blazingly fast. And I would say that visual studio quite often slows down even working under on ah, very powerful hardware. Okay, then let's get back then. I want to filter all the players by their birthday and take only those players who were born after 1988 and then order them by the sending descending by rating. And finally I'll take the top 10 players. Onda to list. Yeah, that's it. And using control shift Enter, I'll completed the current statement. So control shift Enter puts a semi column completing the current statement and creates in you line and let's write something down. Down to console. So we say console right line earned the lowest rating in the lows. 3 18 in top 10 is ah is list dot men? Yes. So we will use the link methods here to determine the lowest rating. The the highest rating and the average rating. Let's do this. The max rating. Yeah, because trading in the average calling Max and average correspondingly Okay, that's good. So you can see that until a sense works quite similar to Intel. A sense in visual studio, especially powered by every sharper because it's I said, Writer is based on the sharper regarding its brains, so to speak. Eso if you worked before with intel, a sense and visuals to you do powered by especially powered by re sharper, you'll find all the same features 25. Refactorings - Main Refactorings: writer. A blood eight placed in. You sure? A change from the bottom? It was a modernist, yet nice eternity. Factoring you've done a video move past bottom No, in victory is reflected in its top Democrat, Adam Ah, Operable which absolute luxury factor and just opening Friday at another. And I probably magician about school watching you watching longer. No, no, it's perspective. Last nominee. Qatari support duties reading. But there was a Chinese traders. And what in this video leads Sam about your cash? My emotions besides no way in there e any process is Minion you But no, Mr Preston originate in a beside No no way email with at the moment have to check everyone . You see the window where you can name see a visible, but it is a piece of property. Fortune Chance the ministers Do you wear glasses? Swells. Virginia Change can go play program used class and please. He's from a shoot. More competing Mr to War. What? Jenny files Jenny Name space, Not a religion. And Jenna's file Final. Suraj Trippett Lagarde's email Steam substance. The glasses Right where we are substance reflecting provisions. Yes, Yes! Labour Party to delete an FBI justly Mr Qataris, I visit or any particular gratitude. Gratitude Village. So let more love a sporting goods. Such tiny or to another perimeter of almost USD was metal. Deron for us, it's obviously, uh, story on the atom entity with I'll delete It wasn't a question saved diligently, but 15 year old Elena it's their consciously a potato dilanian door. Uh, was the guy nowhere Course, you could get regretted that I'm study shot if you want to go national and conflict suitable dilanian Sam Della, get Look for all the places that depend on Saturday Just remember, the land door will delay its e for exact silicon. Remove this method, Ron. I call way we know called safe delete I didn't someone just this person Three factor and classified six track method Remember factoring such tiny Clive control I am so of the absolution extracted property in the local function Moved Local function is a long way feature If she started this tradition injected with a local functional chin the blue unamsil she is deal extract method Post war political Aquatica Qatar is a prosperity made Leno and yet the most commonly used to affect rings. It's called extract method discussion Good products, which you want to use. It was rather, method becomes too fat thieves ability by extracting to say What do you use it? A medal for that you can call controlled M and writer suggested the sports You may defected and at the extractive any interface pharmacist class chess player you substance mortem expected. Which interfaces that class from you. You let Where was positive context Inside human With manufacturing issues control. Shift our products through a p I A tolerate country shift our status. You can text, but it lost the petition Dunham solution But it wasn t j state almost to another file folder. Extract Super class extracts Interface Implement that you extracted in the face e Writers approach it acumen our property. Which interface actually interface between my general file velocity What Adam's just play at the moment Your genie file E schedule shift. You should have looked Folder extract Interface is that it's Nautilus says those interface and its alone on your pity jumped rhythms, whether in the face he used can extract a super class which is the base said that she defected in Qatar area. There wasn't justice put metal porous border. She's changes a ways off the Flink. He managed to stand in the country code Bolivia siding with three genetic Oh, it was published each time inquires, control where and way interface and the results. You're constantly constant. Watch the next you're factoring diet literally used by any stop a bullet bullet panutna petrol, 1,000,000 purpose Khyam Even them. I had no literally Which title rose from story Very manly, storing up domestically and export goods exported. The other game 6 10 inquires controlled ends the latter. I watched the Brazilian lying it and repeating me in what they came with a prism. The government. Ah, factoring good takada. Good, very immune. Religious law of I feel Do you diagram a motion Most participants sustaining claims control out there. Control old v. Dunham's Lucia with Eugenia partial control, their US nick lock or batteries a pressure with in the field. So there's no no booth strategy. Intellectual. More cipri, intimate factor and give liberty at kuda Insulin. 02 years to Quechua, actually, and the is constructed rate of that. And what is this? Why was keep it? What's that? You know that exclude chance is the one illusion of private signal. Tsurumi Anto, This is Marty. Yesterday process, devised primarily by the way, is clear with the bicycle is just started. A martial arts policy. Factors change signature cheaters. Control of traces of the chimney actually order it. You know, I was just Spanish. Move up. Move down more than 80. Or that it parameter another team in the white metal. These factoring approach we want to transform and number three put him in. The white argument is just in the user timber A stream like name Castagna show. When you so much e just enough Shia, he said. It's insurance. What's your story? Factoring the rest of Let's right the umbilical or more still Iba species Factoring off labour in a grammar prostate. Purple cheats avocado, but it might control shift register. Try that guy is Veronica Virginia blaming boots and headed lower. I pledge in college to just factoring off ammonia state. My misty really show it first all right, having you only so everything works as expected. Sometimes it happens that we need to two week the signature off a method, and if you just you know ago when, for example, rearrange the order off arguments. And if there are many calls to this method, you'll break all the calls and, um to reorder say, Ah, the arguments you can. He was the change signature a factoring which can be called via control of six. And you can see here that actually there is only one parameter in this case. But you can use move up and move down When you have a method with different arguments. I mean more than one argument and you can giving you names to arguments and, uh, changed the return type on. Delta thinks and finally click next and all the dependent calls will be modified a swell and everything will work correctly. Nothing will be broken. So we're effect during So writer provides a great number of manufacturing's. And I would ulcer command you to go to help a Friday and, uh, look at the full list off her, factoring So I would recommend you to apply different three factories from time to time. And I bet that you like many of them. And maybe the simplest thing that you can do to get acquainted with the majority of her factoring is to take the key map. Um, again from the writers help and, uh, just try to apply them and you'll see how they work. 26. Quick Fixes in Rider: boom Allchin, your rider Nostrand provided by Aramco cell of a solution. The love we remain concerned Problem is a gym substance carbon Freilich you with After that In short, the chicken and that has not shared city Yours must 19 problem right across actually across me touched section Nick Russia In the next problem e are displayed as Dublin's probably keep problem will be a great is their Afghan ass It should have given such titanium entered Love is a quick fix me that I'll enter week fix at North some never I trust this poison Such terry clash problems navigate through them I'll enter shift F 12 and plastic suits using all style She is ah, contracting as East Mourner we believe already fucked Annex Context menu Cheese decree fucked in before you want, right Sanjay Their signatures revision riding on Moore's between cheaters and combines betters and so loves me So this is a qualifier A certain the chemo prism of modern British Quick way off a local is you mean case fix Yamaguchi gold off some filings and writer can be achieved by Kimoto Britain The same thing is this possible system little reference exception all right. The region, by your solution and unit features was more dollars to buy its in Assam jealous case. It's possible enter leads to no one premature designed. And besides, context enter will allow the shuttle. I don't buy it. What got to talk about? Ah center rebel party Skivvies DEA Knight Rider Sharp Patricia Enter Prosecutors teach actually school co rider Stone the United shot the solution door like I am teaching stupid question, motioning me. He was more than a week sports. I fixed all the things that includes more than Premarin is that it's possible to Takemoto preserve if a bullet largest enter Fikse problem. But im Serios no taxi element are name. But if you got sick or Jonas Surest problem. The story center works almost everywhere. You're finishing a direct and unit. Some delay closing with my piece in the statue at the quad. Know the status Nigerian about a moderately riders This Nigel The Strike features Nicaragua trip. The last album Daily condition Reject all pictures unit. Never any chi sports. LeBeau Substance. The height that move my galore. Start off cards, notes sitios Uh, but in practice substance punish, you are dental. Martina the premier Preppers are right Cheap Whose water you were Brodner, uh, get understanding is our split it and declare routes in cities. You know, you'll you'll see here It was a joint It it took the fact if you have done them solution, uh, Mourners deal It's character. And after maintenance went in terms long shield, the most common situation is more to last. Later this under you it was more of those cases the Dunham's Lucia for my child and my modem, which would make counting easier, which at this voice toe is constructor. But for the first time, you know, for some time you can call, enter just, you know to and corruption I'll enter about it. Practitioners skin Lubomyr Just keep quarter was the white quick fix. For example, most of the family most is a private problems. Call them Libya. Enter the scary. If she will toe chamber, which soldiers and Nebraska global go out usually mean little. In this case, we can invert the statement, and I would say that indeed, Indian, in many cases inverting the statement makes a more readable. The current makes the method more readable. So it's you can see old enter leads not only to serious or factoring is, but it leads to know simple, simple cleanups gold to make it more clean. Old enter is not only about serious factoring, of course. Ah, it's not so simple to detect serious problems in such a solution like and you know, because in unit is a decent framework and it shouldn't contain any box or places with serious problems, it should be quite robust. So, writer, I don't think that writer will find something really, really bad in this solution because, by the way, and units developers, I bet makeover them, use their a sharper rider themselves. So okay, here's another case when we can use old enter on, uh, in this case, when the cursor is at the type of the variable, we can oppress old enter, and it will suggest to use var instead of the instead of using the type explicitly. And of course, we can get back to the explicit declaration of the type weaken, split declaration and initialization or join, um, them back. So old and er works almost everywhere, suggesting features depending on the context. Here we conceal the class here. We can never get to the type high rocking When the When the cursor is that thing to face here we can initialize the property from comes tractor to a factory to property with the backing field and so on and so on. And indeed you can see here that the weapon? No, it is initialized from the constructor. So old enter, as I said, works almost everywhere allowing you to to fix Andhra factor. Cleaning up your code cleaning up the cold very, very fast. Sold. Enter is the shortcut that will be used by you. As I said, maybe every minute or so. 27. Refactorings Demo: welcome back and let's try to lead a simple Test three and development session to look at how writer helps us in code writing and generation. So we will look at the programming flow with help off Rider using a realistic task. And, um, I suggest you to implement an interesting kata, which is called to do list, and we will try to build the basic features off such a nap, maybe some additional. But, um, I can say for sure. So let's try to implement the core for such an application that could build to do lists. And ah, this task is quite realistic because you can see a great number off to delist applications in, say, uh, different mobile markets. So let's begin with adding ah, and your project and this is going to be a class library, um, on dot net core and al name it se to do that? No, and this is going to be the core off the application. And a Let's add another project for writing unit tests, and this is going to be a unit is project under dot net core and I'll name it. Ah, yeah, and I'll use and unit as to the framework and I'll name and to do that core dot unit dusts . Or maybe maybe, just maybe just tests. Yeah, let's stick with to do that. Korda Tests and the end union New good package was installed automatically. And we have a source file generated by default with the name space that I don't like. So I'll fix it. And here's another factoring that can be used for that. So right, click. Uh, using your mouse and, uh, go to would affect her. This and just name spaces. Yeah, so old unnamed spaces were fixed automatically. So where should we begin? The first thing, which is quite the parent, is the task that we need a task. So let's name these testing class task tests and covered by the test extra tribute. I'll remove this set up method for now. And, um, let's try to ride the first union test and what is going to be tested by this method? I believe that we can create a task with the description. Maybe so. Yeah. So let's name this testing method see tour, which stands for Constructor because we're testing here. The constructor. The case here is past arguments and the result expected to result in its correctly eso this is going to be quite a triple test. Let's create a task. Yeah, we have a problem here, by the way, because Teske is a class which is already they're in BCL. This name will conflict with threading tasks that task class. So maybe it would be better to give it another name. So it's ah, name for now, it to do task to the task. Let's create a task. And when you to pass a name and a description, let's say visit and Dr and the description, Um, by the way, this description is not required. The bare minimum used to pass the name, which actually is stands here, which actually serves here as to description. Yeah, if you look at Campbell floated calm and other Kevin boards where we can actually create two Duce, you'll see that indeed, we can create a task with just a name. And the description is you're not obliged to add a description. And let's ah, right, an assertion right away that, um, task dot name, um which one is expected? Expected is visit a doctor. Some let's extracted to, um local variable and call it and call It came. So we expect here in name and the actual one is tasked dot name. Yeah, And of course we call are equal. And let's generate the to do task type, which is going to be a class. Yeah, with the constructor, which takes a string argument, and we need to generate a property cold name for some reason. Doesn't want to generated Yeah, yeah, okay. This is because the cursor was there, so generate the proper team was going to be a property off type string with the private sector, I believe, at least for now, let's assume that is going to be with the private sector. And ah, we can run our test just to make sure that, um, this test fails just to make sure that the environment works correctly. Yeah, and everything works as expected. These test fails. So we need to implement this feature eso. And actually, the only thing we need to do is to assign the student argument to the property. And now, if we're on the test, it should It should pass, and it passes. Yeah, Okay. For now, I think we're not going to move the to do test class to another file. Let's ah, stick with this class reciting in this file, we will do that later. So what's next? Of course, we I need a way off adding you tasks so we wait. Right now we have an entity to do task and but we need a way off building at least off to do tasks. Of course, we could ah, build lists off to do tasks, but for me, it's quite apparent that we're going tohave some kind off a container as special container which will hold tasks. Um, because to do least abs, I believe can have ah, you know, so to speak, separate lists, off to do tasks. And, uh, I think that that such lists can be tracked down with the I ds and something like that. So I think that where going to create a container for to do tasks And for that we're going to ride another test test, public void and the same and say add to list. And it should ed form a name. Ah, maybe just add, we're going to call the ad method. Ah, the case is called correct task and what we expect. We expect that task. Um, who will be ended correctly. So adds task. Yeah. Okay, so now we need to implement this task SRE these test and ah, we can create to do task to to do task list. Yes. So we're going to test to do test list and using control control TV, we can generate the local variable. Let's name just task list and ah, now we can add a task there which, of course, we need to create preliminary. So when you to do task and let's give it a name, that's a task one. My, the weights. It's much simpler and cleaner than giving a name Such a visitor. Doctors test. Kwan is I like task one better. I like Yeah, tisk one more than, ah, visas the doctor. So let's add it and ah, now we can write an assertion, assert. And how are we going to write our assertion? Maybe there will be a way off returning the list off tasks. So let's try to assert that that the counter off tasks physical 21 so just close to dot tasks dot count will return one and ah, let's asserted that the first task in the list of tasks will be identical to the task we add. It, uh, quite logical. Let's generated to do task. Clearest. Okay, have another class and was generate another method avoid it takes to the task E name just task was generally the tasks proper team, and it's going to be a memorable are lest who? Well, I would make it as list because otherwise, in case we make it off type list, client could call tasks and at the new tasks directly via this property. So I would make it I off type I and memorable. Yeah, let's try this. I memorable off to do task. Yeah, with the private sector, maybe even yeah, we can remove it entirely. And let's initialize It s a list and them to list, and there is no counter in innumerable and no length. So we need to to goal here to list and and finally called count, At least for now. Maybe we're going to effect her these sexually. I don't like this code and the same goes here. And by the way, we can reflect her out. This piece of gold to ah local variable calling it Tasks list shorting the assertions. Yeah, I would say that I don't like this test because we have here task list tasks list not clear . And it's good to rename the task Callisto sought system under test and these tested failure run and it fails. Yes, indeed, as expected. And we need to implement the ad method. So let's add our task to the least off tasks, and we can't ed to the property. So we need to introduce a field off type least and the property will return these list from a private field. And after that, we can add tasks to of the list using the field. Yeah, like so. So tasks dot Dad besting task like so and maybe even batter Teoh declare these some property excited on the collection and make this feel desired. S s a read. Only a swell. Exactly. Okay, so if we were on this test right now, maybe it will fail. But it, um, it passes. This is because actually, yeah, the references a recall here in this assertion. Well, maybe it's all right for now, because we understand that, actually, we adding here exactly these task, But I believe that in the future, we're going to introduce some identify air to identify the tasks, to compare the tasks I mean to implement to the logic off equality off tasks. Okay, then let's implement another tack test, uh, color to remove and with past the an existing task. Yeah, And by the way, we have a problem here. How we assume to remove the test by 80 or what? How the same guys go to look like maybe by the name whom Some clear. I don't like strings. Mm s unique identifiers. You know, maybe a task will have unidentified air in the forum off. Agreed. Yeah. So let's, um, tweak this test, adding new assertion. Um, assert, Not now. Let's check. Agreed. That should be generated automatically when we create a new task. Or like so, type Gwede with a private center and, uh, here in constructor. Let's initialize it by calling. We'd dark your grid like so, and let's rerun all the tests. Okay, they pass. And let's try to add another test. Ah, remove existing task removes task, and we will try to remove by good. So inclined will pass a grid. Um, I see that we are going to duplicate a piece of court. But for now, I'll copy and paste it. And if we will detect another duplication the third time, then we will try to effect her out some code. But for now, I'll just go pin paste. Okay, So what we're going to do here? We added a task to the list, and now we want to remove it. So we will call for that sort. Don't remove passing task to add dot grid, and we are going to assert that, but the counter off tasks in the Tudo Teske list will be equal to to one. Um, yeah, we can remove to list, by the way, but we don't have an index. Texas. Yeah, but wait can use it here and remove this here. Yeah, so we have count here, um, and yeah, and we expect not one. But we expect zero, actually, because we removed task was generate remove method, which takes agreed, and ah, Now we can call tasks dot Remove by greed. For that, I'll user move all passing the lambda expression I use remove all because it takes a predicated. It's it's a convenient way in off writing the code. So if we re run all the tests, and by the way, we can do these by using a special shortcut, see help Friday and all the test best. And these features are the basic ones according to the to do Cata. So the basic features are returning tasks, removing and adding, and the next feature is an additional one. Already it concerns the problem off editing tasks, and another one is to add a state of the task. Ah, tasks called Done and toe make tasks creditable. We have two approaches, very different approaches. So the 1st 1 is to use the way off mutability and another one off the mutability and the way off. Immutable design is, I believe, will be, um, um, much more complex. And because of that, we we will prefer them mutable way off implementing the tasks editing feature. Yeah, let's try to stick with them with mutable design. We will look at how awfully this will look like, but anyway, let's try so public would added existing task at its desk. And let's say we have a task here named Tess Kwan, and let's say that we want to add it this task, and we need to pass a in your name here because we have only the name property here, and I believe that we will have other attributes. But later on, I mean attributes, I'm in properties, not only the name of a task. And finally, we need to assert here that what we expect the change name. So we expect, uh, that desk name will return task to after editing like so And we need to generate the added method, which takes a string parameter. And let's a sign the new name to name property on all the tests will pass. Yeah, and they pass and go the same way. We can add another test adding status done undone. I'll call a change status done. Task is done. So by default, a task is going to be undone when we created. So we can assert here that by default the task should be on in the undone state. And after that, we call change status. In this case Mm. We have just two status is so maybe it would be more cleaner to create two separate methods . So sad down and set undone. Yeah, like this task that's that done and assert we can now assert that, um, our tasks should be in the done status. And now we Mm, Yeah, let's rename it because we can right here, too. Make it. I'm done. And, uh, right. Another assertion they're logically related. So weaken right here. More than one assertion in a single method of violating the rule off a single assertion within within a union test. No, weaken, Generate. Told him, Oh, the things create an enumeration called to do test status with two values done and undone. And we will have a status off this enumeration type to do tasks, status and create set down and sit on done methods. And of course, we need to protect status from changes by making it private. And we do this because, said dollars said and done, most likely will have some logic inside. Otherwise, we could just stick with the public property, uh, for changing status is and for now, this ah test fails. So we need to implement this feature by default. The status is going to be undone. Here. We just change the status toe Underland done correspondingly. And let's run all the tests again. And all the tests best. Okay? Actually, you don't have to re run all the tests again and again. And if you have a decent hardware, you can set up the continues of testing right here. Setting up the altar start continues. Testing modes here are they, Ronald? Tests run. You end outdated tests and cover new in outdated tests. Run you in our data tests is ah, good mode. So when you will build a solution all the tests I will be rerun by writer. In this case, writer doesn't really run all the tests. This is because a writer relies on the array sticks. It detects those tests which have been ah, you know, touched by, um, changes seen in production code. So it will run only those tests that really need to be rerun. For now. I'll a refectory beat our code. Well, move these class to it. So file, and I'll use here. Move to folder because I need to move it to another project. The target project should be to do Don't core and I can expand here. The list off glasses here and I want to move there in admiration and to do test. Calista swell. And I want to put glasses into separate files and fixed the name spaces if needed next, next. And it complains because we need to add a reference to the two decor project. Nothing special and everything should work fine. After that, we have a problem with two. Least here, actually can't resolve. Ah, yeah, This is because we need to add the reference to system that link. Okay, We can rebuild the solution and on it bills successfully and all the tests best. Yeah, and again they pass. Yeah. So this is how you can. He was a writer, and, ah, you can see that everything that was available in there a sharper in visual studio You can use all the features that you used before. Um, so noticed that when the sharper, you know, gets new features, almost always the writer, um, it takes them a swell gets this features a swell, and you can see that Ryder is Israeli is really a new I d. But how powerful a tease this is because the brains off rider, um, are implemented in the re sharper. These ideas of is very convenient. It's very fast, and it's growing very fast. You'll see many in your features in the upcoming near future, and it eats much less memory on disk. And maybe, um um, visual studio has more tools. Yeah, much more. Maybe, but for the maturity of developers in the near future, writer will cover the majority off scenarios so you'll be able to completely move to writer . Especially because lately visual studio has too much box, At least on my machine. Irritates me quite often. So this was the demonstration off the power off rider in a live TV D session. I hope you enjoyed it. See your son.