.NET Tools
Essential productivity kit for .NET and game developers
ReSharper 2021.3 Brings Visual Studio 2022 Support, More C# 10 Features, and Improved Support for Nullable Reference Types and C#!
Hello everyone!
Today we published the 2021.3 release for ReSharper and the JetBrains .NET tools.
In this post I will briefly cover some of the most exciting updates included in the newest version of ReSharper and ReSharper C++. To learn more about our other .NET tools, including dotCover, dotMemory, dotPeek, and dotTrace, please check out this separate blog post.
Before we dive into the feature set, we need to make an important announcement. Starting with the 2021.3 release, dupFinder will no longer be included in the ReSharper Command-Line Tools package. You can still use the dupFinder tool from previous releases. Learn more in the blog post.
Let’s take a closer look!
ReSharper
Support for Visual Studio 2022
ReSharper now supports the release build of the new Visual Studio 2022. You will have access to the same rich feature set you are already used to having in other Visual Studio versions. But since Visual Studio 2022 is an x64 process, there is no longer a limit to the maximum amount of memory that can be allocated to it. As a result, all ReSharper features work faster.
More C# 10 features
ReSharper continues to add more C# 10 features. Today, we are happy to add support for file-scoped namespaces, global using
directives, the CallerArgumentExpression
attribute, the “interpolated string handlers” concept, readonly record
structs, and C# 10 lambdas. You can learn more about them in our series about the new C# 10 features or directly on the What’s New page.
Support for nullable reference types
Let’s say you paste in some code with NRT syntax but you don’t have NRTs enabled in your solution. There is now a quick-fix that gets rid of the NRT syntax for you. There are also several helpful new quick-fixes:
- A quick-fix for eliminating nullability mismatches between type arguments and their nullability constraints
- A bulk quick-fix for correcting annotations on parameters with nullable default values in a file, project, or whole solution.
- A new bulk quick-fix that makes a parameter nullable if it’s checked for
null
within a method.
General C# code analysis improvements
The latest version of C# isn’t the only one getting support improvements. This release brings additional inspections and quick-fixes for general C# support, as well:
- New quick-fixes for
static
local and anonymous functions with closures. - Improved support for regular
structs
. - Quick-fixes that convert classes to
records
and then transform them into primary constructors.
Additionally, scope quick-fixes and context actions are now executed in parallel and use the results of solution-wide analysis.
Navigation and Find Usages
We’ve added a few more gutter marks to help you quickly navigate through the inheritance structure of a class, interface, or struct. The new ↑O
icon indicates that a code entity inherits a class, while the ↑I
icon indicates that the code entity implements an interface. Additionally, ReSharper will add the ↓O
icon in the left gutter next to a class member if the class member is overridden in derived classes.
You can now call Find Usages for user-defined implicit conversion operators. This allows you to find out whether user-defined implicit conversion operators are used at all and then navigate to blocks of code with conversions.
Finally, when you invoke Go to Type of Symbol on a variable or parameter of an interface type in debug mode, ReSharper will take you to the exact implementation of it that is used in the current frame, rather than the interface declaration.
Other updates
- You can now mark any of a function’s parameters, fields, or properties with the
LanguageInjection
annotation attribute. ReSharper will consider a string of a marked code entity as a code fragment in a specified language. The following languages can be injected: CSS, HTML, JavaScript, JSON, or XML. - We’ve redesigned the Copy Code Reference feature. It has a new name, a new UI, and new GitHub options for generating proper links to GitHub repositories and sharing them with anyone right away. Learn more in this blog post.
- There are several new formatting options that allow you to format your code more precisely.
- We’ve added support for AnalyzerConfig files to adjust ReSharper’s rules accordingly.
ReSharper C++
Here’s just a sample of the highlights in the ReSharper C++ updates:
- All predefined templates for Unreal Engine classes are now available in the list of ReSharper C++ file templates, so you no longer need to switch to Unreal Editor to create new classes.
- We’ve added support for more C++20 features: auto-completion of designated initializers for aggregate initialization and modernizing inspections to help you adopt new library functions.
- Updates for C support include
C11 _Generic
expressions and thetypeof
GNU extension. - The Quick Info tooltip now displays the evaluation results for constant expressions.
- There are new inspections with quick-fixes and an update for Clang-Tidy with new checks from Clang 13.
Check out this blog post for details about all new features and improvements in ReSharper C++.
If you are eager to learn more about all these ReSharper features, please visit the What’s New page.
To learn more about our other .NET tools, including dotCover, dotMemory, dotPeek, and dotTrace, please check out this separate blog post.
You can download the release build right now from the ReSharper 2021.3 page or install it using the JetBrains Toolbox App. As always, we would appreciate any feedback you have about the new features.