我正在开发一个扩展(VSPackage),我正在VSPackage.cs的构造函数中订阅2个Debugger事件。

public sealed class ComboBoxPackage : Package
{
....
 public ComboBoxPackage()
        {
            Trace.WriteLine(string.Format(CultureInfo.CurrentCulture, "Entering constructor for: {0}", this.ToString()));
            _dte = (DTE)Package.GetGlobalService(typeof(DTE));
            _events = _dte.Events;
            _debuggerEvents = _events.DebuggerEvents;

            _debuggerEvents.OnEnterRunMode += _debugEvents_OnEnterRunMode;
            _debuggerEvents.OnContextChanged +=_debuggerEvents_OnContextChanged;
        }

        void _debuggerEvents_OnContextChanged(EnvDTE.Process NewProcess, Program NewProgram, Thread NewThread, EnvDTE.StackFrame NewStackFrame)
        {
            throw new NotImplementedException();
        }


        private void _debugEvents_OnEnterRunMode(dbgEventReason Reason)
        {
            return;
        }

}


当我运行它(尝试运行应用程序)时,仅_debuggerEvents_OnContextChanged被调用,而_debugEvents_OnEnterRunMode不被调用。

如果我对Addin项目执行相同操作,则一切正常。

最佳答案

我希望还不晚...
您是否直接从代码中保留对DebuggerEvents的引用并从那里处理事件。

这件事对我来说也是一样,我就这样解决了。

08-04 06:04