visual-studio-2012 - OnEnterBreakMode 不会触发

标签 visual-studio-2012 visual-studio-addins envdte

运行 VS 2012。我创建了一个加载项。我想处理 OnEnterBreakMode 事件。调用 Exec 方法。我尝试返回handled = true/false。处理程序永远不会被调用。我尝试了 DTE 和 DTE2 的一些变体。我转到“工具”菜单 > 单击“MyAddIn1”,然后调用 Exec 方法。我验证了该事件已绑定(bind)。我不知道加载项的生命周期是如何工作的。

StartEvents 不是覆盖,它没有连接到任何东西。我觉得很奇怪...

public void Exec(string commandName, vsCommandExecOption executeOption, ref object varIn, ref object varOut, ref bool handled)
        {
            handled = false;
            if(executeOption == vsCommandExecOption.vsCommandExecOptionDoDefault)
            {
                if(commandName == "MyAddin1.Connect.MyAddin1")
                {
                    //handled = true;

                    // Place the following code in the Exec method of the add-in:                           
                    EnvDTE.DebuggerEvents debugEvents = _applicationObject.Events.DebuggerEvents;
                    debugEvents.OnEnterBreakMode += new _dispDebuggerEvents_OnEnterBreakModeEventHandler(Connect.BreakHandler);

                    return;
                }
            }
        }
        private DTE _applicationObject;
        private AddIn _addInInstance;

        // Place the following Event handler code in the add-in:
        // Needed to activate event handlers in Connect.Exec.
        public static void StartEvents(DTE dte)
        {
            Console.WriteLine("Events are attached.");
        }

        // OnEnterBreakMode Event.
        public static void BreakHandler(dbgEventReason reason, ref dbgExecutionAction execAction)
        {
            Console.WriteLine("Debugger enters break mode. " + "Reason: " + reason.ToString());
        }

最佳答案

如果您为事件创建局部变量并订阅它,那么该变量将在离开作用域后被 GC 释放,并且您的事件处理程序将不会触发。

如果您将 debugEvents 设置为成员变量,那么它应该可以正常工作。

关于visual-studio-2012 - OnEnterBreakMode 不会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21884621/

相关文章:

c# - 无法连接到远程 SQL Server Express Edition

visual-studio - 是否有Visual Studio所有命令的 list ?

c# - Visual Studio 加载项 - 将上下文菜单项添加到解决方案资源管理器

c# - 创建 'Custom Designer' Visual Studio 2010 加载项

c# - 如何在 VS 宏中检索标识符的完全限定名称?

c# - 获取 C# 方法体内使用的类型

ios - TableView 在 iOS 设备上不工作

c++ - 如何从 .NET 生成独立的控制台应用程序

visual-studio-extensions - 当文档中的插入符号位置发生变化时会触发事件?

c# - 以编程方式将现有项目添加到新的 VS2012 解决方案失败