We continue to improve support for C# 10, particularly global usings. We’ve implemented two new refactorings that are also available as context actions.
Extract Global Using can help you to introduce the concept of global
usings in your project. You can invoke it on a regular
and ReSharper will suggest extracting it to a designated
file (if there’s no such file in your project yet, it will be created). The regular
using that is no longer needed will be removed from the files in your
If you decide to refactor a global
using into a regular
using, Inline Global Using refactoring can help here,
too. When called on a global
using, it removes it from the
GlobalUsings.cs and adds the corresponding
statement to the files in your project where required.
The global using feature is supported in Find Usages and in code analysis for extension methods.
[MemberNotNullWhen]annotations are now supported in projects that don't use nullable reference types.
Our Endpoints support now works for ASP.NET Core 6 minimal APIs and convention-based routing. It includes navigation, code analysis, and code completion.
Here are some of the most notable features and fixes we’ve made for Razor and Blazor:
[EditorRequired]attribute from .NET 6. The corresponding inspection and quick-fix are also available if you try to use a Blazor component without specifying the required parameters.
.razorfiles with Blazor components. It no longer removes all
We’ve reorganized all the items in the Alt+Enter menu related to Code Cleanup and Formatting. The Format selection, Cleanup selection, and Apply syntax style were combined into one Reformat and Cleanup item to provide a single entry point.
In addition to these changes, the syntax style settings are now available in the Configure code style and Autodetect code style settings actions. The Preview code style panel shows changes in syntax style as well.
The Unreal Engine testing framework is now supported. ReSharper C++ discovers Unreal Engine unit tests and adds the corresponding action indicators next to each test in the editor to run or debug the test or the whole test suite. In the Unit Test Sessions window, you can review the results of the tests, and rerun failed, all, or specific tests.
ReSharper C++ is now better at handling implicit constructor calls, allowing you to find usages and navigate to the called constructor in more cases, including the following:
make_unique/make_shared) and Unreal-specific (
MakeShared/MakeUnique) smart pointer creation functions.
emplace-like container methods.
static_castand c-style cast expressions.
ReSharper C++ 2022.1 also shows you an overloading warning when an
emplace-like function is called with incorrect arguments.
After analyzing the performance of source generators’ support, we’ve decided to increase the delay between requests when fetching source-generated documents from the compiler.
Thus, the source generators are not run before the compiler and the total amount of CPU work is reduced. The exact performance gain depends on whether any other features also trigger the generators, like Visual Studio's full-line completion.
We’ve fixed a number of performance issues already and laid the groundwork for more. This includes dealing with performance snapshots from our customers, in-house profiling sessions, and gathering data to hopefully implementing automatic checks for performance degradations in the future.
As for the “out of process” mode, the work is ongoing. Please refer to the newest update in our issue tracker.
The InspectCode tools can generate output files compatible with Static Analysis Results Interchange Format (SARIF).
Command line tools now support Alpine Linux.
System.Private.CoreLib. The path to the XML documentation is now displayed in the decompiled file’s header.
[TypeForwardedTo]attributes). The Locate in Metadata action also works for forwarded types, assembly and module references, and resources.
You can now use comments to exclude certain lines or blocks of code from coverage analysis. Several options are available for this:
// dotcover disable
var i = 1;
var j = 10;
// dotcover enable
/* dotcover disable */ var i = 1; /* dotcover enable */
var i = 1; // dotCover disable this line
// dotcover disable next line
var j = 100;
For any of these options to work, you must reference the
JetBrains.dotCover.MSBuild NuGet package. This is a development-only
dependency that won't be included as a run-time dependency in your project.
.sqlprojfiles in localized Visual Studios.
Free 30-day trial available