Salient Solutions

wrasslin ones and nones for fun and profit - Sky Sanders' Blog
Get your own ranked flair here
posts - 92, comments - 108, trackbacks - 0

Visual Studio 2008 Productivity Tools: CodeRush/Refactor and Resharper finally play nice together

 

UPDATE: I just found this - http://code.google.com/p/dxcorecommunityplugins/wiki/CR_ReSharperCompatibility
Will report when testing completed.

--------------------

 

This is how I configure CodeRush/Refactor Pro and Resharper  to enable peaceful coexistance.

Even as the feature sets of CR/RF and R# are steadily converging it seems to me that each product has a definite and divergent gestalt. 

While evaluation of features is a subjective matter,  having the option to use both tools concurrently, choosing the features that make sense to the individual seems to be a win/win situation.

In the not-so-distant past this has been a proposition that involved much fine tuning and a bit of uncertaintly that left all but the most adventurous little motivation to attempt.

As of this writing, due to improvements in each tool and the installation thereof, the process has been radically simplified, making the notion of trying both tools concurrently much more attractive.

Background:

I was a die-hard CodeRush/Refactor guy until my friend Sam made it clear that he thought R# was the best thing since sliced bread. 

So I gave R# a shot and really liked the feature set. But I still missed CR/RF. Especially the auto-templating features. While there was a good bit of feature overlap, CR/RF and R# each had many distinct tools/refactorings and it seemed to me that running them both would make sense.

And mayhem ensude.....

In the early days, CR/RF acted like R# did not exist, even though it was obviously their targeted competition and upon installation made no effort to resolve conflicts or mitigate overloading of features.

Conflicting key mappings, wildly divergent key mappings, insane barrages of intellisense/code completion pop-ups and double brakets/braces/parenths from both were overwhelming.

To resolve this, I generally disabled the CR/RF features that were duplicated in R#, as the R# equivalents were generally more mature. In other cases where the features were equivalent, it just made more sense to confine customization in one toolset. Some notables are SmartBrackets/Braces/Parenths, IntellAssist and later the newly introduced but weakly implemented CR/RF CodeIssues.

Key mappings were a crapshoot with CR/RF when combined with R#, sometimes behaving, sometimes not. The worst incident was when the ESC key got hijacked by someone (never figured out who, just re-imaged) . But as of this writing, these issues seem to have been ironed out nicely.

This resulted in a sometimes noisy but definitely more producitive coding environment that, to me, was worth the expense.

Current State of Affairs:

During my last repave I pulled the latest versions of tools and was pleasantly suprised after installing them.

It seems that CR/RF, when installed after R#, performs some configuration that is more aware of the ambient environment, eliminating the code completion/intelliassist nightmare.

CR/RF CodeIssue feature seems to be coming along well and even maps to the same keys as R#. I plan to give it a more thorough test but for now am quite accustomed to R# so it gets disabled. But I am getting ahead of myself.

Installation:

To provide a controlled and predictable installation when installing multiple VS productivity tools with overlapping functionality, I find it wise to install one, start VS and let the newly installed tool perform it's initialization before closing VS to install the other.

Listed below is my current installation order and the first steps taken to get the tools to play nicely with each other. 

  • Resharper 4.5.1288.2
    •  Specify VS key mappings upon install.
  • CodeRush/Refactor 9.3.4
    • On first start, leave the default 'new user' qualification.
      This makes disabling individual features easier using the CR/RF pop-up confirmation dialogs which tell you what it just did and what, if any, existing feature it supressed and provides the option to choose which action to perform next time.
    • In a code file, type an open paren (notice double close) and disable SmartParenthesis is the CR popup.
    • In a code file, type an open bracket, disable SmartBrackets.
    • DevExpress>Options>Code Analysis>Code Issues> uncheck 'enabled'
      This 'me too' feature seems to be getting better, uses the same keys as R# and the right side map is pretty featured, but I am not ready to spend time checking it out fully, I have code to write;-)
    • DevExpress>Options>Intellasist>Setup> uncheck 'enabled'
      Alone, this is a great feature, but it and the R# dropdown do not play well together. I prefer the R# dropdown.

 

The code editor does get a bit colorful in a test fixture, but hey, if it bothers you you can always pick and choose via options for either tool.

So far, that's it!  Much simpler process than just one year ago.

I am sure as time goes by, more subtle issues will arise that need adressing and I will update this post to reflect these, but for a pain free starting point this should get you started.

 

Feedback is welcome, especially regarding any conflicts, issues and resolutions that you may encounter while running CR/RF and R# together.

 


Technorati tags:

Print | posted on Monday, March 22, 2010 4:20 AM |

Feedback

No comments posted yet.

Post Comment

Title  
Name  
Email
Url
Comment   
Please add 2 and 2 and type the answer here:

Powered by: