29 July 2008

What's Next? -- Life After Release

We released ReSharper 4 in June and I didn't post since then. First, I was on vacation and it was great. Then, our team left the city to spend 4 full days discussing ReSharper future, inventing new features, building plans and coordinating efforts. Awesome experience, I must say. After that, we focused on preparing maintenance release 4.0.1 which will be out as soon as we verify it against recently released Visual Studio 2008 SP1. Now we are starting to work towards 4.5 release, which is tentatively planned to be released by the end of the year, or may be at the beginning of year 2009. So, what are we going to do?

Please note, that it is preliminary plan only and is subject to change at any time.

1. More performance
2. Less memory usage

Yes, we are going to spend about four months tackling performance and memory issues, optimizing various parts of our product and improving architecture to prepare for the next major step forward.

In addition to the overall product quality improvement, we are going to improve some existing features, based on your feedback, and add some new.

3. New refactorings are being developed, which will allow you to perform more intelligent solution-wide code transformation. We didn't finalize the list yet, but most likely they will be from "Inline" family.

4. Enhanced setup for naming conventions which will be supported by all ReSharper features. We are not going to implement all functionality of the AgentSmith plugin, but we want to stop naming issues experienced by some of ReSharper users once and for all.

5. Visual Build - new feature to display build process inside Visual Studio in a better way. Think "Unit Test Session" style, but for building your solution. This feature will also lay the foundation for future features, like optimizing build procedure.

6. Visual Basic 9 support. Our cross-language refactorings and editing experience enhancements will fully support VB9 constructs, like anonymous functions and XML literals.

As usual, once we perform all potentially dangerous changes to our code base and stabilize the build, we will start publishing nightly builds for your Early Access Pleasure.

PS: If you didn't express your opinion about ReSharper 4 on Visual Studio Gallery, you can let other people know what do you think via rating and review functionality recently added to this site.


Libor said...

great news :), please, could you post more often so people know what is going on behind the scene (new features, improvements, hints and so on)

Anonymous said...

Can you add some code-formatting to it so that on checkout of a file it "formats" the code to my liking? So for example Joe likes to to put braces on different lines, whereas I like them on the same line. Irrelevant of how it is in the repo, on check-out it reformats to one's own settings.

Obviously formatting shouldn't make the file as modified :)

While you're at it, can you also make it make coffee?

Ilya Ryzhenkov said...

Libor, I usually post more often, but this summer is a bit tough and I didn't have enough time and right mood to post. Just finished another post, will publish tomorrow :)

Anonymous, "virtual formatting" is not possible in Visual Studio, at least not in this version of VS.

Anonymous said...

I would very much like a release focused on asp.net

ripper234 said...
This comment has been removed by the author.
ripper234 said...

Maybe this one is for Resharper 5,6 or 10, but I would like "automatic duplicates removal" sometime.

That's a huge feature to ask for, but the Duplicates Build Teamcity has looks like a great start. If beyond identifying duplicates, you could provide the user an option to automagically refactor it, that would really save some time. Currently I'm working with the Duplicates Build in our project, removing one duplication every day. I love seeing the Dup Count graph decreasing slowly :)

Nick said...

I think you should introduce StyleCop formatting conventions and rules

Anonymous said...

It'd be rather useful to reformat lambda extension method calls on IEnumerable(of T)'s into query expressions and vice versa.

shapovalov said...

I am using Resharper for NUnit test,
but after I click on the "Run selected test" button, Visual studio doesn't build project and doesn't copy dlls in to unit test folder.
So befor starting my tests I need to build my project and my test project (i have different project for tests).
It takes time, and somtimes I forgetting about building.
Visual studio build tests before starting tests function, and have no this problem.
So can you please build project and test project before starting Unit tests, or at least have this option as a checkbox in the settings of the Resharper.


Tim Yen said...

1. More performance
2. Less memory usage

This gets my vote. I turn things off to try to improve performance.

Even if there was a"Lite" button that selected a bunch of the settings to turn off so it ran faster.

professor said...

I'd suppose to put most of attentions on
1. More performance
2. Less memory usage
put in background - memory is cheap now, and generally it is no problem to add one more memory card, while it's not so easy to upgrade processor.

Ilya Ryzhenkov said...

shapovalov, please contact support@jetbrains.com, it should build obviously.

Ilya Ryzhenkov said...


Indeed, "generally it is no problem to add one more memory card", but it is impossible to add more gigs to virtual address space, which is limited to 2Gb (or 3Gb if you have /3G switch) even on x64 since VS is 32bit process. And that is where the problem comes from.

Betty said...

I would love to be able to put a upper memory limit on resharper in the case where you can't remove all memory issues. Having my VS.NET using 700MB+ RAM on a machine with only 2 can be painful (admittedly that's on a big project/sitefinity project).

Either that or the ability to turn on individual features easily per project, so projects that I know have problems I can turn off the autocompelte (or whatever takes up the ram).

Out of interest what does eat the ram?

Anonymous said...

5. Visual Build - new feature to display build process inside Visual Studio in a better way. Think "Unit Test Session" style, but for building your solution. This feature will also lay the foundation for future features, like optimizing build procedure.

Can you elaborate on this? Are you talking about nant/msbuild scripts integration in VS?

Ilya Ryzhenkov said...

Betty, check my reply to professor.

Anonymous, "Visual Build" (not final name for the feature) for now will be just pretty look for VS build system. But we have other plans, not to be disclosed that early.

Anonymous said...

I'm a big fan, but it seems you forgot the most important point in your feature list:

0. We will support new C# language features very soon after MS makes them available.
We will not let you down again, even if it means that we have to abandon the useless VB support :).

Pretty, pretty please?

Anonymous said...

Will R# ever have syntax checking for vb.net?
I am a .NET contractor and I don't take vb.net work just because I can't use R# fully!

Joe White said...

Will R# 4.0.1 address any of the crashes in R# 4.0?

It'd be nice to be able to add a new file to the project, and not have to worry about ReSharper crashing the moment I try to do a quick-fix or use Code Completion in that file.

Ilya Ryzhenkov said...

Joe, this problem is already fixed.

Dmitry said...

Performance and memory improvements sound great.

Also, can you not hide/intercept the "Go to Definition" menu that displays compiled assembly classes as metadata. That is the most annoying thing about Resharper.

Chad said...

i'd say forget about the VB support

delvinj said...

Great news definitely. It is good to see that performance will be the main concern for 4.5. ReSharper rules :-)

Roger Lipscombe said...

C++ support? ;-)

(I don't mean refactoring -- lots of other products do that -- I mean highlighting errors, and allowing quick fixes, etc.)

In particular, refactoring legacy C/C++ would be so much easier if stuff was shown in grey if it wasn't used. Also: finding globals and either turning them into class members (even static) or into parameters.

Joe White said...

Ilya, when you say the problem is already fixed, I assume you mean it's fixed in your code base, but not yet released, right?

I've got the latest release of ReSharper 4.0, and in that version, this bug is most definitely not fixed yet.

If it will be fixed in 4.0.1, do you have any idea when that will be released? I'm looking forward to ReSharper being usable again.

Ilya Ryzhenkov said...

Joe, you can try recent nightly builds, which are almost ready to be released (we are verifying against SP1). See http://www.jetbrains.net/confluence/display/ReSharper/ReSharper+4.0+Nightly+Builds

John said...

Any chance of having Silverlight support?

Since Silverlight is a subset of WPF and they both use Xaml I am hoping this support is already built in. But if it isn't it would be great to have it.

Pavan Podila said...

I would love to see some refactorings for XAML. Some possible ones could be:

1. Group controls into a container (Grid, Canvas)
2. Automatic name suggestions for controls
3. Creating template xaml for LinearGradientBrush, RadialGradientBrush, ControlTemplate, DataTemplate, Style, etc.
4. Refactoring resources in ResourceDictionaries. Moving resources into a separate dictionary, etc.

I have been working with WPF/XAML for almost 3 years and using ReSharper all along. If I can contribute in any way, please let me know.

Sergey Coox said...


thaks for your feedback. Here are some answers below

1. Does "surround with tag" do what is desired? If not, can you explain in details?

2. Are you talking about name completion in Name or x:Name attribute? The feature is implemented in 4.1.

3. Do you mean live templates? If yes, why don't you create custom ones?

4. I've file a request for moving resources to a separate file http://www.jetbrains.net/jira/browse/RSRP-79135
What other refactorings would you like to have?

It would be nice if you create feature requests in our issue tracker at http://www.jetbrains.net/jira

PeterB said...

Hi Ilya,

I would really love to have some improvements in the code cleanup functionality. It is very usefull but it still needs a lot of manual effort to cleanup a complete solution or even a project. With a few improvements this shouldn't be necessary anymore.

1) Please add the possibility to exclude files, folders and generated code regions (like it is currently present in the "code inspection" settings)
Description: "Limit scope of Format Code"
Open since: 5-Aug-2006
Key: RSRP-9997

2) If possible please also fix the bug described in these two issues:
a) Description: "The code format option "Continuous line indent multiplier" keeps adding additional indentation to each subsequent line."
Open since: 11-Aug-2006
Key: RSRP-27892
b) Description: "Indentation of many-line statements"
Open since: 7-Dec-2006
Key: RSRP-33135

It would be nice if this could be done in the next version.

Thank you

Anonymous said...

I would love to see the ability to split a single dll into multiple dlls with some refactorings designed with that in mind. Something along the lines of Move Namespace to New Assembly, with some constraints on things like dependencies and access.

Aleks said...

Are you planning on adding suport to popular open source frameworks? Like Sping.Net and NHibernate?

Ilya Ryzhenkov said...

Aleks, did you check ReSharper plugins page?

Howard said...

I am enjoying the new version of resharper. There are three things that I would love to see:

1. Generate NUnit tests
2. C++ /CLI support
3. Native C++ support (I know, not realistic).

Anonymous said...

It would be great if Fonts and Colors offered up the choice of outlining text for all Display Items, as is the choice with a precious few.

Also, I cannot figure out why local variable and parameters that are not used are not flagged as such. It does this for local constants, and this is great!

I would want to outline the text of unused constants, local variables and parameters.

Thanks for a great product!

t said...

Performance and stability gets my vote.

- After a few days, Visual Studio will fail to compile due to out of memory errors. I suspect ReSharper.
- Some times VS becomes unresponsive and gets a white haze. It takes a minute or two before it responds again. Is that VS being bad or ReSharper analyzing the code?

Greg said...

I'd love to see a "remove a surrounding block" feature. I "surround with" all the time. However as a lead dev, I review and often clean up code. This frequently means removing extraneous IF, TRY/CATCH and other surrounding blocks. Thanks.


gOODiDEA said...

Resharper throw the LoggerException continuously when I open my Solution, bore me again and again!!!

Could you let me know which file is error?

thank you
JetBrains.Util.LoggerException: Unknown comment: //ָ��Ŀǰ����ҳΪ��ϸ����ҳ
2F2F ---> System.InvalidOperationException: Unknown comment: //ָ��Ŀǰ����ҳΪ��ϸ����ҳ
at JetBrains.ReSharper.Psi.CSharp.Impl.CSharpLanguageServiceImpl.GetTokenContentsText(ILexer lexer) in c:\Agent\work\3f4db6fd459dabcd\src\Psi.CSharp\src\Impl\CSharpLanguageServiceImpl.cs:line 241
at JetBrains.ReSharper.TodoExplorer.TodoManager.ProcessProjectFile(IProjectFile projectFile) in c:\Agent\work\3f4db6fd459dabcd\src\TodoExplorer\src\TodoManager.cs:line 481
at JetBrains.ReSharper.TodoExplorer.TodoManager.RescanDirtyFiles(CheckForInterrupt checkForInterrupt) in c:\Agent\work\3f4db6fd459dabcd\src\TodoExplorer\src\TodoManager.cs:line 355
at JetBrains.ReSharper.TodoExplorer.TodoManager.BackgroundUpdate.Work(CheckForInterrupt interrupt) in c:\Agent\work\3f4db6fd459dabcd\src\TodoExplorer\src\TodoManager.cs:line 760
at JetBrains.Application.InterruptableReadActivity.DoWork() in c:\Agent\work\3f4db6fd459dabcd\Platform\src\Shell\src\InterruptableReadActivity.cs:line 190
at JetBrains.Application.InterruptableReadActivity.WorkerThreadProc() in c:\Agent\work\3f4db6fd459dabcd\Platform\src\Shell\src\InterruptableReadActivity.cs:line 94
--- End of inner exception stack trace ---

at JetBrains.Util.Logger.LogException(Exception) in c:\Agent\work\3f4db6fd459dabcd\Platform\src\Util\src\Logger\Logger.cs:line 441 column 5
at JetBrains.Application.InterruptableReadActivity.WorkerThreadProc() in c:\Agent\work\3f4db6fd459dabcd\Platform\src\Shell\src\InterruptableReadActivity.cs:line 127 column 5
at System.Threading.ThreadHelper.ThreadStart_Context(Object)
at System.Threading.ExecutionContext.Run(ExecutionContext, ContextCallback, Object)
at System.Threading.ThreadHelper.ThreadStart()

Anonymous said...

Ability to choose StyleCop formatting so refactors do not break StyleCop and so easy changes can be fixed automatically (spacing).

Anonymous said...

What I would really like is if you would add a template engine as mighty as that of CodeRush - CodeRush's implementation is far superior than the Live Templates. Sorry to say this, but if CodeRush would support background compilation and display errors on the side, I would switch to it

mfg Steven

Anonymous said...

I also want to see more code shortcuts in Resharper like there is in Coderush. I really like the way I can speed up my daily coding with some common shortcuts.

Anonymous said...

I would like to see performance improvements as today it is sometimes very slow when you press the "." after an object.

sometiemes it takes a second! and by then I have almost typed the entire method that I want to add after the ".".