As I am moving from add-ins to packages, I always like to learn how to do things using native services of Visual Studio instead of using the automation model (EnvDTE). There is an area of Visual Studio extensibility, the debugger, that is very powerful but normally extensions don’t have to use, except maybe to know which mode (design-time, debug-time, run-time) the IDE is, and when the mode changes, because maybe some commands or features should be enabled/disabled based on the IDE mode.
Eight years ago I wrote how to do that using the automation model in this article:
HOWTO: Guessing the IDE mode (design, debug or run-time) from a Visual Studio add-in or macro
Today I have written a small equivalent article doing the same using the IVsDebugger native service:
HOWTO: Guessing the IDE mode (design, debug or run-time) from a Visual Studio package