Introducing the ReSharper 9 Early Access Program

As many of you may have noted, there’s quite a lot of things happening in the land of .NET right now. The introduction of Roslyn and C# 6, the new ASP.NET, the forthcoming release of Visual Studio 14 and many other things are afoot and, once again, ReSharper is unrelenting in its support of the new and exciting language features and frameworks.

So today we are opening the Early Access Program (EAP) for ReSharper 9. What’s in store? Let’s take a look.

TL;DR VS 14 and C#6 support, regular expressions, lots of JS/TS improvements, more bulk fixes, a revised file layout editor, new navigation actions and a new shared platform for all our .NET-related tools.

C# 6 Support

ReSharper 9 supports the ?. operator in C# 6

We already did an introductory blog post on C# 6 support so, just to recap, here are some of the things that ReSharper 9 will be aware of:

  • Conditional access support — the .? operator lets us perform chained null checks (a.k.a the Maybe monad), so ReSharper is now not only aware of the construct, but is also capable of updating your null-checking code to the new paradigm.
  • Expression-bodied members — since the notation for simple expressions has been simplified in C# 6, ReSharper now offers the option to use expression bodies instead of curly-brace-delimited constructs. This is also a bulk action, so you can apply it across the whole project.
  • Auto-properties benefit from additional support of initializer expressions, as well as an ability to get rid of private setters and get truly immutable auto-properties.
  • Support for static usings (finally, you can type Sin instead of Math.Sin), exception filters and other new C# 6 constructs.

Bulk Actions and Fix in Scope

Fix in Scope: more quick-fixes that can be applied in the entire project or solutionReSharper 9 introduces further improvements to the Fix in Scope mechanic that allows bulk non-destructive changes on large areas of code. This includes the following:

  • Bulk Import ensures that when you import a chunk of code, ReSharper now goes through the code in your solution and generates the appropriate imports for all the necessary types and members – this includes extension methods as well.
  • Redundant Code Removal now appears as a separate item, so given a single redundant this. qualifier, you can fix these qualifiers locally or globally or you can remove all redundant code in a file, project or solution.
  • Global naming fixes help you rename code according to your conventions. Again, this is a bulk action, so you can fix a single location or a single file/project/solution within a single menu.
  • Move to File/Namespace now ensures that files with multiple class declarations get treated properly.
  • Remove Regions is another bulk action that will be particularly welcome by those of us who do not like the idea of regions in our code.

Navigation Improvements

Navigation improvements in ReSharper 9: Go to ActionSome of the navigation improvements in ReSharper 9 include:

  • Go to Action (a.k.a. Universal Alt+Enter) changes the Alt+Enter shortcut to provide top-level action suggestions as well as an ability to perform a text search for a particular action.
  • Navigate to Exposing APIs is a navigation option for finding all the methods that are capable of returning a particular type.
  • Assembly Explorer enjoys tighter integration, with dedicated Navigate To options both in the editor as well as the Solution Explorer.
  • The Go to Type mechanism has been disambiguated for generic types, so while on a variable of type List<Foo>, ReSharper will ask you whether you want to navigate to List<T> or Foo.
  • Find Usages now has a configurable setting for using the Preview Tab. It also no longer blocks the UI on long-running searches.
  • The Find Results window will no longer spawn extra tabs for the same type. And finally, it’s now possible to ignore or hide particular search results.

Code Style Settings

File Layout Editor in ReSharper 9

Style settings for C# include the following new features:

  • var Usage in Declarations has been split into three separate settings (for built-in types, simple types and elsewhere) for finer-grained control over how var-related highlights and quick-fixes function.
  • Instance member qualification determines precisely which members are qualified by the this. qualifier.
  • Static member qualification settings determine whether static members should be qualified via the current type or the type they are declared in.
  • All three aforementioned settings are also available as Code Cleanup profile elements.
  • Finally, a brand new GUI-based File Layout Editor — no more editing a cryptic XML file by hand!

Regular Expression Support

ReSharper 9 supports regular expressionsReSharper now understands regular expressions, so to make heads or tails of them, you might no longer need to have a separate application by your side. Here’s what it supports:

  • Syntax Highlighting for regular expressions, including piecewise highlighting of errors.
  • Code Completion helps you pick the wildcards for an expression. There is a special code completion feature for regular expression groups, too!
  • An Escaping Quick-Fix helps you quickly adjust wildcard backslashes to C# style by turning the string into a verbatim string.
  • A separate Validation Utility lets you quickly check input against a regular expression and get an immediate view of the matches and groups. As you might expect, the utility is highly configurable.
  • Options for Conversion to Precompiled Expressions let you optimize performance by turning ordinary regular expression invocations into static Regex instances.

TypeScript and JavaScript Improvements

ReSharper 9 improves TypeScript and JavaScript supportHere are some of the improvements introduced for the TypeScript language:

  • New Highlighting and Quick-Fixes now cover over 270 different types of errors.
  • New Refactorings include Introduce Field, Copy Type, Move Refactorings (move type to module/file, move into matching files, move to folder), Rename File as well as the Import of Types for Pasted Code.
  • Code Generation for TypeScript now supports implementing interfaces/generating missing members as well as generating constructors and overriding members, too.
  • Live Templates were improved to support two new scopes — Module Member and Type Member. ReSharper also comes with live templates for common TypeScript entities, such as classes, enums, interfaces and modules.
  • Parameter Info now supports not only function arguments, but generic arguments as well.
  • Specialized Signatures are now fully supported.

In addition, ReSharper also offers automated JavaScript to TypeScript conversion as well as initial support for ASP.NET vNext.

Unified Installer

We plan to offer a single unified installer for all our .NET products (ReSharper, dotTrace, dotMemory, dotCover, dotPeek). When installing, you will be able to pick which products you want, and the installer will do the rest. Also, behind the scenes, all our products now operate on a shared platform, which saves resources when several products are running at the same time.

Please note that the initial EAP build we’re posting will only offer installation of ReSharper itself; it will also remove all previous installations of ReSharper and other .NET tools, and will not support VS 2005 or 2008.

And a Few More…

Here are just a couple more features that were added or improved:

  • Visual Studio 14 support is here, as you would expect.
  • Switching features on and off has never been easier with a dedicated option page which lets you control which parts of your code ReSharper actually affects. Current options include support for Unit Testing, MsBuild and NAnt, CSS, JavaScript and TypeScript as well as Internationalization.
  • Debugging of decompiled code now works in ReSharper. Of course, you can also debug decompiled code using dotPeek.
  • ReSharper’s Architecture Tools now include an ability to generate a Type Dependency Graph. This form of visualization is great for finding out what code depends on a particular type, and what the type itself depends on. This diagram integrates with other ReSharper’s features, for example navigation result sets can now be shown as a Type Dependency Graph via the Alt+ shortcut.

This sums up what we have in store for the first EAP build but we’ll be adding more changes further on. We invite you to download ReSharper 9 EAP and give it a go!

Oh, and as always, let us know what you think and please report any issues you encounter — thanks!

This entry was posted in How-To's and tagged , , . Bookmark the permalink.

36 Responses to Introducing the ReSharper 9 Early Access Program

  1. 13xforever says:

    > the .? operator

    Should be ?. operator.

  2. Daan Le Duc says:

    Looks like references from project.json are not picked up correctly in vNext projects. See -> http://i.imgur.com/plrN1hd.png

    I did file new project twice renamed and referenced the one to the other resharper is giving an error where it shouldn’t.

  3. Todd Aspeotis says:

    Will 9.0 include RePlusPlus? I’ve asked about this a couple of times and it’s been suggested that C++ support will be in the RTM.

    • Dmitri Nesteruk says:

      The next release of the EAP will indeed include C++ support. Please be aware, however, that C++ support will constitute a separate edition of ReSharper.

  4. Alex Angas says:

    Very excited about this and installing now!

    Any chance of getting RSRP-47639 “(Ctrl-Alt-Shift-Left/Right) Reorder arguments in string.Format-like methods” or RSRP-187154 “‘Extract class from parameters’ should have option to generate auto-properties in the extracted class” in ReSharper 9?

  5. NN says:

    What about VS2008 ? Will it be supported in the release ?

  6. NN says:

    Typo: VS14 , not VS 2014.

  7. Marcin says:

    These are some great news!

    Now the only major annoyance will be lack of automatic duplicated code replacement while refactoring, like it works in Idea and some other products. I hope you’ll add it in 9.1 or around that time.

  8. Stephen U says:

    It would also appear that inline declarations for out params aren’t currently supported.

    Before
    int x;
    int.TryParse(“123”, out x);

    After
    int.TryParse(“123”, out int x);

  9. Pingback: The Morning Brew - Chris Alcock » The Morning Brew #1715

  10. irium says:

    Installation doesn’t work – after installation completed I don’t see ReSharper menus at all – both in VS013 and VS14.

  11. Pingback: Dew Drop – October 14, 2014 (#1876) | Morning Dew

  12. Pingback: ReSharper 9 Early Access Program | OPC Diary

  13. vdceya says:

    When will Commands in XAML be supported for MVVM ? It is such a pain that these can not be generated like event-handlers can be…

    • Alexander Shvedov says:

      What exactly do you expect to be supported? Create command from usage in binding? What concrete ICommand implementation R# should use?

      Please, tell us what you expect from R# in our issue tracker :)

  14. Paul Rogero says:

    The new type dependency graph feature is AWESOME!! I’ve been hoping for this since the project dependency graph feature was added. Looking forward to this concept being expanded on further.

  15. Giedrius says:

    What about realtime code coverage like ncover has, or that will be part of dotcover someday?

    • Daria Dovzhikova says:

      @Giedrius,

      Yes, it’s still in dotCover’s roadmap, we’re hoping to see similar funcionailty in its next major version.

  16. Jimmy says:

    Great news, though mostly unusable until the extensions SDK is released :-(

    Also, is there any way to throttle ReSharper’s solution wide analysis? It absolutely thrashes my machine (several 100+ project solutions) and it does not appear to cache correctly as it always re-run’s on opening a solution?!

    Cheers

    • Daria Dovzhikova says:

      @Jimmy,

      You can pause or stop solution wide analysis by right-clicking it’s icon (in the lower right corner) and picking the corresponding option. Although we’ve put much efforts to speed it up in v9, hoping it will have a better performance by the RTM.

      • Jimmy says:

        Hi Daria

        I’m not wanting to disable SWA, I simply want it to use less system resources which cause my machine to lock. Ideally I’d like an array of options to configure CPU and memory usage, as I’d rather ReSharper ran on a single core and took longer than bringing down my machine.

        Also, the age old bug where ‘Errors in Solution’ still shows errors but the actual files do not. Sure we have the ‘Reanalyze Files With Errors’ button, but is there any way it could periodically re-scan these files as a background task? This happens several times a day when the solution has been rebuilt and ReSharper doesn’t always show the correct results afterwards.

  17. Awesome. I cannot program without re-sharper anymore. Does this release also fix the issue users are having with not being able to go to implementation?

    • Daria Dovzhikova says:

      Thank you, Daniel!

      Yes, the fix for the problem with Go To Implementation was released with R# 8.2.3 and it will be there in v9 as well.

  18. Pingback: Regular Expression enhancements in ReSharper 9 | In Absentia

  19. devmondo says:

    using resharper for years, all is great, but the one thing that i use on daily basis which is Ctrl+ W “expand selection” does not work in less and css files, for the love of god please fix this.

    thanks in advanced.

  20. Bob says:

    If the EAP is now open, why does the community page still stay EAP currently closed?

  21. Sandip Pingale says:

    The new feature like type dependency graph & Turning features off and on are very nice!

Leave a Reply

Your email address will not be published. Required fields are marked *