如何确定EnvDTE.Events.DebuggerEvents处理程序中的调试程序/进程?

问题描述

我正在创建一个Visual Studio Extension,该Visual Studio Extension在停止调试特定应用程序时执行一些任务。这是我用于处理调试器事件的代码:

    ...
    DTE2 ide = Microsoft.VisualStudio.Shell.ServiceProvider.GlobalProvider.GetService(typeof(DTE)) as DTE2;
    if (ide != null)
    {
        debuggerEvents = ide.Events.DebuggerEvents;
        debuggerEvents.OnEnterDesignMode += DebuggerEvents_OnEnterDesignMode;
    }
}

private static void DebuggerEvents_OnEnterDesignMode(dbgEventReason Reason)
{
    ThreadHelper.ThrowIfNotOnUIThread();

    DTE2 ide = Microsoft.VisualStudio.Shell.ServiceProvider.GlobalProvider.GetService(typeof(DTE)) as DTE2;
    if (ide != null && ide.Debugger.CurrentProcess != null)
    {
        DebuggedProcName = ide.Debugger.CurrentProcess.Name;
    }

    if (Reason == dbgEventReason.dbgEventReasonStopDebugging &&
        DebuggedProcName == "MyApp")
    {
        ...
    }
}

问题是OnEnterDesignMode()中的ide.Debugger.CurrentProcess和.CurrentProgram为空。它们在OnEnterBreakMode()中不为null,但可能不会被调用。如何确定Visual Studio扩展中当前调试的程序/进程?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)