Dotnet logo

.NET Tools

Essential productivity kit for .NET and game developers

.NET Tools Early Access Program Releases ReSharper Platform

ReSharper 2024.2 EAP 5: An Important Milestone and Other Updates

The latest installment in the Early Access Program for ReSharper 2024.2 has just been released! This preview build marks an important milestone – it is the first one to feature asynchronous typing, an important design change for ReSharper on its way to out-of-process operation. In addition to that, the update also brings several updates across C++ support, C# refactoring, the decompiler, dotTrace, dotMemory, and the Dynamic Program Analysis (DPA) tool window.

Let’s dive in!

Asynchronous typing enabled

Asynchronous typing is part of an ongoing effort to improve ReSharper’s performance by enabling it to run out of process with Visual Studio. ReSharper 2024.2 EAP 5 is the first build to feature this important change.

Traditionally, ReSharper used a synchronous model for handling user inputs. Each keystroke would trigger a series of actions requiring ReSharper to obtain a write lock, pause background processes, and then synchronize its internal model with what is displayed in the Visual Studio editor. This process, although typically quick, could introduce noticeable delays, especially in complex scenarios where extensive code analysis and formatting were needed.

The shift to asynchronous typing decouples these operations from the main typing process. By doing so, ReSharper can handle input in the Visual Studio editor without waiting for background tasks to complete. This change reduces the blocking time for write lock, thereby minimizing interruptions and improving the responsiveness of the editor.

Our internal tests show a marked improvement in the smoothness of the typing experience. We’d love to hear about your perceptions over on our issue tracker. While we’re optimistic about enabling async typing for the 2024.2 release, further testing is still needed, and that’s why your feedback is particularly important. 

Support for the C++23 multidimensional subscript operator

The latest build introduces support for the C++23 multidimensional subscript operator. Previously, accessing elements in a multidimensional array required either chaining multiple subscript operators (e.g. arr[i][j][k]) or using function call syntax (e.g. arr(i, j, k)), both of which could be cumbersome and less readable.

With the new C++23 feature, you can now use a single subscript operator with multiple indices (e.g. arr[i, j, k]). This change simplifies the syntax and makes the code more readable and consistent with how single-dimensional arrays are accessed, thereby reducing the cognitive load.

Extract common code refactoring for C#

ReSharper’s latest refactoring enhancement enables you to extract common code out of branching statements such as if or switch. This update streamlines and consolidates shared logic, ensuring it is executed regardless of the branching path, improving code readability, and reducing redundancy.

Decompiler enhancements

The decompiler in ReSharper 2024.2 EAP 5, as well as the standalone dotPeek application, sees another usability improvement with the introduction of the Open in Browser action. This action provides two navigation options:

  • Navigate to GitHub: You can now open external sources directly in your browser and navigate to the source repository on GitHub. This is accessible via the context menu in the Assembly Explorer or within the code.
  • Navigate to the NuGet package repository: Similarly, you can navigate to the NuGet package repository directly from the context menu on the NuGet node. This seamless integration saves time and enhances your workflow by providing quick access to source code and documentation.

dotTrace 

  • We have resolved the issue with missing kernel sampling events in Timeline mode (DTRC-30949).
  • The View | Options tool window is now available in the dotTrace Viewer on macOS and Linux. Settings like Web Proxy, Call Tree Folding, Subsystems, and Source View can be configured.

dotMemory

The dotMemory version for Linux and macOS gets features that were previously available only on Windows:

  • Automatic memory inspections: dotMemory for Linux and macOS gets the Inspections view, which shows a number of automatically detected memory issues.
  • Cross-workspace snapshot comparison: Now, you can compare snapshots from different profiling sessions, allowing for a more comprehensive memory analysis and comparison of snapshots contained in different dotMemory workspaces.

These features are also available in the built-in dotMemory plugin in JetBrains Rider.

Explain with AI for Dynamic Program Analysis tool window

The Dynamic Program Analysis (DPA) tool window now features an Explain with AI button for issues related to memory allocation and database problems. This AI-driven feature offers detailed explanations and advice from AI Assistant on potential fixes directly within the Dynamic Program Analysis tool window to help you quickly understand and resolve even the most complex issues associated with memory allocation and working with databases. 

For the full list of changes included in this build, please refer to our issue tracker.


As always, we’re happy to hear your thoughts on the latest updates in the comments section or on our social media. Please feel free to submit any issues you encounter to our issue tracker.

image description