As readers of my blog are likely aware, I am a big fan of the CodeRush and Refactor Pro! products from Developer Express. I know that Resharper (for whatever reasons) has much of the mindshare in the rest of the ALT.NET community, but for a variety of reasons I tend to prefer the Developer Express tools over Resharper’s user experience (and capabilities).
In past posts here and here, I have written both about the variety of tools (based on the DXCore foundation) that are available to complement the CR/R! combo as well as about the recently-announced (at PDC this year) CodeRush Xpress product for C# developers in VisualStudio 2008 (BTW, if you are not already a user of CR/R! or R# and you code in C#, you really owe it to yourself to go download the free CodeRush Xpress product — its by far and away worth the time and since its free, you know its worth the money ).
DXCore DLL Hell
For better or for worse, just about every time that Developer Express releases an update to their products along comes a new version of their underlying VisualStudio API abstraction engine, DXCore, atop which these other products are based. And this latest release (3.2.2) of CodeRush, RefactorPro!, and CodeRush Xpress is no different.
Just as Developer Express has released the 3.2.2 versions of these products, an updated version of DXCore (also 3.2.2) has been released. I applaud Developer Express for keeping the versions of all of their VS-enhancement products coordinated (e.g., versions of all products remain in-sync and so all are rev-ed to 3.2.2 now), but one of the mildly annoying side-effects of this change to the underlying DXCore versioning is that DXCore plugins written by others but compiled against a specific DXCore release version tend to cease working once a new DXCore release has been installed on your computer. And since DXCore updates are actually included (and mandatory!) when you update any one of the other Developer Express Visual Studio extensibility tools, updating any of those products will (tend to) inherently break many other existing plugins.
Open-Source means I can fix this myself
In a closed-source world, this would mean that I might have to wait until the developer of these other plugins gets around to recompiling their code against a the new DXCore release, but fortunately many of these plugins are open-source with available source-code. And so anyone can download the source, fix up the references to the proper DXCore assemblies, and recompile the plugins for themselves.
I know from experience that even though I have pretty well documented this sequence of steps needed for anyone interested, in the case of one of my favorite DXCore plugins, CR_ClassCleaner, I have in the past rec’d feedback from many that they have had issues with trying to update the references and rebuild the assemblies for themselves.
So my contribution to the world today is two freshly-compiled binaries in a single ZIP file that anyone can download today and use in conjunction with any of the Developer Express 3.2.2 version products (including just DXCore):
- CR_ClassCleaner (allows the reorganization of class members per a pre-assigned order, with or without region tags)
- CR_Documentor (allows the previewing of XML Code Comments from within the IDE without requiring a help compiler be applied to the XML first)
Since these are so small, they are both in a single ZIP file for anyone to download and copy into their DXCore plugins folder:
http://unhandled-exceptions.com/downloads/CR_ClassCleaner_Documentor_DXCore3.2.2.zip
BTW, if you are a user of any of the Developer Express tools mentioned above (CR, R!, CRX, or DXCore) I would strongly recommend you upgrade your copies to the latest 3.2.2 release; hopefully this provided download will help to eliminate anyone’s reticence to update themselves to the latest versions.
Happy coding~!
Oh, and it goes without saying that I am explicitly disavowing any responsibility for these DLLs; if you don’t find you like them, then go download the source, update the DXCore assembly references, and recompile them for yourself.
So there.
Hi Steve,
Thanks for patching these plugins – ClassCleaner is indispensable 🙂
@Simon:
Glad to help. BTW, I love the title for your blog (WOMBAT).
[…] Steve writes about new builds of CR_ClassCleaner and CR Documentor […]
Odd that you’re running into plugins not working – I’ve upgraded my DXCore/CR/R! without having to upgrade any third-party plugins and have had no troubles. Only time I’ve seen problems seem to arise is when the new version of DXCore changes the internal API.
@Travis:
Here’s the issue that I have encountered just about every time I update my DXCore installation (specifically in re: the pair of plugins that I’m discussing here):
ClassCleaner:
The commands fail to show in the DevExpress Tools–>Options dialog (e.g., OrganizeWithRegions, OrganzizeWithoutRegions) and if there were bound to keystrokes before the update of DXcore, these keystrokes stop invoking the Organzie… method(s). Interestingly, even when this DOES happen, the config page for ClassCleaner (where one would change the order of the class’ contents) typically DOES still appear in the options dialog.
Documenter:
The Documentor window disappears from the DevExpress — Windows menu fly-out and there is thus no real way to invoke the plugin.
Removing the reference to the prior DXCore version (e.g., 3.2.1) and reattaching the reference to the new DXCore version (e.g., 3.2.2) and recompiling both of these projects solves the issue for me every time.
I’d LOVE to not have to do this (as my post mentions, its a nuisance to have to deal with this every time) so if there is something that you are doing (somehow) that precludes the need to do this on your end, I’d absolutely LOVE to know what it is 😀
Thoughts?
BTW, I LOVE CR_Documentor; keep up the great work~!
[…] background on this post (and why its needed), go read my prior post CR_ClassCleaner (and CR_Documentor) builds updated for DXCore 3.2.2, but suffice it to say that DevExpress has updated its DXCore runtime (and the corresponding […]
Thanks for patching these plugins – ClassCleaner is indispensable 🙂