Visual studio 2012 OneInterBreakMode不启动
跑步VS 2012。我创建了一个外接程序。我想处理OneInterBreakMode事件。调用Exec方法。我尝试返回handled=true/false。处理程序永远不会被调用。我尝试了一些DTE和DTE2的变体。我进入工具菜单>点击“MyAddIn1”,调用Exec方法。我验证了事件是否已绑定。我不知道外接程序的生命周期是如何工作的Visual studio 2012 OneInterBreakMode不启动,visual-studio-2012,visual-studio-addins,envdte,Visual Studio 2012,Visual Studio Addins,Envdte,跑步VS 2012。我创建了一个外接程序。我想处理OneInterBreakMode事件。调用Exec方法。我尝试返回handled=true/false。处理程序永远不会被调用。我尝试了一些DTE和DTE2的变体。我进入工具菜单>点击“MyAddIn1”,调用Exec方法。我验证了事件是否已绑定。我不知道外接程序的生命周期是如何工作的 StartEvents不是覆盖,也没有连接到任何东西。我觉得很奇怪 public void Exec(string commandName, vsCommand
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
设置为成员变量,那么它应该可以正常工作