If you have watched the progress of Early Access Program but were hesitant to try the early builds in your production environment, Release Candidate is just the right build to test-drive 2016.3 in your daily work. Please do download the RC and let us know if there are any critical issues compared to the latest released version, 2016.2.2.
Here’s a quick recap of changes introduced in 2016.3:
All ReSharper Ultimate tools can now work with Visual Studio 2017 RC (still not supported: lightweight solution load; .NET Core unit testing targeting .NET Core 1.1+)
ReSharper implements initial support for C# 7 and VB.NET 15; adds new code generation actions, context actions and quick-fixes; introduces a Transform Parameters refactoring; supports running .NET Core unit tests that target .NET Core 1.0.x in Visual Studio 2015; brings noticeable improvements in usage search and ReSharper Build; improves support for TypeScript, JavaScript and HTML; extends the language injection mechanism.
ReSharper C++ starts to support the Catch unit testing framework and improves its Boost.Test runner; adds refactorings to introduce or inline typedefs; improves Quick Documentation and Quick Info controls; adopts the idea of postfix completion and postfix templates from the mainline ReSharper.
dotCover, dotTrace and dotMemory level up support for .NET Core profiling and coverage.
dotCover introduces a more compact way to highlight coverage status in Visual Studio code editors, which is very relevant for Continuous Testing.
dotTrace adds multiple improvements to its Timeline Viewer.
dotPeek reveals a variety of metadata in its Assembly Explorer.
dotMemory extends its set of automatic memory inspections.
These updates are here to deliver the hotfix for the Zip Slip vulnerability, which was found in several third-party tools used both by ReSharper Ultimate and Rider. Here is a summary of the changes we’ve made in our codebase to prevent such issues:
Rider has been updated: added checks for path traversal.
DotNetZip has been updated to version 1.11.0, which already has the fix.
SharpZipLib has been updated to include checks for path traversal.
In addition, ReSharper 2018.1.3 fixes TLS web exception, which could be thrown while looking for updates via ReSharper | Help | Check for updates in case of invalid custom IE proxy settings on a machine.
ReSharper Ultimate 2018.1.4
We fixed a critical vulnerability in dotPeek and ReSharper which could allow an attacker to execute their code when the assembly resources are viewed in the Assembly Explorer window. We want to say a big thank you to Soroush Dalili from NCC Group for reporting this.
Besides that, we fixed the “RSRP-470385 Resharper causes VS2017 to hang indefinitely after an update to VS or another VS plugin” issue with ReSharper occasionally causing a deadlock when updating Visual Studio or any of the Visual Studio extensions.
Rider 2018.1.4
This bugfix update is mostly about fixing the “RIDER-16906 Rider requires frequent restarts due to hanging UI” issue. In addition to this, Rider now has all the upgrades which were made in the IntelliJ Platform 2018.1.4, 2018.1.5, and 2018.1.6 updates.
We would recommend downloading the updates soon in any of the following ways:
ReSharper Ultimate: from the site or by running ReSharper | Help | Check for Updates.
If you’ve opted in for our Early Access Program, you’re already aware of the coming updates. If not, let me highlight the most important ones:
ReSharper 2018.2 speeds up EditorConfig support and decreases solution loading times, gets an integrated spell checker, fully supports C# 7.3, and lints your JS/TS code using JSLint, ESLint, and TSLint. We’ve also introduced initial Blazor support, added a colored Parameter Info popup, improved the UI for navigation and refactorings, and enhanced the formatter engine.
ReSharper C++ 2018.2 adds highly requested support for C++/CLI and deepens its understanding of many new features from C++17 and the upcoming C++20.
dotCover 2018.2 gets an updated console runner which can now be used as an extension to .NET command-line tools (dotnet.exe).
dotTrace 2018.2 gets an include filter for configuring the profiling of an arbitrary .NET process.
dotMemory 2018.2 can profile ReSharper run configurations, and the timeline graph shows instant memory allocation to the Large Object Heap.
dotPeek 2018.2 improves navigation to interfaces, enums, and any types that have no method implementations.
Wait no more as this is the last chance to check out all the new features and improvements before they hit RTM.
Let’s have a look at the key changes this release brings to the table:
Performance improvements: We’ve made about 30 performance fixes in different parts of ReSharper, from speeding up EditorConfig support to decreasing solution loading times. Please see this blog post series dedicated to ReSharper 2018.2 for more details.
C# 7.3 support: ReSharper finally supports all features from the latest C# 7.3. New inspections and appropriate quick-fixes are here to make your code C# 7.3 compatible.
JSLint, ESLint, and TSLintsupport: These three great static analysis tools have been integrated into JavaScript/TypeScript code analysis to provide additional inspections and corresponding quick-fixes.
Integrated spell checking with ReSpeller: 2018.2 comes with spell-checking functionality out of the box, enabled for most of the supported languages.
Initial Blazor support: Even though Blazor is declared experimental for now, we’ve added initial support for this promising framework in ReSharper. For instance, code completion includes all the possible directives, e.g. page (routing), inject (service injection), and function (component members).
The Parameter Info popup and the Summary tooltip for IntelliSense: When using code completion in C# or VB.NET, ReSharper displays parameter types and method return types in a different color, making it easier to visually identify method overloads.
Navigation improvements: Now you can exclude files by mask from all Search & Navigation features, and find function signatures copied from dotTrace’s or Visual Studio’s call stack view in Search Everywhere. File Structure, Containing Declaration, and Next/Previous Members now take local functions into account.
The formatter engine update: Comments in a code file that override formatter settings can be generated automatically. The presentation for formatting rules which come from a StyleCop configuration file has been improved.
Refactorings UI update: Several ReSharper refactorings have been moved to the new presentation framework, which will yield many benefits in the coming future thanks to a unified control behavior for ReSharper and Rider. As for visible UI changes, most noticeable ones are code completion available in Change Signature and a better presentation for Extract Method.
Other features: Fix-in-scope quick-fixes now have more granular fixing scopes; the code style for Built-in Type has been improved; there’s a new option to execute BeforeBuild and AfterBuild targets for skipped projects in ReSharper Build; and a new inspection was added to highlight misplaced text in XAML.
Other tools from ReSharper Ultimate family also get an update:
ReSharper C++ 2018.2 adds highly requested support for C++/CLI and deepens its understanding of many new features from C++17 and the upcoming C++20, including class template argument deduction, fold expressions, coroutines, and more. Code analysis is augmented with spell-checking inspections powered by the bundled ReSpeller plugin, as well as formatting inspections that help you maintain a consistent code style.
dotCover 2018.2: in addition to Visual Studio, dotCover is now part of the JetBrains Rider IDE on Windows. Currently, there are two main features supported: code coverage analysis of unit tests and continuous testing. dotCover console runner also got an update: now, it can be used as an extension to .NET command-line tools (dotnet.exe). For example, you can run coverage analysis of unit tests by running: dotnet dotcover test
dotTrace 2018.2 is mainly about performance improvements with one more feature that made it into the release. When configuring the profiling of an arbitrary .NET process, you can now set an include filter and have dotTrace attach itself only to the process that matches the filter.
dotMemory 2018.2 finally gets the ability to profile ReSharper run configurations, which makes it possible to profile not only your startup project, but any arbitrary executable, or even any static method. The timeline graph (the one you see during profiling) is also improved: not only is it available for all types of apps including .NET Core and ASP .NET Core, but it also contains a new Allocated in LOH since GC chart. The chart shows instant memory allocation to the Large Object Heap and can be very helpful in detecting excessive allocations of large objects.
dotPeek 2018.2 improves navigation to interfaces, enums, and any types that have no method implementations.
A dozen or so bug-fixes affecting Unit Testing were implemented.
We fixed a load of issues in Code Analysis.
To read more about all the changes in this build, please refer to our issue tracker.
ReSharper C++ 2018.2.2 updates the spell-checking inspection to skip commands in documentation comments. It also fixes two important issues where ReSharper C++ could sometimes fail to parse files with complicated macro expansions, and where it missed some usages when performing usage search. Check out this page for the full list of fixes.
Let me highlight the big changes in the ReSharper 2018.3 EAP1 build:
We’ve implemented the Introduce parameter refactoring for local functions.
Lots of new inspections, quick-fixes, and context actions have been added to C# code analysis for different cases:
Add an explicit tuple component name.
Split ||-expressions in switch case guard clauses into separate switch cases.
Detect format strings that were incorrectly used as interpolated strings.
Use string interpolation, convert LINQ to XML/JSON, and format items highlighting for the string.Concat method.
Detect format strings which were incorrectly used as interpolated strings.
Initialize members to create and fill the object initializer.
An improved context action “Deconstruct variable” is available on usages and on parameters, and supports deep nested deconstructions.
Show Inspection Help is now available for inspections in the Inspection Results and Error in Solution windows if the inspection has a corresponding WebHelp article.
The Go To Action popup allows looking for Options pages.
You can select which font style ReSharper Editor Adornments should inherit: Visual Studio IntelliSense or Text Editor.
We’ve made ReSharper more FIPS-compliant by stopping the use of the md5 hash algorithm and eliminating all its previous uses in the codebase.
Other tools from ReSharper Ultimate 2018.3 family have received an update as well:
ReSharper C++ 2018.3 EAP introduces predefined naming schemes for common C++ code standards. It also makes several usability improvements to Parameter Info, and adds the Specify template arguments explicitly context action for use with C++17 class template argument deduction. Finally, it includes several fixes that improve performance during solution opening (in particular for projects that use Unreal Engine).
dotTrace 2018.3 EAP gets a new subfilter in the Timeline Viewer, which allows you to analyze how the allocated memory is distributed between the objects of a certain type.
dotMemory 2018.3 EAP gets a new condition on the profiling controller for taking a snapshot: Get a snapshot if total memory usage exceeds X MB. Also, the view showing objects queued for finalization (the result of the Finalizable objects inspection) allows opening these objects and analyzing them in other dotMemory views.
dotPeek 2018.3 EAP supports decompiling local functions and pattern matching and makes it possible to copy the fully qualified name (FQN) of a symbol to the clipboard.
Rider has had support for decompiling .NET assemblies for a while (including debugging), but it only allows decompiling assemblies referenced in our solution.
The latest Rider 2018.3 Early Access Preview (EAP) changes this, and comes with a built-in assembly explorer, which lets us drill into namespaces, types and type members for any assembly. Essentially, this makes Rider’s assembly explorer a cross-platform .NET decompiler that works on Windows, Mac OS X and Linux, based on dotPeek.
For referenced assemblies, we can use the View in Assembly Explorer context action to open the assembly explorer:
Image may be NSFW. Clik here to view.
Another way to open it, is by changing the view of the Solution Explorer tool window – it’s more than just a Solution Explorer! From the title bar, we can explore our solution, the local file system, and assemblies. In the Visual Studio keyboard scheme, we can also use Alt+Left arrow/Right arrow to switch views.
Image may be NSFW. Clik here to view.
Once we’ve opened the assembly explorer, we can navigate through namespaces, types and type members, as well as embedded resource files. Double-clicking (or Enter when using the keyboard) will open the decompiled source code or the embedded resource:
Image may be NSFW. Clik here to view.
Just like dotPeek (our standalone .NET decompiler for Windows), Rider lets us open individual assemblies from disk, explore folders, and open assemblies from the Global Assembly Cache (GAC). It also supports working with assembly lists, making it easier to switch between different sets of assemblies. Rider indexes all assemblies in our assembly list, as well as the assemblies they reference.
Image may be NSFW. Clik here to view.
Tip: in Open from GAC as well as in many other tool windows in Rider, we can start typing to perform a wildcard search for items, and then use the arrow keys to cycle through search results.
Of course, we can use Search Everywhere (Ctrl+T or Double-shift) to navigate to the decompiler as well. Rider can navigate to classes and interfaces, as well as other symbols like properties and methods.
Hello there,
Coming into the homestretch of this release cycle, we’ve just published the new EAP8 build for ReSharper Ultimate 2018.3. If you’ve been wanting to try all the new features before this major release goes public, now is the time to download this EAP build and give it a go!
The latest ReSharper 2018.3 EAP includes:
Parameter name hints right in the code editor to make C# and VB.NET code more readable.
Auto-detection of formatter settings and C# naming styles.
Initial support for Visual Studio 2019 Preview.
Initial support for the new localization procedure in the latest ASP.NET Core projects.
Improved C# 7 deconstruction support.
VB.NET 15.3 and 15.5 language support.
Lots of new inspections, quick-fixes, and context actions for C# code.
Performance optimizations.
TypeScript 3.0 support.
Other ReSharper Ultimate tools have received solid updates too:
ReSharper C++ 2018.3: Find dozens of improvements made to code refactoring, code analysis, and navigation. Read code easier with the improved error diagnostics in templated code, C++ name hints, and the improved parameter info popup. Let ReSharper C++ auto-detect the code formatting settings for you or start to make use of the predefined C++ naming schemes which are now available. Besides, the support for C++/CLI was improved. And if you are working with the Unreal Engine, you’ll appreciate the enhanced performance and parsing improvements for the reflection macros.
dotCover 2018.3: Now, there are two groups of filters in the dotCover options: runtime filters and results filters. The latter is extended with a filter by file name. Use it to exclude unnecessary (e.g., auto-generated) files from the results and reduce “noise” in the coverage tree.
The biggest thing about dotTrace 2018.3 is that it’s now integrated into JetBrains Rider on Windows. You can configure and run profiling sessions, get snapshots, and analyze them in the built-in viewer.
dotMemory 2018.3 gets a new condition for taking a snapshot on the profiling controller: Get a snapshot if total memory usage exceeds X MB. Also, you can click on a timeline graph to get the exact memory data at a specific time point.
dotPeek 2018.3 supports decompiling more C# 7.x features and makes it possible to copy the fully qualified name (FQN) of a symbol to the clipboard.
I’m here today to present to you this year’s last major release of ReSharper Ultimate. Don’t feel like reading? Then come and grab ReSharper Ultimate 2018.3!
Let me show you what the ReSharper team has accomplished in this release:
We’ve added parameter name hints right to the code editor. This helps make C# and VB.NET code more readable.
Early support for Visual Studio 2019 Preview 1.
The code formatter can now detect the code formatting style right from your code and adjust the formatter settings accordingly (ReSharper | Edit | Detect formatting settings). No more looking through ReSharper formatter settings and configuring them manually.
ReSharper can autodetect the naming style you use in your code. No manual configuring of naming styles anymore to match the naming convention you use.
Improved C# 7 deconstruction support includes new/updated inspections and quick-fixes.
VB.NET 15.3 and 15.5 language support.
TypeScript 3.0 support.
Initial support is available for the new localization procedure in the latest ASP.NET Core projects. Most of the localization inspections, refactorings, and quick-fixes that you are familiar with from the old localization procedure are available.
Lots of new inspections, quick-fixes, and context actions have been added to C# code analysis for different cases.
A few performance optimizations have been made.
We’ve implemented the Introduce parameter refactoring for local functions.
A couple of new keys to run ReSharper Command Line Tools.
We’ve made ReSharper more FIPS-compliant by stopping the use of the md5 hash algorithm and eliminating all its previous uses in the codebase.
The Go To Action popup allows looking for Options pages.
You are welcome to check the What’s new in ReSharper page to learn more about the features and improvements in ReSharper 2018.3. See also the full list of requests we’ve addressed this release cycle.
As usual, all other ReSharper Ultimate tools get an update in this release as well:
ReSharper C++ 2018.3 – every bit better! Cleverer refactorings, new context actions, an even smarter Go to Declaration and Search Everywhere, auto-detection of code formatting settings and C++ naming schemes, and better error diagnostics on templated code. Besides all this, the release has improved C++/CLI support. If you are working with the Unreal Engine, you can find enhanced performance and parsing improvements made to the reflection macros.
dotCover 2018.3: In addition to multiple bug fixes, we’ve reworked the way coverage filters are organized. Now, there are two groups of filters in the dotCover options: runtime filters (those applied during a coverage session) and results filters (those applied to coverage results). The latter is extended with a filename filter. Use it to exclude unnecessary files from the results (such as auto-generated ones) and reduce “noise” in the coverage tree.
The biggest thing about dotTrace 2018.3 is the integration into JetBrains Rider. You can configure and run profiling sessions, get snapshots, and analyze them in the built-in viewer. Note that currently, the viewer cannot show a distribution of events on a timeline. That’s why timeline snapshots are opened as simple sampling snapshots.
dotMemory 2018.3 gets a new condition for taking a snapshot on the profiling controller: Get a snapshot if total memory usage exceeds X MB. You can also click on a timeline graph to get the exact memory data at a specific time point.
dotPeek 2018.3 supports decompiling more C# 7.x features and makes it possible to copy the fully qualified name (FQN) of a symbol to the clipboard.
It’s that time of the year when we usually start the Early Access Program for our inaugural major release of the year. Please give a warm welcome to the first ReSharper Ultimate 2019.1 EAP build!
ReSharper 2019.1 EAP comes with the following notable enhancements:
Initial C# 8 support: Ranges and index from end expressions, null-coalescing assignment, switch expressions, tuple expression in a switch statement, static local functions, and nullable reference types are supported.
Parameter name hints work for attribute usages and for StringFormatMethod calls.
Enhanced typing assists for nullability annotations.
Improved support for Visual Studio 2019 RC.
Code formatting: detecting formatting settings works in the background; “export settings to .editorconfig” is possible; and formatting inspections for indenting around child statements are ON by default.
Optimize references works on SDK projects.
Go to Text searches inside all text files in a solution.
The Extract Method refactoring can now rename introduced parameters.
ReSharper C++ 2019.1 EAP – The ReSharper C++ team has started this year putting the pedal to the metal on performance optimizations in Unreal Engine 4 codebases. The changes include initial indexing that runs several times faster, much better memory utilization, and new settings to tweak ReSharper’s indexing behavior. ReSharper is also aware of UE4 RPC functions, which means that you can now jump between related function declarations and definitions, generate required definitions, and so on.
Apart from all the UE4 improvements, ReSharper C++ delivers the following:
Lots of general performance improvements to reduce indexing time and improve memory usage.
C++ language support: C++20 familiar template syntax for generic lambdas, C++17’s hexadecimal floating-point literals, and alternative operator representations.
Navigation improvements: Include base members option in Go to file member is supported; and Go to file member, Go to base class, and Go to derived class searches are now available during indexing.
Unit testing: support for TEMPLATE_PRODUCT_TEST_CASE test declarations from Catch 2.7 and GTEST_SKIP() macro in Google Test.
Documentation comments: parameter names get renamed in XML documentation comments, and a typing assist automatically inserts ‘///’ on a new line.
Clang-Tidy: separate Clang-Tidy options page, and a new setting to use a custom clang-tidy binary instead of the built-in one.
dotPeek 2019.1 EAP adds navigation to source from a document token node, and navigation to the XML view of the PDB content in the metadata tree. The Assembly Explorer adds the Dependencies node for NuGet packages and allows navigating to nuspec file by double-clicking the NuGet node.
dotMemory 2019.1 EAP provides initial .NET Core 3.0 support and can instantly navigate from dotMemory to the object’s type declaration in JetBrains Rider.
Initial C# 8 support. ReSharper supports new language features, such as ranges and index from end expressions, null-coalescing assignment, switch expressions, tuple expression in a switch statement, static local functions, async streams, nullable reference types, recursive patterns, and using declarations.
Support for the recently released Visual Studio 2019 RTM, including but not limited to supporting the “async packages auto-load” API in Visual Studio 2019.
A way to completely disable web languages support (if you don’t need it) to improve the overall performance.
Parameter name hints work for attribute usages and for StringFormatMethod calls. Image may be NSFW. Clik here to view.
Enhanced typing assists for nullability annotations.
Code formatting updates that include an option to export code formatting and code styles setting to an .editorconfig file; detection of formatting settings in the background; a new built-in Code Cleanup profile, and more. For details please see this blog post.
A new typing assist to unindent the code when you press Backspace. Image may be NSFW. Clik here to view.
“Optimize References” which analyzes unused package references in SDK projects.
Go to Text which searches inside all the text files in a solution.
Please see the What’s new in ReSharper page to learn more about the new features and improvements in ReSharper 2019.1.
Other ReSharper Ultimate tools have received solid updates too:
ReSharper C++ 2019.1 greatly improves startup time for your projects, and adds support for C++20’s Contracts, the three-way comparison operator, and some other language features. It also speeds up many navigation actions, introduces a more flexible approach to Clang-Tidy integration, and enhances unit testing support. For Unreal Engine 4 developers, we’ve got completion for reflection specifiers, support for the UE4 naming convention, enhanced auto-import, and more.
dotCover 2019.1 integrates with JetBrains Rider allowing unit test coverage analysis and continuous testing for .NET Core applications on Windows, macOS, and Linux. Image may be NSFW. Clik here to view.
dotTrace 2019.1 lets you profile Mono and Unity applications on Windows, macOS, and Linux.
dotMemory 2019.1 provides initial .NET Core 3.0 support and can instantly navigate to the object’s type declaration in JetBrains Rider.
dotPeek 2019.1 adds navigation to the source code from a document token node and navigation to the XML view of the PDB content in the metadata tree. The Assembly Explorer adds the Dependencies node for NuGet packages and allows navigating to nuspec files by double-clicking the NuGet node.
Let me highlight briefly the key changes and improvements you can already try out in this first build of the ReSharper 2019.2 EAP:
There is initial support for the “Per-Monitor DPI Awareness” mode in Visual Studio 2019. If you disabled Optimize rendering for screens with different pixel densities via Tools | Options | Environment | General because of the rendering issue we had with the ReSharper tool windows, please enable it again and check out how it now looks.
We’ve updated the Performance Guide page. It has a new Windows Defender section and descriptions for all performance tips, which describe what exactly will be done after a suggestion is applied.
You can search in a file right through the Go to File member dialog.
Image may be NSFW. Clik here to view.
A new filter in the Go To Text results window to filter out comment lines.
The Advanced symbol options dialog under ReSharper | Tools | External Sources now supports relative paths.
The debugger data tips respect the Enable property evaluation and other implicit function calls setting, and can evaluate property values on demand.
A new tooltip with the description of a keyword is available in the IL Viewer.
The full list of fixes that made it into this first EAP is on our YouTrack.
At the same time, ReSharper C++ 2019.2 EAP comes with a lot of new features and improvements:
Improved hints in the code editor. ReSharper C++ adds two new types of hints: hints after preprocessor directives and hints for function arguments passed by a non-const reference. Hints in aggregate initialization expressions now show the names of initialized base classes.
Image may be NSFW. Clik here to view.
New inspections and quick-fixes:
Several new inspections are available: “Unmatched preprocessor directive”, “Explicitly defaulted special member function is implicitly deleted”, and “Redundant final function specifier in a final class”.
“Use static_cast fix” for the “C-style cast used” inspection can be run in bulk and as a part of Code Cleanup.
Several updates in Navigation:
Go to declaration can navigate to the default constructor called when an object is default-initialized in variable declarations and new expressions..
Find usages finds usages of default constructors in default initialization.
Go to symbol now hides symbols with qualified names (e.g. out-of-class function definitions). When an item is selected, Go to symbol jumps to its definition, similar to how Go to declaration does.
More C++ 20 features are supported: conditional explicit, char8_t, pack expansion in lambda init-capture, default constructible and assignable stateless lambdas, C++20 rules for aggregates, consteval and constinit specifiers, C++20 improvements to structured binding declarations.
Code completion: The summary tooltip in the code completion popup is now colored and shows documentation for the selected item.
Image may be NSFW. Clik here to view.
Improvements to typing assist in multi-line comments: multi-line comments that use single-line syntax are automatically extended; extending multi-line comments now inserts correct indentation when virtual space is enabled.
Unreal Engine 4 support: The “Rename” and “Change Signature” refactorings handle RPC functions properly.
In addition to new features and improvements, ReSharper C++ has more than 70 bugs fixed in this first EAP build.
dotPeek 2019.2 EAP brings an unmanaged (win32) resources subtree in the Assembly Explorer and a couple of updates for the metadata tree: a description for unmanaged resources directories and entries (type, language) and a description for section’s headers.
Smart support for C# 8.0 language features such as indices, ranges, and unmanaged generic structs, as well as many new quick-fixes, inspections, and context actions.
Image may be NSFW. Clik here to view.
The enhanced Convert concatenation to interpolation context action which can now be applied in scope.
A new faster “MSBuild-based” way to create a project model, which was borrowed from JetBrains Rider.
An updated Performance Guide page.
Image may be NSFW. Clik here to view.
Updated debugger data tips: They respect the setting “Enable property evaluation and other implicit function calls” and can evaluate property values on demand.
Find Usages uses the data from Solution Wide Error Analysis to gather the results. If you enable SWEA for your solution, Find Usages will show you the results significantly faster.
Update in Navigation: “Search in a file” through the “Go to File Member” dialog and filter out comments from the “Go To Text” results.
Image may be NSFW. Clik here to view.
Improved code formatting: new formatting options for switch expressions, and you can edit EditorConfig properties right inside the Options page UI.
Support for the Per-Monitor DPI Awareness mode in MS Visual Studio 2019.
Apart from the new features and improvements, ReSharper also has more than 300 issues fixed.
Other ReSharper Ultimate tools have received some solid updates too:
ReSharper C++ 2019.2 provides significantly faster indexing thanks to a new preprocessor implementation. It improves code navigation and completion actions, adds more code hints in the editor, and has new code inspections. V2019.2 also comes with more sophisticated support for the new C++20 standard, as well as better integration for Unreal Engine 4 projects.
Image may be NSFW. Clik here to view.
dotCover 2019.2 supports Mono applications and unit tests on macOS, Linux, and Windows. dotCover’s console runner is now available on macOS and Linux too.
dotTrace 2019.2 as integrated into Rider has become more mature. It includes the full set of Timeline filters, making it easier to analyze Timeline profiling snapshots in place.
dotMemory 2019.2 no longer supports remote profiling. To offer you an adequate replacement, we have significantly improved the dotMemory console profiler which now supports almost all application types including .NET Core applications, IIS Express-hosted applications, and Windows services.
It’s also worth noting that both dotTrace and dotMemory are able to attach to and profile .NET Core 3.0 Preview 7 applications.
dotPeek 2019.2 has a new tooltip with the description of a keyword in the IL Viewer, and a couple of updates for the metadata tree and Assembly Explorer.
In the list below, I highlight several new features and improvements of the ReSharper 2019.3 EAP:
Improved C# 8 support including notnull constraint, the target-typedswitch expressions, early support for default interface methods, a new hint "Local function can be static", and a new quick-fix "Add missing arms".
Image may be NSFW. Clik here to view.
New Type Name Hints are available for lambda’s parameters, all var occurrences including pattern matching and tuples deconstruction, range variables inside LINQ statements, and at the end of a line in a method call chain.
Xamarin support has a couple of important fixes such as x:DataType and Class attribute support.
Find dependent code now works for NuGet references and can be run for a whole solution. Also, the Find results window for Find dependent code has new filters.
Image may be NSFW. Clik here to view.
To see what other fixes we’ve added in the first EAP build, please see this.
For ReSharper C++, here’s what this 2019.3 EAP provides:
Initial support for C++20 concepts.
Image may be NSFW. Clik here to view.
Clang-tidy integration
The bundled clang-tidy binary was updated to version 9 with a number of new checks. Additionally, it should no longer prevent modifications to source files.
Clang warnings can now be disabled from the inspection menu.
Added a setting to use a specific clang-tidy configuration file (instead of a setting which specified the configuration as a string)
Image may be NSFW. Clik here to view.
You can export your formatting options to a .clang-format file.
Thanks to some improvements in the code highlighting engine, re-highlighting now happens faster (after a function’s body is changed, only the body itself will be reanalyzed).
New quick-fixes are available to help you add a variable to the lambda capture list.
Unreal Engine 4 support has been improved:
UE smart pointers (TSharedPtr, TSharedRef, TWeakPtr, TUniquePtr) are supported similarly to std::shared_ptr/unique_ptr (e.g. they are supported by the Parameter Info, code analysis, and postfix code completion).
Image may be NSFW. Clik here to view.
The new postfix template for UCLASSes expands to a proper factory function call.
New USTRUCT/UCLASS/UENUM/UENUMCLASS live templates are available.
We fixed the Visual Studio hang after executing the "Refresh Visual Studio Project" action in the Unreal Engine 4 editor.
Several live templates were renamed to match the corresponding keywords (e.g. “cls” to “class”, “str” to “struct”, etc.).
A couple of updates to the "Go to file member" dialog:
The dialog is now displayed instantly instead of waiting for a file to be fully analyzed.
If a file contains both the declaration and the definition of a function, the function is shown only once in the dialog.
It’s now possible to navigate to the aggregate class from the opening brace of a brace-enclosed initializer list.
Image may be NSFW. Clik here to view.
dotMemory 2019.3 EAP shows the virtual memory addresses for object instances.
The EAP for dotTrace command-line tools 2019.3 now supports profiling Mono and .NET Core applications on Linux and macOS.
dotPeek 2019.3 EAP can now navigate to the external sources of NuGet packages that have a source symbols package [*], such as JSON, Moq, or JetBrains.Lifetimes.
First, let’s take a brief look at the most important changes:
The brand new Localization Manager helps you work more efficiently with many .resx files in your solution. It shows everything in your .resx files on a single grid, so you can observe the current state of the application or website localization and quickly find any missing resource values in any culture.
Image may be NSFW. Clik here to view.
C# 8 support has become even better and now includes support for notnull constraints, target-typed switch expressions, early support for default interface methods, and several new inspections and quick-fixes.
Code generation knows more about C# 8 and helps you learn it, too.
Image may be NSFW. Clik here to view.
Find dependent code now works for NuGet references and can be run for the whole solution instead of just a project.
By no means are these the only updates in this release. We have even more for you:
C# naming settings now support reading from and exporting to EditorConfig.
Type Name Hints are available for all var occurrences, lambda parameters, and more.
Image may be NSFW. Clik here to view.
The Unit Testing tool windows have new grouping modes and new filters.
We’ve added more color settings for extra precision with code highlighting.
ReSharper Command Line Tools are available on Linux and macOS, in addition to Windows.
This is just a short list of everything that has kept our team busy over the last 4 months. Please visit What’s New in ReSharper 2019.3 to read about all the changes in more detail.
ReSharper C++ 2019.3 is here to help you adopt C++20, including support for Concepts in Find Usages, the Rename refactoring, and code inspections. New type hints in the editor can make your code easier to read, while the new formatter options help tune your code style more precisely. There are also enhancements to navigation, live templates, and Clang-Tidy integration. For game developers working on Unreal Engine 4 projects, v2019.3 delivers more templates to generate UE4-specific code, as well as support for UE4’s Smart Pointers.
We have finally released the dotTrace command-line tool for Linux and macOS.
Both dotTrace in Rider and the standalone dotTrace command-line profiler now support profiling .NET Core projects on Linux and macOS. Note that only projects targeting .NET Core 3.1 are fully supported. Because of .NET Core limitations, there may be issues with profiling projects that target .NET Core 3.0 or earlier, as in some cases the application being profiled may hang or crash.
The call tree in the Timeline Viewer is now easier to analyze, thanks to the flame graph.
A new self-profiling API, which lets applications initialize and start a profiling session on their own. The self-profiling API is distributed as a NuGet package.
The option to export instance details to a .json file (.bson, .hex, and .txt are also available).
The ability to view the virtual memory address of an object instance.
dotCover 2019.3
dotCover 2019.3 gains support for Unity projects and projects using Microsoft Fakes. In addition, dotCover is now able to group coverage results by nested namespaces in Rider, in Visual Studio, and in reports generated by the dotCover console tool.
dotPeek 2019.3
dotPeek 2019.3 can navigate to the external sources of NuGet packages that have a source symbols package (.snupkg) and supports decompiling these additional C# 7 language features:
ReSharper Ultimate 2020.1 is now available! We encourage you to try out the first major update this year. Read about the release highlights in this blog post, or visit our What’s New page to see a comprehensive list of improvements.
This release has tons of changes to the architecture of ReSharper that bring us closer to our goal of running all the core ReSharper features out of the Visual Studio process. All these modifications took place under the hood, so you won’t notice any changes in the UI or the UX in the ReSharper 2020.1 release build. If you missed the news about our progress toward moving ReSharper out of process, this is a good opportunity to catch up and learn about where we are now.
Now let’s talk about the most exciting updates we have for you in the 2020.1 release.
ReSharper
Dataflow analysis of integer values in C#
Check out this new type of code analysis, which tracks how the values of all int local variables vary. It verifies the correctness of all common operations on such variables to detect useless or possibly erroneous pieces of code.
Image may be NSFW. Clik here to view.
Nullable reference types
We’ve refactored a lot under the hood in C# language support to prepare code analysis and other features, such as refactorings and ReSharper Build, to support nullable reference types (NRT). In ReSharper 2020.1, code analysis reports compilation warnings related to nullable reference types and provides quick-fixes for most of them, along with a few other new inspections.
Image may be NSFW. Clik here to view.
Other highlights
We’ve made a lot of improvements and fixes to XAML support that cover WPF, Xamarin.Forms, UWP, and Avalonia XAMLs.
Image may be NSFW. Clik here to view.
Several small but useful features to Navigation will benefit you whether you prefer to use the mouse or the keyboard to interact with ReSharper. You can middle-click to Go to Declaration, use a full path in Go To File / Go To Everything to find files, or press Ctrl+Enter in the result list of Go to File to highlight the file in the Solution Explorer window.
You can export and import any of your Unit Test Sessions. This allows you to share them with your team, between your computers, or between branches when you change something in the code and want to run/cover the same set of unit tests for both branches.
Image may be NSFW. Clik here to view.
Localization Manager: you can now leave a comment (or edit an existing one) for any value that comes from resource files right inside the grid. Several performance fixes and UX improvements will help you make the grid faster to load and filter, use right-to-left languages, navigate more precisely to specific rows from the text editor and refactoring dialogs, and more.
Code formatting brings new settings for C# Code Styles that cover the trailing comma.
See the full list of fixes completed in the 2020.1 release cycle on YouTrack.
ReSharper C++
ReSharper C++ 2020.1 supports several new C++20 features, including constrained type placeholders, abbreviated function templates, and using enum declarations. New coding assistance features like Rearrange Code and Complete Statement help you write and change your code more efficiently. The Introduce Using Enum and Convert to Scoped Enum refactorings offer an easy way to modernize your enum usage. Other changes include new code inspections with accompanying quick-fixes, improved code completion, and new navigation features. For game developers, ReSharper C++ introduces initial support for HLSL (the High Level Shading Language) and offers better conformance to the Unreal Engine coding standard.
You can profile .NET Core applications on macOS and Linux using the Tracing profiling mode. To do this, you should use either JetBrains Rider or dotTrace command-line profiler.
You can attach the profiler to running .NET Core processes on Linux.
You can navigate through the Call Tree using the Next Important Call action. Press Ctrl+Shift+Right and dotTrace will navigate you to a node that is most relevant for further analysis. The feature is available in dotTrace Standalone (both Performance Viewer and Timeline Viewer), in Visual Studio, and JetBrains Rider.
We’ve implemented some bug fixes and stability improvements.
We’ve also reworked the internal data format. This means that dotMemory 2020.1 snapshot format is incompatible with earlier versions. At the same time, this will let us introduce some new features in the future releases.
The Intermediate Language(IL) Viewer supports custom attributes for interface implementations and generic parameter constraints. For example, a compiler can apply a NullableAttribute and TupleElementNamesAttribute to these entities.
Support for nullable reference typeshas come to the decompiler. Please note that this only works in declarations, not in the bodies of methods.
We’ve added support for decompiling the default members of interfaces and Auto-Implemented Property Field-Targeted attributes.
Image may be NSFW. Clik here to view.
We’ve improved support for decompiling tuple component names.
We hope you find this new functionality handy. Share your feedback with us here in the comments, in our issue tracker, or on Twitter.
Nullability code analysis is learning about more cases – it can now trace the incorrect nullability through deconstruction and the foreach cycle, and it provides a quick-fix:
Image may be NSFW. Clik here to view.
Context actions for converting foreach to LINQ and LINQ to code are available on IAsyncEnumerable<T> as well – just install the System.Linq.Async NuGet package for your project.
Image may be NSFW. Clik here to view.
Support for default implementations in interfaces has gotten better: our indicators show that a method is implemented and overriden, and our refactorings and navigation are now smarter about this language feature.
Good news for UWP developers: support for compiled bindings with x:Bind is finally on its way! ReSharper resolves the x:Bind code correctly and offers inspections and quick-fixes – for example, for missing property setters or overload collisions. More improvements are coming, and we welcome your feedback in our public issue tracker.
Because Command Line Tools now run on .NET Core, they no longer come with Mono bundled. Please note that the tools for macOS and Linux now require .NET Core 3.1.
Navigating to usages of types from external assemblies in your code is now much easier. ReSharper can take you straight from Go to Type search results to Find Usages. Search for the type you’re interested in, highlight it in the list with keyboard or mouseover, and call Find Usages or Go to Usage by using their respective shortcuts. Here’s an example:
Image may be NSFW. Clik here to view.
Other actions, such as calling quick documentation, are also now available from Go to Symbol and Go to File Member using shortcuts.
Inlay hints are now available in XAML code too. We provide hints for markup property names and DataContext, as well as for margins and paddings, which can be handy if you don’t want to memorize their orders.
Image may be NSFW. Clik here to view.
For .editorconfig users, we’ve taught ReSharper to follow dotnet_diagnostic rules. Specify the severity of inspections in your .editorconfig file, i.e. dotnet_diagnostic.CS1058.severity = hint, and ReSharper will display those inspections accordingly.
Our Blazor support is getting better all the time – we’ve eliminated a lot of known erroneous red code and improved performance.
And we’ve implemented a variety of performance updates for code cleanup.
Interested in fixed issues more than new features? Visit this page to see all the closed requests.
ReSharper C++ 2020.2 EAP1
The main highlights of the ReSharper C++ 2020.2 EAP1 build are:
For Unreal Engine, ReSharper C++ introduces experimental support for the Unreal Engine project model, new inspections, and improvements for Find Usages and code generation. Also, it is now in better alignment with the UE code style:
Image may be NSFW. Clik here to view.
C++/CLI support has new inspections for gcnew and final and searches for inheritors and usages in C# code too.
For code style and formatting, ReSharper C++ provides settings for multiline ternary operators and sorting of include directives.
Other improvements include a preview for small quick-fixes, better evaluation of constexpr functions, new file templates, and more.
Please refer to this separate blog post for an overview of all the C++ changes we’ve made in the first EAP.
dotPeek 2020.2 EAP1
As usual, dotPeek continues to improve its support for the most recent versions of C#. In dataPeek 2020.2 EAP1, the decompiler engine now supports:
Expression-bodied members.
Throw expressions.
Default parameters and named arguments.
Additionally, NuGet packages are finally sorted alphabetically in the Assembly Explorer.
And last but not least, the “Generate PDB” engine now infers and stores the tuple component names for local variables.
dotMemory 2020.2 EAP1
The dotMemory Command-Line Profiler has come to macOS and Linux to help you analyze memory usage in your .NET Core applications. We are going to publish a related blog post soon that will provide more detailed information about it. For now, you can run ./dotMemory.sh help for a list of available commands and arguments.
As for standalone dotMemory, you can now open all pinned objects as a separate object set.
Note: In 2020.2, we change the way third-party tools should be integrated with JetBrains .NET tools: dotTrace, dotMemory, and dotCover. If you are a developer of such a tool, please update the integration according to the following articles: dotTrace, dotMemory, dotCover.
We recently published the Rider 2020.2 roadmap, as well as the ReSharper C++ 2020.2 roadmap, and we’d now like to bring you up to speed with what we’ve got planned for ReSharper 2020.2 in .NET.
As ever, please be aware that this list is preliminary. These are the broad areas we’re working on, and a list of our priorities, but things can change before release. With that disclaimer out of the way, let’s take a look at what’s coming!
This month in computing history: In 1977, Apple shipped the Apple II. In 1995 Spyglass went public! Ahhh, the good old days. If you’ve been around for far too many decades in this field (like me), raise your hand if you remember Spyglass Mosaic! It’s not a thing anymore but it Mosaic was a key player in the evolution of browsers on the world wide web.