We, as developers, want to perform the right tasks using the right tools. For .NET developers, the most popular tool is Microsoft Visual Studio. It contains almost everything you need to create .NET applications. If it lacks something, ReSharper fills that gap and adds many more functionalities.
ReSharper, as a .NET developer productivity tool, helps you in the tasks you need to perform on a daily basis. It helps you avoid doing boring, repetitive and manual things. It makes refactoring your code easier, saves you time by supporting navigation through the project, and helps by generating code. In this chapter, we will cover the following topics:
Introduction to ReSharper
Downloading and installing ReSharper
Basic configuration
Integrating ReSharper with Visual Studio
ReSharper is probably the best plugin for Visual Studio. It extends your favorite IDE with a lot of incredibly useful features.
Note
ReSharper is developed by JetBrains (http://www.jetbrains.com). ReSharper v1.0 was released on July 21, 2004 as the second product of this company.
Thanks to the features, code generation and code templates, you will be able to write smarter code. Navigation and search will help you find things quicker. With code analysis and code cleanup, you can provide better quality software as ReSharper will find and highlight errors, potential problems, and bad practices in your code. ReSharper will support you with almost any kind of applications that you can write in Visual Studio.
ReSharper comes in the following three versions:
C# Edition
VB.NET Edition
Full Edition
These versions differ in support for the main language used in your projects. According to the name, if you are using C#, you should choose the C# Edition. If you are using VB.NET, you should choose the VB.NET Edition. Finally, if you are using both these languages, you should choose the Full Edition.
All other features, such as support for web development, unit tests, and XAML are the same in all of these versions except decompiler, which is not available in the VB.NET Edition.
Apart from the provided features, ReSharper can be categorized based on license. Depending on your needs, you can purchase any of the following licenses:
If you are a teacher, a trainer, a Microsoft's MVP (Most Valuable Professional), or if you are working on a non-commercial open source project, you can get ReSharper for free.
Note
For more information about ReSharper licenses, you can visit the Licensing & Upgrade page at http://www.jetbrains.com/resharper/buy/license-matrix.jsp.
ReSharper v8 provides support for Visual Studio 2013, 2012, 2010, 2008, and 2005. ReSharper works with all editions of Visual Studio except the Express Edition.
It is also possible to use ReSharper with Visual Studio 2003. ReSharper 2.0 is still available; it provides support for this version of Visual Studio.
Although ReSharper comes in a couple of versions and supports various versions of Visual Studio, there is only one main installation package. The version used depends on the license key used during activation.
Tip
During the free 30-day trial, you use ReSharper as a Full Edition by default. You can change this in the License Information window. To open it, navigate to RESHARPER | Help | License Information… from the Visual Studio toolbar.
Installing ReSharper is quite straightforward. Perform the following steps:
Download the main installation package from the Download ReSharper page at http://www.jetbrains.com/resharper/download/index.html.
After opening the downloaded installation package, you should see the following screenshot:
In this step, you can select the versions of Visual Studio in which you would like to use ReSharper (in case you have more than one already installed).
From this screen, you can just click on Install to run the installation process, or click on Advanced to configure more settings.
If you have chosen Advanced settings, in the later steps you can choose what to do if you have a previous version of ReSharper already installed and how to change the installation location.
ReSharper is fully configurable. To access the ReSharper settings, you need to navigate to RESHARPER | Options from the Visual Studio toolbar.
ReSharper configuration is divided into four areas, which are listed as follows:
Environment : This allows you to change the general ReSharper settings such as UI and Visual Studio integration
Code Inspection : This allows you to change the settings related to code analysis
Code Editing : This allows you to change the formatting, naming, and code cleanup rules
Tools: This allows you to change the ReSharper tool's settings, such as Unit Test frameworks, patterns used for to-do items, and navigation to external sources
We will not go through all the available options in detail but present only those parts that, in our opinion, are the most useful.
Let's take a look at the tabs available under the Environment section.
In this tab, you can change settings that are related to user interface. We suggest that you check the Show managed memory usage in status bar and Show tips on startup options. The first one will show you, on the bottom status bar, how much memory is used by ReSharper and the second one will try to teach you something new every time you open Visual Studio.
This tab allows you to set how ReSharper integrates with Visual Studio. We propose that you check Hide overridden Visual Studio menu items and select Visual Studio as ReSharper keyboard scheme. The first one hides those options from the Visual Studio menu that are overridden by ReSharper; for example, the Refactor option in the context menu in the editor. This will indicate that you are using ReSharper features. The Visual Studio scheme adds shortcuts in order to avoid conflicts with the existing Visual Studio shortcuts.
Note
In this book, we will present many shortcuts and all will be related to the Visual Studio scheme. For shortcuts from the ReSharper 2.x/Intellij IDEA scheme, please check the ReSharper Documentation site at http://www.jetbrains.com/resharper/documentation/.
Now, let's look at the tabs that are available under the Code Inspection section.
This tab contains general settings for code analysis. Our suggestion is to check all the options available below the Enable code analysis checkbox:
Color identifiers
Highlight color usages
Analyze errors in whole solution
Show code inspection options in action list
Show the "Import namespace" action using popup
This tab contains the most important settings related to code analysis. Settings are divided by language. It is highly recommended that you review these options to make sure that ReSharper will prompt suggestions that are consistent with your coding standards.
Next, we'll see the tabs under the Code Editing section.
ReSharper v8 allows you to store configuration on the following three levels:
Computer: This contains settings that are applied to all your projects.
Solution team-shared: This contains settings for a specific project. These settings are stored in the
sln.DotSettings
file in your solution folder and override the settings specified at computer level. To share these settings with your team, you need to commit this file to your source control repository.Configuration on this level should be used to share common coding standards, such as naming conventions, code formatting, and code inspection rules, with your team.
Solution personal: This contains your private settings. These settings are stored in the
sln.DotSettings.User
file in your solution folder and override Solution team-shared configuration. This file should not be committed to your source control repository as it will override other users' settings.Usually, this level is used to change environment options such as preferred shortcuts, IntelliSense behaviors, and ReSharper UI settings.
To open the Manage Options… window, navigate to RESHARPER | Manage Options… from the Visual Studio toolbar. You can also open this window by clicking on the Manage… button in the Options window.
ReSharper is visible almost everywhere in Visual Studio. Sometimes, it is difficult to recognize if some option has come from Visual Studio or from ReSharper.
ReSharper extends Visual Studio in the following places:
Shortcuts: Almost every ReSharper feature is accessible via a shortcut.
Custom windows: ReSharper provides custom windows with more advanced features such as Unit Test Runner and Assembly Explorer. You can access these windows by navigating to the RESHARPER | Windows option from the Visual Studio toolbar.
IntelliSense: ReSharper extends or replaces standard IntelliSense available in Visual Studio by providing more useful hints.
Code editor extensions: In a visual way (for example, by icons), this shows you the available ReSharper options or marks the code on which you can run some ReSharper options.
As extending the code editor is the most commonly visible ReSharper feature, we will discuss it in more detail.
The following screenshot presents Visual Studio with some ReSharper extensions:

The most used features are accessible via context actions (numbered 1 in the preceding screenshot). Context actions are accessible by clicking on an icon or with the Alt + Enter shortcut. Context actions contain features related to code refactoring, code generation, navigation, and more. Quick fixes can be displayed along with context actions.
Tip
Alt + Enter is your best friend in ReSharper. In a very smart way, it provides you with the needed options based on the context in which you are using this shortcut.
One of the most important ReSharper features is continuous code quality analysis. ReSharper highlights detected errors and warnings in the marker bar (numbered 2 in the preceding screenshot). The status indicator (numbered 3 in the preceding screenshot) is displayed on the top of the Marker Bar, which contains the summary of the found errors and warnings.
This chapter explained what ReSharper is and showed you how easy it is to start using it. You learned how to adjust the ReSharper configuration to suit your needs alongside your project and team standards.
In the next chapter, we will go deeper into the ReSharper features that will help you write code, and you will learn what it means to write smarter code.