Introducing the ReSharper 8 EAP

In the world of technology, no-one can afford to stand still. As new frameworks and languages come out, ReSharper does its best to keep up. This is why we are happy to announce the opening of the ReSharper 8 Early Access Program. With the forthcoming release, we are proud to announce the following features, which will be part of ReSharper 8.

Go To Everything

In preparation for ReSharper 8, we’ve put in extra effort on streamlining certain operations. One of the areas where we felt improvement was needed was the unnecessary divergence caused by the various Go To menus. In an effort to simplify things, we have altered the main Go To Type command (Ctrl+T) so that now it navigates to either types, symbols or file names, all contained within the same listing.

By default, the menu shows a listing of recently opened files:

Searches for identifiers now yield both files, types, and file members:

Don’t worry – all the previous commands (e.g., Go To File) continue to work, and dynamically switching from one context to another is supported. The functioning of selectors is, of course, left intact, so you can write things like ClassName.MemberName to locate a particular member of a class, use combo navigation, wildcards and camel-humps. In addition, we added some new selectors – for example, typing public or private helps you narrow members down by visibility. Performance of this menu has been optimized so searches should be very quick.

Code Completion Improvements

This release comes with a substantial number of improvements in the way ReSharper offers code completion suggestions.

New Items in Automatic Code Completion

The first thing to point out is that, from now on, various aspects of smart completion and import symbol completion are now integrated into ordinary code completion, once again striving for a more streamlined experience.

For example, if you take a class and indicate that it implements INotify, you will be presented with the following menu:

The completion options will now show you all the possible ways of getting at a particular interface that begins with INotify, and using it will cause the appropriate using statement to be added to the top of the file.

In addition to the above improvements, ReSharper now offers several generative completion options, specifically offering to generate code on partial and override statements:

And finally, we’ve added some minor improvements to existing completion mechanisms. For example, the completion list for a collection member now includes the keyword new by default:

Other Code Completion Improvements

In addition, we’re introducing a new concept called Double Completion. For example, when you use ordinary completion by pressing Ctrl+Space, and you don’t get the member you’re looking for, you can press this shortcut again to try locate the element in all referenced assemblies. Double Completion also works with Smart Completion, so pressing Ctrl+Alt+Space more than once will offer you various chains of calls that will get you to the right member (possibly via extension methods).

Double Completion mechanisms are supplemented by quick-fixes, so if you use it to get at a symbol that is private, a quick-fix will quickly let you alter the visibility of a member to make it accessible.

New Code Inspections

As always, we’ve added new inspections as well as improved existing ones. Here’s a small sampling of some of them:

  • You can now disable all ReSharper warnings with a single comment — instead of defining separate inspections to suppress, you can now mark code with // ReSharper disable all and ReSharper will not complain about anything until it meets a corresponding // ReSharper restore all .

  • You can now switch between array initialization expressions and array creation expressions; ReSharper offers the appropriate inspection and context actions:

  • An ability to convert recursive calls to iterative ones:

  • If a method has an overload that supports cancellation (i.e., takes a CancellationToken), ReSharper will offer to use that overload, provided that there is a CancellationToken available in scope:

  • ReSharper also supports the idea of fallback color in CSS:

This is just a sampling of some of the inspections improvements that we’ve added. We’ll publish a blog post with more in-depth information soon.

CSS Improvements

To help developers ensure correct operation of their code, ReSharper introduces configurable support for CSS3 and earlier versions, as well as compatibility checks against popular browsers:

As a consequence of these compatibility checks, ReSharper will now provide detailed information about the availability of a feature for a particular browser:

We’re working on making ReSharper progressively smarter in recognizing CSS declarations, whatever shape they take, be it in JSON:

In string literals:

And even in anonymous type declarations:

Searching for a CSS attribute has got a lot smarter, too. For example, searching for the color Red will yield all locations in CSS, JavaScript and C# where this color is used, however it may be defined:

Finally, ReSharper now supports refactorings such as the renaming of identifiers defined in CSS:

Assembly Explorer

Those of you who know dotPeek, our free decompiler, have already seen the Assembly Explorer – a window similar to the Solution Explorer that lets you explore decompiled assemblies. The great news is that now Assembly Explorer is part of ReSharper, too:

In addition to being able to load assemblies via its user interface, ReSharper also offers an option to Locate in Assembly Explorer, which will select the item currently being decompiled in the Assembly Explorer window:

The Assembly Explorer is a very powerful tool, capable of locating assemblies in various file formats (e.g., ZIP files). It’s also very extensible, a fact appreciated by dotPeek plugin writers. Its capabilities are now open for you to extend, right within ReSharper.

BAML Decompiler

While we’re on the subject of decompilation, ReSharper now supports BAML decompilation, so if you’ve got a compiled WPF app, you can easily look at its XAML UI definitions:

Note that the generated XAML above supports typical features such as navigation, Find Usages and other features one would expect from a XAML viewer.

Odds and Ends

Just a few more things that are worth mentioning.

We have made adjustments to the formatter and Code Cleanup in order to treat preprocessing directives such as #if and #region correctly. This means that constructs such as

will now correctly survive in case you execute the formatter or Code Cleanup on the file.

In addition to ReSharper as a plug-in, we are also providing a command-line tool that can be used to analyze an existing VS solution. This happens to be the tool that TeamCity uses to present ReSharper analyses. We are currently offering it as a separate, time-limited download and will be putting up new releases together with forthcoming EAP versions.

Finally, we are working hard on bringing you TypeScript support in ReSharper! It’s still too early to announce any features for it, but rest assured that it’s high in our priorities and we’ll let you know as soon as it’s ready.

Now that you’ve seen some of the features that ReSharper 8 will have, why not give them a go? Simply download the EAP and let us know what you think!

This entry was posted in News and Events, ReSharper Tips&Tricks and tagged , . Bookmark the permalink.

58 Responses to Introducing the ReSharper 8 EAP

  1. Abdu says:

    If these are most of the features of a new major version, I feel underwhelmed. They look more like enhancements to existing features than anything groundbreaking. However I guess anything new is better than nothing new.

  2. Mohamed Radwan says:

    Excellent!!

  3. Agile Hobo says:

    Just installed R# 8 EAP, Go to Type is Ctrl + N, not Ctrl + T. What I need to do to apply changes?

  4. Dmitri Nesteruk says:

    @Agile Hobo: most likely you are using the IDEA keyboard layout instead of the VS one. You can pick which one you prefer by going to ReSharper|Options and choosing the keyboard scheme on the Environment|Keyboards & Menus panel.

  5. Mark Rainey says:

    Navigate to Type is one of my most used functions and this change will make it slower as I will have to select the type among all the other stuff. Something that is simple will now need an extra step to work out which one of the 10 entries I now need.

    Adding files to the menu is potentially useful but adding all the “fluff” of symbols will not streamline the operation but slow things down.

    If I want to go to a file I will use the Navigate To File and if I want to go to a symbol I will Navigate to Symbol. Why clutter a perfectly useful option rather than just add the new one as an addition?

  6. Julien Lebosquain says:

    Nice, going to try that EAP immediately!

    However, why did you transform Go To Type rather than Go To Symbol, which was already reporting everything except files? I liked having a “type only” search, it was particularly useful to navigate to assembly types. Well, the system seems to prefer types which should be fine, and is much faster than before which is great.

  7. resharpuser says:

    Good job guys!

    It would be nice if you also add support for CSS LESS.

  8. Andy Tacker says:

    Wgere can i get any documentation about command line tools usage?

  9. Carsten says:

    Will the “Goto-Everything” work with F# files/Types as the name indicates?

    If not this will be a major-version I will not be willing to pay for – sorry.

  10. coox says:

    Julien, we actually merged all Goto type/ symbol/ file into one action and Ctrl+T (Ctrl+N) is just the shortest keybinding amoung them. But the decision on the feature is not final (personally, I like it a lot and don’t use other shortcuts) and we will adjust it depending on the feedback received during EAP.

  11. coox says:

    Abdu, we will be adding new features as they are ready.

  12. tobi says:

    Many of the “streamlining” features are features that I always wanted without knowing. Well done and keep them coming!

  13. Gary says:

    Will Test Explorer have support for running VS2012.2′s new Windows Phone unit tests?

  14. David Hanson says:

    Where is the typescript support guys?

  15. arjuns says:

    Typescript support still missing :(.

  16. Carel Lotz says:

    Any changes on the licencing model? I’m disappointed that we still need to fork out quite a bit of money every year for a R# licence as you guys seem to release a major upgrade every year. The above mentioned feature set doesn’t feel like a major upgrade and even though I love R# the monetary aspect is a concern.

    Why not change into a subscription model with discounts for your loyal customers. This make it easier to do upfront budget planning instead of trying to reactively get the money to buy the whole team licences it a major upgrade should appear within the budget cycle.

    Your thoughts?

  17. Graeme Miller says:

    Is there anyway to get ReSharper to locate implementations of interfaces with a generic type e.g. ICommandHandler and Resharper could provide a list of implementations? Currently all I can do is find all implementations of the IComamndHandler without taking into account the actual generic. So you just get all CommandHandlers (Which in our solution is a lot). It would be great to click on ICommandHandler and go to the concrete implementation.

    Also inbuilt support for detecting whether an implemeantion of interface is being called using DI (like Agent Mulder does) would be handy. Currently Resharper just says the class is not being used.

  18. Nicolas says:

    what about continuous testing? (a-la NCrunch)?
    is it going to be part of R#8?

  19. Oisin G. says:

    TypeScript, TypeScript, TypeScript ;-)

  20. Bryan Migliorisi says:

    As as RubyMine user.. I was reeaalllyyy hoping for better support for CoffeeScript, SASS, LESS, etc in ReSharper

  21. Carlos says:

    A bit sad not to see any ground breaking features as accustomed by your other 7 releases.

  22. webdev says:

    Please support TypeScript.

  23. Dmitri Nesteruk says:

    @all: TypeScript support will be present in ReSharper 8, however it is unlikely that any high-level services will be available for it. Rest assured, we’re working on it, TypeScript is our priority.

  24. Richard says:

    Oh great. We bought R# 7 in February, and now we’ve got to pay again for the upgrade?!

    What happened to giving free upgrades to anyone who purchased a license within six months of a new release?

  25. Barry says:

    Can’t see a reason to upgrade… R#7 meets all my needs. As others say, upgrade costs are prohibitive in this climate. Couldn’t, and wouldn’t want to, program without resharper, but, as I say, can’t see a reason to upgrade.

  26. Domenic says:

    This is not encouraging…TypeScript support will be present in ReSharper 8, however it is unlikely that any high-level services will be available for it…If you brought half of what you do in C# to TypeScript, then you would be an indispensable tool for JavaScript web applications and you would have the first mover advantage. I don’t think you should take your support for TypeScript lightly. I have already started creating a library in TypeScript using the .NET framework as an my guide to give me that same productivity of developing Web Application GUIs as with WinForms minus that nice drag and drop functionality. I am trying to Strongly Type the Web Stack using TypeScript, which means that I and others may write JavaScript code without writing any “strings” in our code. I have confidence that others are working on this as well and those that are will be able to write TypeScript applications that are as impressive, reusable, and maintainable as their C# counterparts. Especially with things like “signalR” which when used with TypeScript Interfaces allow easy parallel team development of the server and client side code all with complete intellisense and error checking. I really believe that TypeScript and whatever succeeds it will be what drives critical adoption of the web as an OS. The technology already exists, WebGL, WebRTC, signalR/WebSockets, etc…

  27. Jeff L. says:

    Don’t worry about how frequent the updates are, the more, the better. You can remain on a prior version if you choose.

    SPEED is the #1 improvement I’d want to see.

  28. JamesN says:

    More of a licensing question, but I’m sure I won’t be the only one to ask.

    I’ve been considering upgrading my version 6 to version 7. I know there is a free upgrade from 6–>7 if you bought 6 after a certain date. Will there be such a program for 7–>8 and if so, what will the cutoff point be?

  29. Eyal Shilony says:

    To be honest I’m pretty disappointed, I’d really want to see improvements to performance, refactoring and to the Cleanup code feature.

    I really hope you’re going to fix this issue in this release http://youtrack.jetbrains.com/issue/RSRP-199079.

  30. Sal DiStefano says:

    Do you have a release date for v8?

  31. Andrii says:

    Ctrl+T combination displays file names first in the list. That is not what I’m expecting. I used to have Types list, so maybe If Types will appear first it will make more sense. Not sure what order for other elements (i.e. methods, properties) should be, but Types should definitely go first.

  32. Filias says:

    Yep, LESS would be nice.

  33. Søren Reinke says:

    When will there be good refactoring for Javascript or even better Typescript?

  34. Urs says:

    What I’m waiting for a long time already, and I hope to finally see it in R# 8: Apply multiple refactorings at once. E.g. Mark a newly written code block which contains fields not yet present, Press Alt+Enter, select “Create all fields”. Currently I have to go to every individual new field, Alt+Enter, and select “Create field XY” individually.

    This would be a reason to fork out money for version 8 (and not a redesigned Ctrl+N which already works perfectly for me).

  35. Brett says:

    Any way to include an html-style report with the commandline tool? The XML report generated does not appear to have any style info.

  36. Alex says:

    Go To Type became much worse. Please allow to switch to the old behavior in options, or make this “search everywhere” an independent “Go To” item.

  37. Eyal Shilony says:

    @Urs yeah me too. :)

  38. Eyal Shilony says:

    I’d love to have the ability to refactor my code, all in a single click, this is very useful in TDD scenarios.

  39. Dmitri Nesteruk says:

    @Søren: ReSharper already has some JS refactorings already, and will have more. As for TypeScript, we’re working on it ;)

    @Brett: I’m afraid right now your best bet is to make an XSLT file. Feel free to put up a request on our bug tracker for us to include a default one.

    @Alex: we’re currently discussing Go To Type internally. It’s possible that there will be a configurable behavior or an alternative shortcut for it.

  40. Jens says:

    @Dmitri Nesteruk

    On the whole typescript thing, I am like… right now… Just adding your collapsible blocks from pure JavaScript would be something that would save my day >.<…

    Anyways, I don’t know what your plans are for TypeScript and how it may or may not interfere with other Plugins, like WebEssentials as an example:

    http://visualstudiogallery.msdn.microsoft.com/6ed4c78f-a23e-49ad-b5fd-369af0c2107f

    The “split view” is sort of a nice feature and at the same time sometimes intolerably in the way.

  41. Robert says:

    As a R# client i’m a bit dubious about the tendancy to want to include css, js, typescript and all that other stuff.

    Up to today it would have been nice to have an early support for things like less, cs, js etc ..but the fact is Microsoft is already well underways to implementing all this natively inside VS (Web Essentials / Web Tools).

    So why waste time duplicating the work instead of focusing on other things ?

    -
    Robert

  42. Robert says:

    I’m also a paid client of Web Workbench ..which out of the above reasons i recently deleted from my pc will not be renewing my license.

  43. Brian says:

    search is fast enough but results are cluttered please make new behavior override goto symbol instead of goto type. Another possibility would be to have a goto function that would return types + filenames for non-class files (again please don’t remove default goto type: make it a new item).

  44. Chris M says:

    The Go-To-Type option is mental, your saving me pressing shift to go to files by making me suffocate in noise. Which ever UX fool came up with that needs to be put back in their box, fine-grained control vs search-all-things

  45. Etienne says:

    As a Front-End dev, CSS improvements are nice but I would not use them because I write my code in SASS.

    So a big +1 to start supporting SASS & Less.

  46. Jens says:

    @Robert

    That is quite simple really… Visual Studio also natively support Refactoring, Code Generation etc… many of the things that ReSharper brings to C#… So why do you use ReSharper at all?…

    Because ReSharper does it thousands times better. Hopefully ReSharper will also do a much better job at all those requested things.

  47. jshea says:

    Coffescript support would be great!!!

  48. jshea says:

    coffeescript support would be great!!!

  49. Martin Andersen says:

    Really like the new ctrl + T.

    But please don’t try to compete with “Web Essentials 2012″ the already got support for Less, Javascript, CoffeScript, TypeScript and everthing I ever need in a css editor.

    What I would like to see is a way to turn off R# for some file types like less, css and Javascript. PLEASE

  50. doug says:

    Would be nice is your brought forward the Unit Test Wizard that was in VS2010 then lost in VS2012, saves having to pay $18k for the ultimate edition for what you had for free in professional edition, which most devs would have, if each dev is licenced. At worst you could use an open source alternative to Fakes.
    One of the biggest complaints against R# is how much it slows down VS, so to be able switch it off for some file types, park it in a different core, or have more async/seprate thread operations or park it on a GPU :).

  51. Zymara says:

    +1 for SASS support, not fond of seeing a whole screen of red squiggly lines in my .scss files… :^(

  52. Chris says:

    +1 for SASS

  53. f0rmat1k says:

    PlZZzzZZZZ add less/sass support

  54. shawn says:

    Another vote for SASS/SCSS support in Resharper! Is there somewhere we can actually vote for it as a feature request?

  55. @shawn (and also @f0rmat1k, @Chris, @Zymara, @Etienne)
    Sure. The feature request that you can vote for is here

  56. Alexey says:

    Coffeescript support would be appreciated.

  57. James says:

    Wow, $89 for the “upgrade” pricing is, uh, pretty steep. Four times higher than before.
    For the first time, I’m considering giving it a miss.

  58. James, C#/VB.NET Edition personal license upgrades (I’m assuming that’s what you’re referring to) have been priced at $89 for at least 6 years.

Leave a Reply

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

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>