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 coexistence.
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 uncertainty 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.
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 ensued.....
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 brackets/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 productive 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 surprised 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.
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 its 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 suppressed 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 in 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>Intellassist>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 addressing 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.
- 03/24/10 - Added Disable CR/RF Intellassist
Technorati tags: Visual Studio