I often run into the situation where I want to disable some code while debugging without actually changing the code.
What I end up doing is having a break-point (usually conditional) and then when the break-point fires I perform a Set Next Statement. This can be very labor intensive when the code is reached many times so I created a macro:
Sub Skip3Lines()
DTE.ActiveDocument.Selection.LineDown(False, 3)
DTE.Debugger.SetNextStatement()
End Sub
I then changed my break-point to be a hit-point (right-click -> When Hit...
) and told it to execute this macro.
Visual studio was all too happy to spit out the following dialog box:
---------------------------
Error
---------------------------
A macro called a debugger action which is not allowed while responding to an event or while being run because a breakpoint was hit.
---------------------------
OK
---------------------------
Does anyone know how to get around this?
You may be able to detect whether it's in debug mode, then use an if statement to have code not run, here's more information
http://weblogs.asp.net/jkey/archive/2003/11/23/39383.aspx
It doesn't get around the changing code bit, but how about a local boolean? Wrap the code you want to conditionally skip with an if statement. Default it to true and re-initialize it every time. Then, assuming you can write a macro that changes this value to false, you can enable/disable the hit-point on demand.
Never done this before, so you can tell me if macros don't work like this. I usually just use edit-and-continue, commenting out the code I want to skip. Of course it doesn't work if the code has a lambda or anonymous type/method in it though.
DTE.ExecuteCommand("Debug.SetNextStatement")
Could you not use compiler condtitions in this instance?