Please stop stealing OutputDebugString output / uninstall problems

For those of us who develop, maintain and debug VS add-ins of our own, we have to uninstall Resharper every time we need to debug an issue, because Resharper is swallowing all the debug/trace output. This makes it impossible to use tools like DebugView to investigate an issue.

Please, please, change this behaviour (in a perfect world on your existing release branches for VS2003 and 2.5 for VS2005 since we dont all have keys for 3.0). This is unbelievably annoying. Not the least of which because your uninstallers for both are broken and leave VS is in an almost unusable state.

What problems?
- In 2.0.3 at least, if you had it set to use Resharper intellisense then uninstall, you get no intellisense whatsoever in VS afterwards.
- Keyboard mappings all get completely screwed up - things like control+right arrow no longer work or in some cases I have found crash the IDE (such as pressing /). Attempting to reset my keyboard settings back to a VS default profile did not fix this.

Thanks,
Grant.

2 comments
Comment actions Permalink

Hello,

I don't believe we can steal OutputDebugString output at all, that requires
attaching a debugger to the process which we wouldn't do.

As for Trace.Write*, there once used to be some code that removed the OutputDebugString
listener (in 2.0, I believe), but I've suppressed it in order to view the
debug traces. I will check the code to ensure we don't interfere with traces
in the further 3.0 EAP releases.

As for the already-released versions, provided that R# actually suppresses
the Trace output, I could recommend the following workarounds:
• (the simplest but the least comfortable) Use ::OutputDebugString() for
debug output, directly from WinAPI.
• Disable the R# addin temporarily (instead of uninstalling). Note that due
to a Visual Studio bug you'll have to switch it on/off in the Registry, while
the “Add-in Manager” window wouldn't persist the setting (we've worked around
this in the 3.0 version).
• Debug the add-in in a separate Visual Studio hive that has no R# installed.
• Restore the OutputDebugString trace writer into the standard Trace listeners
collection.


Serge Baltic
Omea & R# Developer
JetBrains, Inc — http://www.jetbrains.com
“Develop with pleasure!”


0
Comment actions Permalink

Hi, I just tracked down the same problem after a long research.

1. In my experimental hive I run my Visual Studio Package. All Trace.WriteLine() = OutputDebugString messages disappear when Resharper is active. When I unload the addin they are back again. This is bad.

2. Even more serious is that I track the Shift/Ctrl/Alt Key within my package via System.Windows.Input.Keyboard.IsKeyDown(). When Resharper is loaded, this function does not work anymore. When I unload it, it works again.

I use Resharper 4.1, builr 4.1.993.3.

Serge, your workaround is not doable because of the second issue. The modifier keys just do not work anymore in my package when the customer uses Resharper. I have no idea if and how these 2 issues are related, I just tried to track down my problem 2 by inserting Traces and found out that they stopped working either. And in the end I found that both issues are Resharper related.

cheers
thomas

0

Please sign in to leave a comment.