ReSharper 2020.3.x

Released: Dec 14, 2020

Updates in 2020.3.x


Updated Feb 22, 2021


  • Eliminated errors in handling partial methods with generics and one more StackOverflow exception.
  • Fixed a couple of performance issues.
  • No more false positive ‘not found’ highlighting on resources from MergedDictionaries in Xamarin.Forms.


Updated Dec 24, 2020


  • Fixed the issues with spaces being added instead of a virtual indent.
  • Fixed the incorrect ‘Parameter type can be IEnumerable<>’ suggestion for records.
  • Fixed Tab behavior.
  • Fixed the false warning about the init-only property in a read-only structure.


Updated Dec 14, 2020


  • C# 9 Support
    • Source Generators - Added the ability to create new code right in the compilation process and use it immediately.
    • ReSharper can take the generated files into account while performing refactorings, provide code editor features, and help you navigate to the generated code.
    • Partial methods are now allowed to have out parameters, non-void return types, and any type of accessibility, making them more useful with Source Generators.
    • Added init-only properties.
    • ReSharper is now aware of init-only properties and takes them into account when completing your code, performing generative completion, analyzing whether the property changed anywhere and offering a quick-fix to make it mutable if you change your mind.
    • Record types introduced in C# 9 are reference types with value semantics. They go perfectly with init-only properties that can only be set during the initialization of an object. This means you can now achieve immutability, for the whole object or just for the property, and keep using object initializers.
    • Local functions have received new features in C# 9.0: their parameters and type parameters, as well as the local functions themselves, are now allowed to have attributes. ReSharper now has quick-fixes for that.
  • Inlay Hints - Added a new "Push-to-Hint" mechanism for inlay hints.
  • Formatter - Added more granular settings to the formatting engine.
  • Dynamic Program Analysis - Added Dynamic Program Analysis (DPA) to ReSharper to help you analyze and create better code by detecting closures and allocations to large and small object heaps in the memory.
  • Structural Remove - This release allows you to select pieces of code according to their structure, a keyword, a block, a method, and so on.
  • Command Line Tools - If you’re working on a large code base, every solution-wide operation takes a long time to run. You can now run the CleanupCode console tool without pointing to the solution file.
    • Added support for plugins from the console tool.
      • Please note that the plugin has to be compatible with the tool version. Also, plugins are not yet supported if you’re using the Microsoft .NET Core global tools mechanism to install ReSharper’s command line tools.
  • Navigation - Find Text now performs fuzzy search in addition to exact search, taking possible typos and missing words into account. The results are displayed below the results of the regular substring search, in the Fuzzy section.
  • Avalonia Support
    • Code Analysis - Added proper support for $self, $parent, ^, and # syntax in Avalonia bindings, as well as proper validation of indexes in the $parent[] array.
      • Improved support for CompiledBinding and the x:CompileBindings extension.
      • The “Create from usage” quick-fix is available for all sorts of Avalonia properties.
      • Avalonia XAML support includes understanding of the CSS-like styling system.
    • Code completion - Code completion and parameter info are available for all XAML keywords, all sorts of markup extensions, x:Name, Style properties, Source properties for StyleInclude, and lots more.
    • Navigation - You can easily navigate to compiled binding data type, bound property, Avalonia control type, and x:Name declarations.
    • Find Usages - Find Usages helps you find all usages of method bindings, x:Name attributes, Style classes and setters, and all sorts of properties.
    • Refactorings - Rename and Safe Delete refactorings are now aware of all kinds of usages in Avalonia XAML code and update them accordingly.
    • Hierarchy and code structure - You can observe the hierarchy and structure of the Avalonia XAML code.
  • Decompiler Updates - Now supports more C# features and improved the synchronization mechanism between IL Viewer and source code.
  • Improved Blazor support - Now supports generic type parameters and their type inference from usages and eliminating performance setbacks on opening solutions.
  • Perfect Unreal Engine companion
    • ReSharper C++ 2020.3 provides seamless integration with UnrealHeaderTool to help you catch issues that are usually discovered only at compile time. ReSharper C++ runs UnrealHeaderTool in the background and displays the analysis results in real time right in the editor.
    • Added control-flow analysis inspections to shader files to improve its HLSL support. Live tracking of changes to build configuration files lets ReSharper always use the most up-to-date project model.
  • Even better C++20 support
    • ReSharper C++ 2020.3 adds C++20 changes to comparison rules.
    • This release of ReSharper C++ also adds new inspections to help you adopt the C++20 ranges library, and adds support for the standard mode of C++20 co-routines introduced in Microsoft Visual Studio 16.8.
  • Other Updates
    • Added support for nullable annotations on unconstrained generic types (includes default constraint).
    • Updated TypeScript support: ReSharper now supports nullish coalescing and optional chaining.
    • Added a new quick-fix that helps you transform a sequential pattern check into a complex pattern-matching check.
    • Redesigned the tool used to set the default value for the parameter you’re adding – the tool that is opened when you choose ‘Resolve with call tree’.
      • Navigation to code is now available by double-clicking on a node.
      • Added a new option called Create default parameter that takes you directly into the code to specify the value.
      • Different colors are now applied for different fixes selected in the tree.